学生健康事件记录学生在校期间出现的疾病、病休、视力听力、慢性不适和医疗备注,是班主任跟踪健康风险和请假原因的重要依据。它按事件记录,不按学生唯一覆盖。
本文基于StudentHealthEvent的模型、视图和 fast-crud 页面,把学生选择、日期筛选、抽屉回显和数据维护转换为 Codex 可执行任务。
文章目录
- 设计与需求
- 后端设计
- 前端设计
- 扩展功能
- 数据联动
- Codex开发标准
- SOP 标准
- PDD 标准
- 总结
设计与需求
学生健康事件不能只按普通 CRUD 理解。StudentHealthEvent模型按event_date保存健康事件,字段覆盖event_type、illness_type、illness_days、vision_issue_flag、hearing_issue_flag、chronic_condition_flag、medical_note、event_note。同一学生可以有多条健康事件,列表需要支持按学生、班级、事件类型、疾病类型和日期范围追踪。
这些记录会被学生画像抽屉读取,用于健康维度分和健康关注提示。Codex 生成模块时不能把健康事件简化成学生主档的一个备注字段,也不能新增不存在的医疗诊断流程;真实能力是事件记录、日期范围筛选和学生上下文联动。
| 需求层描述 | 设计层转换 | Codex 代码生成方向 |
|---|---|---|
| 学生身份 | 通过 id_student、name_student、username_student 关联学生 | 生成学生远程搜索和只读回显 |
| 业务记录 | event_date、event_type、illness_type、illness_days、vision_issue_flag、hearing_issue_flag、chronic_condition_flag、medical_note、event_note | 生成对应字段表单、列表列和基础校验 |
| 日期筛选 | event_date 支持范围查询 | 生成 range_fields 与前端查询参数 |
| 学生抽屉 | 学生管理页打开子模块时带入当前学生 | 生成 inStudentDrawer、studentRef 和自动刷新 |
| 多事件记录 | 同一学生可按日期维护多条健康事件 | 生成事件列表和详情回显 |
| 画像输入 | 健康事件参与学生画像抽屉健康维度计算 | 生成可追溯的数据来源 |
可以直接使用下面的Prompt进行模块功能的设计
请基于教育管理系统源码设计 学生健康事件 模块,不要编造代码中不存在的能力。 业务范围:记录学生健康事件日期、事件类型、疾病类型、病休天数、视力听力问题、慢性不适、医疗记录和事件备注。 后端路径:server_backend/modules/User/views_app/StudentHealthEvent.py 前端路径:server_vue3/src/views/modules/User/StudentHealthEvent/index.vue、crud.tsx 接口入口:/api/User/StudentHealthEvent/ 核心字段:event_date、event_type、illness_type、illness_days、vision_issue_flag、hearing_issue_flag、chronic_condition_flag、medical_note、event_note 扩展能力:数据联动 请输出模块设计方案,包含页面结构、数据模型、接口规则、权限验收、异常边界和 Codex 分阶段生成项目代码的任务拆分。扩展能力只允许使用源码中已经存在的能力。后端设计
后端设计重点不是堆接口,而是把学生健康事件沉淀成可复用的数据底座。StudentHealthEventViewSet位于server_backend/modules/User/views_app/StudentHealthEvent.py,开放get/post/put/delete,使用CustomModelRefSerializer,并把id_student、name_student、username_student设置为只读字段。健康事件没有按学生唯一约束,符合“一个学生多条事件”的业务模型。
筛选层支持id_student、name_student、username_student、class_administrative、event_type、illness_type、event_note模糊查询,并通过range_fields=['event_date']支持事件日期范围筛选。后端只负责健康事件数据维护,不生成医疗结论。
| 后端设计项 | 设计重点 | Codex 生成方向 |
|---|---|---|
| 模型字段 | 使用CustomModelRefSerializer按模型生成序列化规则 | 保留只读学生身份字段和业务字段类型 |
| 查询筛选 | 使用SearchFilter与CustomModelInFilter | 支持姓名、学号、班级和日期范围查询 |
| 路由注册 | 在modules/User/urls.py通过DefaultRouter注册 | 保持/api/User/模块名/接口风格 |
| 权限边界 | 依赖系统登录态和管理范围 | 避免跨学生、跨班级访问敏感数据 |
| 事件检索 | 支持事件类型、疾病类型和事件备注模糊查询 | 生成可组合筛选条件 |
| 日期范围 | range_fields=['event_date'] | 生成事件时间段查询 |
可以直接使用下面的Prompt进行后端代码的设计
请按 学生健康事件 的真实业务补齐或重构后端代码。 需要读取并遵守: - server_backend/modules/User/views_app/StudentHealthEvent.py - server_backend/modules/User/models.py - server_backend/modules/User/urls.py 生成要求: - 按 StudentHealthEvent 模型字段设计序列化规则,不要新增无来源字段。 - 使用 CustomModelViewSet、CustomModelRefSerializer 和 CustomModelInFilter 保持项目风格。 - 补齐列表查询、详情、新增、编辑、删除或只读接口边界。 - 保留 read_only_fields、search_fields、range_fields 和权限校验逻辑。 - 扩展能力只实现:数据联动。 - 输出需要包含模型字段说明、接口清单、路由注册、筛选规则、权限规则和异常处理。前端设计
前端设计重点不是把字段堆到页面上,而是让管理人员能快速记录和追踪健康事件。StudentHealthEvent/crud.tsx配置事件日期、事件类型、疾病类型、病休天数、视力问题、听力问题、慢性不适、医疗记录和事件备注;api.ts使用/api/User/StudentHealthEvent/封装标准请求。
学生管理中的StudentHealthEventDrawer复用基础 crud 配置,通过studentRef限定当前学生。抽屉新增事件时要自动带入学生身份,查询时只展示当前学生事件,避免班级中其他学生健康记录混入。
| 前端设计项 | 设计重点 | Codex 生成方向 |
|---|---|---|
| 列表配置 | 使用fs-crud组织分页、搜索和列展示 | 生成crud.tsx的 columns、request、rowHandle |
| 表单结构 | 学生身份字段只读,业务字段按类型输入 | 生成新增、编辑、回显和校验规则 |
| 接口封装 | api.ts统一封装GetList/AddObj/UpdateObj/DelObj | 保持项目 request 调用规范 |
| 抽屉场景 | 学生详情页打开子模块时自动带入学生信息 | 支持inStudentDrawer、studentRef和列表刷新 |
| 事件表单 | 日期、类型、病休、健康标记和备注 | 生成对应输入控件和基础校验 |
| 健康画像 | 事件列表进入画像抽屉健康维度 | 保持事件数据可追溯 |
健康事件字段需要保留事件记录的粒度。event_type用于区分健康事件类别,illness_type记录疾病或不适类型,illness_days表示病休天数,vision_issue_flag、hearing_issue_flag、chronic_condition_flag是结构化健康标记。medical_note适合记录医疗相关说明,event_note适合记录班主任跟进备注,两者不应合并成一个模糊字段。
学生画像抽屉读取健康事件时,会根据事件数量和健康标记计算健康维度。Codex 生成前端时要保留事件列表的时间顺序和日期范围筛选,不能只展示最近一条,也不能把同一学生的多条事件覆盖成单条画像。
可以直接使用下面的Prompt进行前端代码的设计
请按 学生健康事件 的真实业务生成或补齐前端代码。 需要读取并遵守: - server_vue3/src/views/modules/User/StudentHealthEvent/index.vue、crud.tsx - server_vue3/src/views/modules/User/StudentHealthEvent/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、event_date。前端选择、搜索或抽屉打开后,会生成接口参数 id_student、event_date 范围、学生搜索关键词,后端按学生、班级、日期或类型筛选,再把结果回填到列表、表单或业务面板中。
抽屉模式下,studentRef必须成为查询的固定条件。独立页面可以按事件类型、疾病类型、日期和学生检索;学生抽屉只展示当前学生健康事件。新增事件时自动带入学生身份,保存后刷新当前学生事件列表,同时让画像抽屉可以重新计算健康维度。
验收时需要区分“健康事件抽屉”和“学生画像抽屉”。前者负责维护当前学生的事件明细,后者读取健康事件参与综合画像展示。Codex 不能把两个页面合并成一个组件,也不能让画像抽屉承担新增编辑事件的职责;这会破坏当前源码中的职责分离。
测试用例应覆盖无事件、单日多事件、长期病休、视力问题、听力问题、慢性不适、按日期范围查询和按事件类型筛选。这样才能验证事件列表、抽屉回显和画像读取都按真实数据工作。
交给 Codex 生成时,要明确联动边界:只处理源码中存在的字段和接口,不把其他学生画像、考试分析或 AI 评估能力塞进本模块。保存动作必须保证 抽屉内只显示当前学生记录,保存时自动补齐学生身份字段。
可以直接使用下面的Prompt进行数据联动设计
请为 学生健康事件 设计数据联动实现。 联动字段:id_student、name_student、username_student、class_administrative、event_date 接口参数:id_student、event_date 范围、学生搜索关键词 结果回填:抽屉内只显示当前学生记录,保存时自动补齐学生身份字段 源码边界:只使用当前模块已经存在的模型字段、api.ts 请求和页面组件,不新增未实现的业务能力。 请输出联动流程、字段映射表、异常处理、保存回显规则和需要修改的文件路径。Codex开发标准
使用 Codex 开发学生健康事件时,不能直接让模型自由写代码。PDD 定义业务边界和验收口径,SOP 约束目录、文件职责和开发顺序,接口权限规则保证生成代码能进入现有系统。
SOP 标准
SOP 用来约束代码目录、文件职责和开发顺序。学生健康事件的目录结构需要贴合现有User模块,不应为单篇文章另起一套风格。
server_backend/modules/User/ models.py views_app/StudentHealthEvent.py urls.py server_vue3/src/views/modules/User/StudentHealthEvent/ index.vue crud.tsx api.ts server_vue3/src/views/modules/User/StudentManage/Drawers/ StudentHealthEventDrawer/index.vue StudentHealthEventDrawer/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/StudentHealthEvent.py、server_vue3/src/views/modules/User/StudentHealthEvent/index.vue、crud.tsx。 - SOP 需要约束模型字段、接口视图、路由注册、前端 crud 配置、接口封装、权限按钮、保存回显和扩展能力。 - 扩展能力只包含:数据联动。 - 文档完成后,再按 SOP 分阶段生成项目代码。PDD 标准
PDD 是学生健康事件的设计与验收文档,用于判断 Codex 输出是否符合真实业务。验收不能只看页面能否打开,还要检查字段、接口、权限、筛选、联动和扩展能力是否匹配源码。
| 验收维度 | 验收重点 | 通过标准 |
|---|---|---|
| 业务目标 | 记录学生健康事件日期、事件类型、疾病类型、病休天数、视力听力问题、慢性不适、医疗记录和事件备注。 | 页面和接口能支撑模块业务闭环 |
| 页面结构 | server_vue3/src/views/modules/User/StudentHealthEvent/index.vue、crud.tsx | 列表、表单、抽屉或操作按钮与源码一致 |
| 数据模型 | event_date、event_type、illness_type、illness_days、vision_issue_flag、hearing_issue_flag、chronic_condition_flag、medical_note、event_note | 字段类型、只读字段、唯一约束不偏离模型 |
| 接口规则 | /api/User/StudentHealthEvent/ | 列表、保存、删除、动作接口请求参数正确 |
| 权限控制 | 登录用户、班级范围或系统权限 | 非授权数据不可越权访问 |
| 测试用例 | 正常、异常、空数据、回显和删除 | test-cases.md覆盖主要路径 |
| 数据联动 | 独立列表和学生抽屉按学生身份联动 | 抽屉打开、保存、刷新均限定当前学生 |
可以直接使用下面的Prompt进行PDD 验收
请根据 docs/modules/学生健康事件/pdd.md 对 学生健康事件 进行验收。 验收范围:业务目标、页面结构、数据模型、接口规则、权限控制、测试用例、数据联动。 请输出验收结果表,字段包含:验收项、通过状态、发现问题、涉及文件、修复建议。不要只给结论;必须指出未通过项的具体文件位置和建议改法。总结
学生健康事件将学生身体状况和医疗备注沉淀为可查询记录,避免健康信息只停留在临时沟通中。
Codex 开发这类学生子模块时,应由 PDD 明确字段、日期范围和学生身份边界,由 SOP 固定独立页面与抽屉复用方式,再用 Prompt 约束查询、回显和保存逻辑。