跳到主要内容
版本:Current

代码架构

请求路径​

招新写操作应走 recruitment/services.py,避免在 view 里直接改状态并漏掉邮件或 ActivityLog。

关键大文件​

文件职责
recruitment/services.py状态机、志愿、面试预约、interest window(体积最大)
recruitment/views.py三角色招新页面
mailing/registry.py业务事件 → 邮件
accounts/utils.pyRBAC 判定
files/services.py + files/permissions.py上传与下载鉴权
core/templatetags/ui_components.py{% button %} / {% form_field %}

异步模型​

没有 Celery。两处用线程:

  1. 邮件:mailing/async_notify.py — on_commit 后 daemon 线程
  2. Zoom:recruitment/zoom.py — 默认后台建会(ZOOM_CREATE_INLINE=false)

进程重启会丢掉未跑完的线程任务。需要可靠队列时再引入 broker;当前文档不假装已有。