Skip to content

Django 后端技术文档

本文面向人类开发者和 AI Agent。代码、测试和 OpenAPI 是事实来源;本文补充代码难以表达的设计意图、跨模块约束、修改入口和风险边界。

阅读方式

  • 字段、端点、请求体和响应体以 Django 后端 API、serializer、view 和测试为准。
  • 设计动机、跨模块影响和历史约束记录在本文和各模块页。
  • 单个 view 只能说明局部行为,不能单独代表系统规则。
  • 文档与代码不一致时,代码优先;随后修正文档。

核心决策

  • current_role 是运行时上下文,不落库。权限判断基于当前活跃角色,并校验该角色属于 user.roles
  • CourseOccurrence 是课时事实来源。教室日程、空闲教室、班牌课表、借用冲突和签到都应围绕它建立。
  • 借用审批按 activity_type 路由。学生类活动初审给 counselor,教学类活动初审给 secretary,二审给 assistant
  • 异步导入状态落在 PostgreSQL 的 TaskRecord。旧的 Redis task_owner:* 方案已废弃。
  • 班牌设备使用独立设备令牌,不使用用户 JWT;设备令牌和激活码只存哈希。
  • 上传端点当前直接写 LOCAL_UPLOAD_DIRservices/file_storage.py 是未接入的抽象;改上传语义前先决定是否迁移存储路径。
  • NumPy 锁定在 numpy==1.26.4 是服务器 CPU 基线兼容约束,不是普通依赖偏好。

主要角色

角色标识符是权限判断的稳定接口。展示名称可以调整,标识符属于跨模块协议。

标识符含义
superadmin全局管理员,拥有最终审批和系统配置权限
secretary教学活动初审、课程导入、教室和用户维护
assistant借用二审、报修处理、签到管理
counselor学生活动初审、部分报修处理
chinese_teacher / foreign_teacher教师侧课程、借用和签到
student学生侧课表、签到、借用、报修和举报

修改入口

目标首先阅读
认证、角色、登录、多端令牌账户与认证
课表导入、课程实例、季节作息课程与课时
教室日程、空闲教室、教室导入教室管理
借用审批、冲突检测、改期教室借用
签到会话、名册、学生视图课堂签到
班牌激活、设备认证、设备课表班牌设备
听课模板与观察记录听课观察
报修工单报修工单
违规举报违规举报
操作日志操作日志
上传、系统配置、任务状态公共与共享服务
Python/NumPy 版本约束NumPy 与 Python 兼容策略

事实来源

类型事实来源
API 路径和 schemabackend/classroom_manager/urls.py、OpenAPI
数据结构各 app 的 models/ 与 migrations
请求校验serializers、service 层、测试
权限规则permission 类、view 中的 role 判断、测试
异步任务tasks.pycommon.models_task.TaskRecord
部署约束Dockerfile、Compose、运维文档

文档维护

  • 手写文档不复制完整字段表、接口参数表或响应示例;这些内容由代码和 OpenAPI 生成。
  • 模块文档解释设计取舍、稳定约束、风险和已知技术债。
  • 新增跨模块依赖时,同步更新 架构概览
  • 新增长期兼容约束时,记录原因、风险和解除条件。