基于 Django 构建学生体育锻炼统计系统,用于:
- 记录学生通过 组织活动 与 自行训练 获得的锻炼次数
- 按 学期 汇总,并应用奖励与上限规则
- 支持多角色审核、复核、确认
- 提供完整可追溯的明细数据与导出能力
所有参与系统操作的主体,均必须是 Django User
包括但不限于:
- 学生
- 老师
- 组织管理员
- 组织指导老师
- 临时志愿者
- 外部志愿者
- 行政人员
| 角色 | 职责 |
|---|
| 学生 | 加入组织、参加活动签到、提交自行训练 |
| 组织指导老师 | 指派 / 解除 组织管理员 |
| 组织管理员 | 管理组织、活动、审核自行训练、补签 |
| 临时志愿者 | 仅在活动级别生效,执行签到扫描 |
| 体育课教师 | 对体育课班级学生进行课程级别最终复核 |
| 行政学院教务秘书 | 查看学院学生统计 |
| 行政班级班主任 | 查看班级学生统计 |
| 超级管理员 | 系统配置、学期、基础数据 |
字段:
- 学号(唯一)
- 姓名
- 入学年份(int)
- 行政学院(1)
- 行政班级(1)
- 体育课班级(每学期仅 1 个)
- 加入的组织(多对多)
约束:
字段:
- 学院名称
- 教务秘书(1 人,Django User)
- 上级学院(可选)
规则:
字段:
- 班级名称
- 所属学院
- 班主任(1 人,Django User)
规则:
字段:
- 体育教师(1 人)
- 上课时间(字符串,如
周一 0102节)
- 课程内容(字符串)
- 学期(1)
- 学生列表
规则:
- 一个学生一个学期 仅有一个体育课班级
- 体育课 不直接产生锻炼次数
字段:
- 组织名称
- 组织别名(ASCII,unique,用于 URL)
- 组织管理员(多,Django User)
- 指导老师(1 人)
- 成员学生(多)
规则:
- 指导老师可指派组织管理员
- 组织类型不影响计次,不单独建模
字段:
规则:
- 每年两个学期
- 允许修改已开始学期的时间
- 不允许跨学期活动
- 可能存在“假期”
字段:
- 活动名称
- 所属组织
- 学期
- 开始时间
- 结束时间
- 活动倍率(非负整数,可为 0)
- 活动图片集(相册)
规则:
- 仅学期内活动计入期末统计
- 单用户单活动 仅可签到 1 次
- 活动可上传多张图片
- 图片由 Apache2 提供静态访问
- 相册视图必须登录 Django 后才能访问
- 访问角色:任意已登录用户
- 学生访问路由获取 动态身份二维码
- 有效期:30 秒
- 使用 TOTP-like + HMAC
- 不可预测、防重放
- 组织管理员
- 活动级临时志愿者(Django User)
活动签到是否需要记录“签到人”(志愿者 / 管理员),用于审计责任
-
URL 中必须包含 目标组织
-
字段:
- 运动日期(date)
- 照片(多张)
- 锻炼次数倍率(可编辑)
- 运动指标 JSON(预留)
- 使用的 JSON 模板(可选)
-
不考虑跨天训练
- 所属组织
- 模板名称
- 模板别名(ASCII,用于 URL)
- JSON Schema(预留)
规则:
- 同一组织允许多个模板
- 后期前端使用 JS 动态生成表单
- 活动签到 × 活动倍率
- 审核通过的自行训练 × 记录倍率
-
条件:
- 学期结束
- 体育课所有学生 无“待审核”自行训练记录
-
操作:
-
若存在问题:
-
体育老师确认前:
-
所有角色均可查看数据
-
状态显示:
“待 {体育老师姓名} 确认”
-
教务秘书 / 班主任:
- 查看学期汇总 + 明细
- 允许导出 Excel / PDF
- 禁止修改数据
- 权限控制:RBAC
- 审计日志(审核、确认、补签)
- 防重复签到
- 并发安全
- 图片对象存储可后续扩展