学生出勤行为记录学生每日出勤率、迟到、请假、早退、课堂纪律事件和缺勤原因,是班主任跟踪学生到校状态和课堂行为的重要依据。
本文基于StudentAttendanceBehavior的模型、视图和 fast-crud 页面,把学生选择、日期筛选、抽屉回显和数据维护转换为 Codex 可执行任务。
文章目录
- 设计与需求
- 后端设计
- 前端设计
- 扩展功能
- 数据联动
- Codex开发标准
- SOP 标准
- PDD 标准
- 总结
设计与需求
学生出勤行为不能只按普通 CRUD 理解。StudentAttendanceBehavior模型以id_student + stat_date作为唯一约束,保存学生某一天的出勤行为快照。字段覆盖attendance_rate、late_count、leave_count、early_leave_count、discipline_event_count、absence_reason、attendance_note,这些数据会被学生画像抽屉用于出勤行为分和风险提示。
Codex 生成代码时要把每日唯一快照、日期范围筛选和学生上下文联动写清楚。出勤行为不是健康事件,也不是学生主档字段;它是按天维护的过程记录,既能在独立页面维护,也能在学生管理抽屉按当前学生查看。
| 需求层描述 | 设计层转换 | Codex 代码生成方向 |
|---|---|---|
| 学生身份 | 通过 id_student、name_student、username_student 关联学生 | 生成学生远程搜索和只读回显 |
| 业务记录 | stat_date、attendance_rate、late_count、leave_count、early_leave_count、discipline_event_count、absence_reason、attendance_note | 生成对应字段表单、列表列和基础校验 |
| 日期筛选 | stat_date 支持范围查询 | 生成 range_fields 与前端查询参数 |
| 学生抽屉 | 学生管理页打开子模块时带入当前学生 | 生成 inStudentDrawer、studentRef 和自动刷新 |
| 每日唯一 | id_student + stat_date唯一 | 生成重复日期校验和编辑回显 |
| 画像输入 | 出勤行为参与学生画像抽屉出勤维度计算 | 生成可追溯的出勤分来源 |
可以直接使用下面的Prompt进行模块功能的设计
请基于教育管理系统源码设计 学生出勤行为 模块,不要编造代码中不存在的能力。 业务范围:记录学生每日出勤率、迟到、请假、早退、纪律事件、缺勤原因和出勤行为备注。 后端路径:server_backend/modules/User/views_app/StudentAttendanceBehavior.py 前端路径:server_vue3/src/views/modules/User/StudentAttendanceBehavior/index.vue、crud.tsx 接口入口:/api/User/StudentAttendanceBehavior/ 核心字段:stat_date、attendance_rate、late_count、leave_count、early_leave_count、discipline_event_count、absence_reason、attendance_note 扩展能力:数据联动 请输出模块设计方案,包含页面结构、数据模型、接口规则、权限验收、异常边界和 Codex 分阶段生成项目代码的任务拆分。扩展能力只允许使用源码中已经存在的能力。后端设计
后端设计重点不是堆接口,而是把学生出勤行为沉淀成可复用的数据底座。StudentAttendanceBehaviorViewSet位于server_backend/modules/User/views_app/StudentAttendanceBehavior.py,开放get/post/put/delete,使用CustomModelRefSerializer,并把id_student、name_student、username_student设置为只读字段。模型层通过id_student + stat_date唯一约束保证同一学生某一天只有一条出勤快照。
筛选层支持id_student、name_student、username_student、class_administrative、absence_reason、attendance_note模糊查询,并通过range_fields=['stat_date']支持统计日期范围筛选。后端只负责出勤行为数据维护,不承担图表聚合和风险标签计算。
| 后端设计项 | 设计重点 | Codex 生成方向 |
|---|---|---|
| 模型字段 | 使用CustomModelRefSerializer按模型生成序列化规则 | 保留只读学生身份字段和业务字段类型 |
| 查询筛选 | 使用SearchFilter与CustomModelInFilter | 支持姓名、学号、班级和日期范围查询 |
| 路由注册 | 在modules/User/urls.py通过DefaultRouter注册 | 保持/api/User/模块名/接口风格 |
| 权限边界 | 依赖系统登录态和管理范围 | 避免跨学生、跨班级访问敏感数据 |
| 唯一约束 | id_student + stat_date限制每日一条 | 生成重复数据错误处理 |
| 日期范围 | range_fields=['stat_date'] | 生成统计日期区间查询 |
可以直接使用下面的Prompt进行后端代码的设计
请按 学生出勤行为 的真实业务补齐或重构后端代码。 需要读取并遵守: - server_backend/modules/User/views_app/StudentAttendanceBehavior.py - server_backend/modules/User/models.py - server_backend/modules/User/urls.py 生成要求: - 按 StudentAttendanceBehavior 模型字段设计序列化规则,不要新增无来源字段。 - 使用 CustomModelViewSet、CustomModelRefSerializer 和 CustomModelInFilter 保持项目风格。 - 补齐列表查询、详情、新增、编辑、删除或只读接口边界。 - 保留 read_only_fields、search_fields、range_fields 和权限校验逻辑。 - 扩展能力只实现:数据联动。 - 输出需要包含模型字段说明、接口清单、路由注册、筛选规则、权限规则和异常处理。前端设计
前端设计重点不是把字段堆到页面上,而是让管理人员能按日维护学生出勤和课堂行为。StudentAttendanceBehavior/crud.tsx配置统计日期、出勤率、迟到次数、请假次数、早退次数、课堂纪律事件数、缺勤原因和出勤行为备注;api.ts使用/api/User/StudentAttendanceBehavior/封装标准请求。
学生管理中的StudentAttendanceBehaviorDrawer复用基础 crud 配置,通过studentRef限定当前学生。抽屉新增出勤记录时要带入学生身份,查询时要按id_student和日期范围过滤,避免不同学生记录混在同一张表里。
| 前端设计项 | 设计重点 | Codex 生成方向 |
|---|---|---|
| 列表配置 | 使用fs-crud组织分页、搜索和列展示 | 生成crud.tsx的 columns、request、rowHandle |
| 表单结构 | 学生身份字段只读,业务字段按类型输入 | 生成新增、编辑、回显和校验规则 |
| 接口封装 | api.ts统一封装GetList/AddObj/UpdateObj/DelObj | 保持项目 request 调用规范 |
| 抽屉场景 | 学生详情页打开子模块时自动带入学生信息 | 支持inStudentDrawer、studentRef和列表刷新 |
| 出勤表单 | 出勤率、迟到、请假、早退、纪律事件和缺勤原因 | 生成数字输入、文本输入和日期控件 |
| 画像输入 | 出勤数据进入画像抽屉出勤维度 | 保持字段含义和日期粒度 |
出勤行为字段需要保持数值类型和日期粒度。attendance_rate是百分比型数值,late_count、leave_count、early_leave_count、discipline_event_count是计数字段,absence_reason和attendance_note用于记录原因与跟进说明。Codex 不能把这些字段都做成文本输入,否则学生画像抽屉无法稳定计算出勤维度。
学生画像抽屉读取出勤行为后,会把出勤率、迟到、请假、早退和纪律事件转成出勤行为分。页面生成时要让这些字段可排序、可筛选、可回显,并在空数据时显示合理的缺省状态。
可以直接使用下面的Prompt进行前端代码的设计
请按 学生出勤行为 的真实业务生成或补齐前端代码。 需要读取并遵守: - server_vue3/src/views/modules/User/StudentAttendanceBehavior/index.vue、crud.tsx - server_vue3/src/views/modules/User/StudentAttendanceBehavior/api.ts 生成要求: - 使用项目现有 fs-crud、Element Plus、request 封装和 api.ts 风格。 - 生成列表查询、筛选区域、新增编辑表单、详情或抽屉交互、权限按钮和保存回显。 - 处理字段转换:学生远程搜索回填 id_student/name_student/username_student,抽屉模式自动注入当前学生,日期字段按 range_fields 支持范围查询 - 扩展交互只实现:数据联动。 - 不要添加源码中未实现的扩展入口。扩展功能
学生出勤行为的扩展能力是学生上下文联动。它既能作为独立列表维护,也能在学生管理抽屉中按当前学生过滤和回显。
| 扩展功能 | 主要用途 | 落地重点 |
|---|---|---|
| 数据联动 | 独立列表与学生抽屉共用同一套接口 | 按 id_student 自动筛选并补齐学生身份字段 |
数据联动
学生出勤行为的数据联动体现在 id_student、name_student、username_student、class_administrative、stat_date。前端选择、搜索或抽屉打开后,会生成接口参数 id_student、stat_date 范围、学生搜索关键词,后端按学生、班级、日期或类型筛选,再把结果回填到列表、表单或业务面板中。
保存边界与生活日常类似,但业务含义不同。stat_date缺失时不能保存出勤快照;同一学生同一天只能有一条出勤行为记录;抽屉新增时应自动带入学生身份;独立页面的班级和日期筛选不能覆盖抽屉中的当前学生过滤条件。
验收时还要检查数值边界。出勤率应按百分比理解,迟到、请假、早退和纪律事件应按非负整数处理,缺勤原因和备注允许为空但不能影响列表加载。Codex 生成测试用例时需要覆盖满勤、低出勤率、多次迟到、无缺勤原因、抽屉新增和重复日期保存这些场景。
出勤行为还会被学生画像抽屉用于趋势判断。多天记录应按stat_date排序后参与计算,空记录要显示暂无数据,不能用 0 分误导判断。这个边界需要写入 PDD 验收。
前端保存后需要刷新当前查询条件下的列表;抽屉模式只刷新当前学生数据,独立页面按原筛选条件刷新。两种场景共用接口,但刷新范围不同。
交给 Codex 生成时,要明确联动边界:只处理源码中存在的字段和接口,不把其他学生画像、考试分析或 AI 评估能力塞进本模块。保存动作必须保证 抽屉内只显示当前学生记录,保存时自动补齐学生身份字段。
可以直接使用下面的Prompt进行数据联动设计
请为 学生出勤行为 设计数据联动实现。 联动字段:id_student、name_student、username_student、class_administrative、stat_date 接口参数:id_student、stat_date 范围、学生搜索关键词 结果回填:抽屉内只显示当前学生记录,保存时自动补齐学生身份字段 源码边界:只使用当前模块已经存在的模型字段、api.ts 请求和页面组件,不新增未实现的业务能力。 请输出联动流程、字段映射表、异常处理、保存回显规则和需要修改的文件路径。Codex开发标准
使用 Codex 开发学生出勤行为时,不能直接让模型自由写代码。PDD 定义业务边界和验收口径,SOP 约束目录、文件职责和开发顺序,接口权限规则保证生成代码能进入现有系统。
SOP 标准
SOP 用来约束代码目录、文件职责和开发顺序。学生出勤行为的目录结构需要贴合现有User模块,不应为单篇文章另起一套风格。
server_backend/modules/User/ models.py views_app/StudentAttendanceBehavior.py urls.py server_vue3/src/views/modules/User/StudentAttendanceBehavior/ index.vue crud.tsx api.ts server_vue3/src/views/modules/User/StudentManage/Drawers/ StudentAttendanceBehaviorDrawer/index.vue StudentAttendanceBehaviorDrawer/crud.tsx docs/modules/学生出勤行为/ pdd.md api.md test-cases.md codex-sop.md| 开发阶段 | Codex 执行目标 | 输出结果 |
|---|---|---|
| 模块设计 | 读取模型、视图、路由和前端页面 | pdd.md明确业务边界 |
| 目录规划 | 对齐后端 views_app、前端模块目录和接口封装 | codex-sop.md明确文件职责 |
| 后端实现 | 生成模型序列化、视图接口、筛选和权限校验 | 后端接口可被前端稳定调用 |
| 前端实现 | 生成列表、表单、抽屉、按钮和接口调用 | 页面操作闭环可运行 |
| 功能补齐 | 按真实扩展能力补齐联动、批量、文件或生成逻辑 | 扩展能力与源码一致 |
| 验收修复 | 根据 PDD 和测试用例修复偏差 | test-cases.md与代码一致 |
可以直接使用下面的Prompt进行SOP撰写
请为 学生出勤行为 编写 Codex 开发 SOP。 要求: - 先输出目录结构,不要直接写代码。 - 先生成 docs/modules/学生出勤行为/pdd.md、api.md、test-cases.md 和 codex-sop.md。 - 目录必须贴合现有路径:server_backend/modules/User/views_app/StudentAttendanceBehavior.py、server_vue3/src/views/modules/User/StudentAttendanceBehavior/index.vue、crud.tsx。 - SOP 需要约束模型字段、接口视图、路由注册、前端 crud 配置、接口封装、权限按钮、保存回显和扩展能力。 - 扩展能力只包含:数据联动。 - 文档完成后,再按 SOP 分阶段生成项目代码。PDD 标准
PDD 是学生出勤行为的设计与验收文档,用于判断 Codex 输出是否符合真实业务。验收不能只看页面能否打开,还要检查字段、接口、权限、筛选、联动和扩展能力是否匹配源码。
| 验收维度 | 验收重点 | 通过标准 |
|---|---|---|
| 业务目标 | 记录学生每日出勤率、迟到、请假、早退、纪律事件、缺勤原因和出勤行为备注。 | 页面和接口能支撑模块业务闭环 |
| 页面结构 | server_vue3/src/views/modules/User/StudentAttendanceBehavior/index.vue、crud.tsx | 列表、表单、抽屉或操作按钮与源码一致 |
| 数据模型 | stat_date、attendance_rate、late_count、leave_count、early_leave_count、discipline_event_count、absence_reason、attendance_note | 字段类型、只读字段、唯一约束不偏离模型 |
| 接口规则 | /api/User/StudentAttendanceBehavior/ | 列表、保存、删除、动作接口请求参数正确 |
| 权限控制 | 登录用户、班级范围或系统权限 | 非授权数据不可越权访问 |
| 测试用例 | 正常、异常、空数据、回显和删除 | test-cases.md覆盖主要路径 |
| 数据联动 | 独立列表和学生抽屉按学生身份联动 | 抽屉打开、保存、刷新均限定当前学生 |
可以直接使用下面的Prompt进行PDD 验收
请根据 docs/modules/学生出勤行为/pdd.md 对 学生出勤行为 进行验收。 验收范围:业务目标、页面结构、数据模型、接口规则、权限控制、测试用例、数据联动。 请输出验收结果表,字段包含:验收项、通过状态、发现问题、涉及文件、修复建议。不要只给结论;必须指出未通过项的具体文件位置和建议改法。总结
学生出勤行为不是考勤流水,它把出勤率、迟到请假和课堂纪律汇总到学生维度,为班级管理和画像分析提供依据。
Codex 开发这类学生子模块时,应由 PDD 明确字段、日期范围和学生身份边界,由 SOP 固定独立页面与抽屉复用方式,再用 Prompt 约束查询、回显和保存逻辑。