
教育管理系统知识点配置模块用Codex生成项目代码
知识点配置是教育管理系统中题库、考试分析和教学内容推荐的基础口径。它维护学段、学科、知识点层级和启用状态,让题目、教材章节和成绩分析能引用同一套结构化知识体系。
本文基于 KnowledgePoint 模型、KnowledgePointViewSet、内置知识点目录和 FastCrud 树表页面,说明如何把层级配置、初始化、清空重置和页面回显,转换成 Codex 可执行的项目代码生成任务。
文章目录
设计与需求
知识点配置不能只理解成普通 CRUD。server_backend/modules/Config/models.py 中的 KnowledgePoint 使用 code 和 pcode 建立父子关系,level 表示知识点层级,type_point_subject 和 type_point_level 定义学科与学段。后端接口位于 server_backend/modules/Config/views_app/KnowledgePoint.py,前端页面位于 server_vue3/src/views/modules/Config/KnowledgePoint/index.vue、api.ts、crud.tsx。
交给 Codex 的任务需要把业务需求拆成树形模型、初始化接口、查询筛选、表单校验、权限验收和数据联动。页面不仅要能新增、编辑、删除节点,还要支持按 pcode 懒加载树表、通过 get_init_menu 查看哪些学段已初始化、通过 update_subject_knowledge_point 从内置 JSON 目录生成知识点树。
验收阶段
生成阶段
设计阶段
输入阶段
知识体系
学段学科
源码上下文
树形模型
初始化接口
页面树表
权限验收
读取源码
生成后端
生成前端
联动检查
PDD验收
| 需求层描述 | 设计层转换 | Codex 代码生成方向 |
|---|---|---|
| 知识点需要统一层级 | 使用 code、pcode、level 建立树形结构。 |
生成树形模型、父子节点校验和懒加载查询。 |
| 不同学段学科需要区分 | 使用 type_point_level 和 type_point_subject 标记年级与学科。 |
生成筛选字段、初始化参数和表单回显。 |
| 系统需要内置初始化 | get_init_menu 返回初始化菜单,update_subject_knowledge_point 读取内置 JSON。 |
生成初始化弹窗、接口调用和完成提示。 |
| 配置需要可清空 | update_reset_model 删除全部知识点并重置自增索引。 |
生成危险操作确认、权限控制和验收用例。 |
| 前端需要树表展示 | GetList 根节点默认 level=1,子节点通过 pcode 查询。 |
生成树表懒加载、hasChildren 标记和刷新策略。 |
| 权限需要可验收 | 初始化、清空、删除节点都属于高风险配置操作。 | 在 PDD 中列出角色、接口和误操作防护。 |
可以直接使用下面的Prompt进行模块功能的设计
text
请 Codex 基于教育管理系统真实源码设计"知识点配置"模块。
模块定位:
知识点配置用于维护学段、学科和知识点层级,为题库、考试分析和教学内容推荐提供统一知识体系。
源码范围:
server_backend/modules/Config/models.py
server_backend/modules/Config/views_app/KnowledgePoint.py
server_vue3/src/views/modules/Config/KnowledgePoint/index.vue
server_vue3/src/views/modules/Config/KnowledgePoint/api.ts
server_vue3/src/views/modules/Config/KnowledgePoint/crud.tsx
核心字段:
name:知识点名称
code:知识点编码,唯一索引
level:知识点层级
type_point_subject:知识点学科
type_point_level:知识点年级
enable:是否启用
pcode:父级知识点编码
接口范围:
GET/POST/DELETE /api/Config/KnowledgePoint/
GET /api/Config/KnowledgePoint/get_init_menu/
POST /api/Config/KnowledgePoint/update_subject_knowledge_point/
POST /api/Config/KnowledgePoint/update_reset_model/
设计要求:
1. 输出页面结构、数据模型、接口规则、权限边界和验收标准。
2. 说明 code、pcode、level 如何构成树形结构。
3. 说明 get_init_menu 如何标记学段是否已初始化。
4. 说明 update_subject_knowledge_point 如何按 level 从内置 JSON 生成知识点树。
5. 说明 update_reset_model 的危险操作边界。
6. 只允许设计源码中存在的数据联动和知识点初始化能力。
后端设计
后端设计重点不是堆新增、编辑、删除接口,而是保证知识点树的编码、层级和初始化口径稳定。KnowledgePoint 模型包含 name、code、level、type_point_subject、type_point_level、enable、pcode。其中 code 唯一且建索引,pcode 指向自身 code 字段,用于形成树形结构。
KnowledgePointViewSet 使用 PCodeTreeSerializer.for_model(KnowledgePoint, read_only_fields=["number", "name"]) 处理树形序列化,CustomModelInFilter 对 name、type_point_subject、type_point_level 提供模糊查询。get_init_menu 会遍历 dvadmin.data.knowledge_point.menu_data,按 type_point_level 和 level=1 判断某个学段是否已经初始化。update_subject_knowledge_point 会按 level 找到内置 JSON 目录,读取每个学科文件并递归生成知识点编码。update_reset_model 会删除全部数据并按数据库类型重置自增索引。
| 后端设计项 | 设计重点 | Codex 生成方向 |
|---|---|---|
| 树形模型 | code 唯一,pcode 指向自身,level 表示层级。 |
生成父子节点校验、树形序列化和懒加载查询。 |
| 学段学科 | type_point_level 标记学段,type_point_subject 标记学科。 |
生成筛选、初始化参数和数据隔离。 |
| 初始化菜单 | get_init_menu 在 menu_data 上追加 initialized 标记。 |
生成初始化弹窗数据源和状态回显。 |
| 初始化写入 | update_subject_knowledge_point 从内置 JSON 递归写入知识点。 |
生成文件读取、编码生成、事务和异常响应。 |
| 清空重置 | update_reset_model 删除数据并重置自增索引。 |
生成危险确认、权限控制和数据库差异处理。 |
| 路由接口 | 接口前缀为 /api/Config/KnowledgePoint/。 |
保持前后端 API 名称和方法一致。 |
可以直接使用下面的Prompt进行后端代码的设计
text
请 Codex 按"知识点配置"业务从零设计或补齐后端代码。
后端源码范围:
server_backend/modules/Config/models.py
server_backend/modules/Config/views_app/KnowledgePoint.py
必须遵守的现有结构:
1. 模型为 KnowledgePoint,字段包含 name、code、level、type_point_subject、type_point_level、enable、pcode。
2. code 是唯一编码,pcode 通过 to_field=code 指向父级。
3. ViewSet 为 KnowledgePointViewSet,序列化使用 PCodeTreeSerializer。
4. 接口前缀为 /api/Config/KnowledgePoint/。
需要实现或校准:
1. 列表查询支持根节点默认 level=1,子节点按 pcode 查询。
2. get_init_menu 返回内置知识点菜单,并标记 initialized。
3. update_subject_knowledge_point 按 level 读取内置 JSON,递归生成知识点。
4. update_reset_model 清空数据并按数据库类型重置自增索引。
5. 删除、初始化和清空接口要有权限边界和异常响应。
输出涉及文件、模型字段、接口返回结构、权限规则、异常响应和测试建议。
前端设计
前端设计重点是让配置人员在树表中维护知识点,而不是把所有节点平铺到列表。server_vue3/src/views/modules/Config/KnowledgePoint/index.vue 使用 fs-crud,并在 actionbar-left 放入 InitKnowledgePointDialog。页面挂载后执行 crudExpose.doRefresh(),初始化完成后通过 @refresh 刷新树表。
api.ts 中的 GetList 会在没有 pcode、name、code 时默认补 level=1,并将后端返回的 pcode_count 转成 hasChildren,服务树表懒加载。resetModel 调用 update_reset_model,initMenu 调用 get_init_menu,initSubjectBook 调用 update_subject_knowledge_point,这些接口共同支撑初始化弹窗和树表回显。
| 前端设计项 | 设计重点 | Codex 生成方向 |
|---|---|---|
| 页面容器 | index.vue 使用 fs-page、fs-crud 和 InitKnowledgePointDialog。 |
生成初始化入口、刷新事件和挂载刷新。 |
| 树表查询 | GetList 根节点默认 level=1,子节点按 pcode 查询。 |
生成懒加载、hasChildren 标记和搜索条件处理。 |
| 初始化弹窗 | initMenu 获取学段初始化菜单,initSubjectBook 执行初始化。 |
生成学段选择、初始化状态、提交 loading 和完成刷新。 |
| 清空重置 | resetModel 调用后端清空接口。 |
生成确认弹窗、危险提示和成功后刷新。 |
| 字段回显 | name、code、level、type_point_subject、type_point_level、enable、pcode。 |
生成表单字段、只读字段、启用状态和父级回显。 |
可以直接使用下面的Prompt进行前端代码的设计
text
请 Codex 按"知识点配置"业务生成或补齐前端页面代码。
前端源码范围:
server_vue3/src/views/modules/Config/KnowledgePoint/index.vue
server_vue3/src/views/modules/Config/KnowledgePoint/api.ts
server_vue3/src/views/modules/Config/KnowledgePoint/crud.tsx
页面现状:
1. index.vue 使用 fs-page 和 fs-crud。
2. actionbar-left 放置 InitKnowledgePointDialog。
3. GetList 在根节点查询时默认补 level=1。
4. GetList 将 pcode_count 转成 hasChildren。
5. initMenu 调用 get_init_menu。
6. initSubjectBook 调用 update_subject_knowledge_point。
7. resetModel 调用 update_reset_model。
需要生成或修正:
1. 保持树表懒加载和根节点默认查询。
2. 初始化弹窗展示学段初始化状态,提交后刷新列表。
3. 清空重置必须二次确认。
4. 删除节点后刷新父级节点。
5. 字段回显要保持 code、pcode、level 的树形语义。
6. 不生成源码中不存在的上传、审批或统计入口。
输出页面结构、API 封装、树表配置、初始化弹窗、清空重置、异常提示和验收步骤。
扩展功能
知识点配置的扩展能力集中在数据联动和知识点初始化。它超出普通 CRUD 的地方,是节点层级、父子编码、学段学科和初始化状态需要同时维护,并且初始化会从内置目录批量生成树形数据。
| 扩展功能 | 主要用途 | 落地重点 |
|---|---|---|
| 数据联动 | 将 code、pcode、level、学段、学科和树表懒加载串成稳定数据流。 |
前端 hasChildren、后端 pcode_count 和父子编码必须一致。 |
| 知识点初始化 | 按学段读取内置 JSON 目录,生成学科知识点树。 | 初始化前要校验学段,初始化后要刷新菜单状态和树表。 |
数据联动
数据联动围绕树形结构展开。前端首次查询根节点时传 level=1,展开节点时传 pcode,后端通过 PCodeTreeSerializer 返回子节点数量,前端转成 hasChildren。code、pcode、level 不只是展示字段,它们决定节点能否被正确展开和保存。
结果阶段
处理阶段
输入阶段
根节点
父级编码
搜索条件
生成参数
查询接口
转换标记
树表展示
节点展开
表单回显
交给 Codex 生成时,不能把树形字段当普通文本处理。新增节点需要知道父级 pcode,删除节点要考虑子节点影响,搜索时要避免强行带 level=1 导致查不到下级节点。
可以直接使用下面的Prompt进行数据联动设计
text
请 Codex 基于真实源码补齐"知识点配置"的数据联动能力。
源码范围:
server_backend/modules/Config/models.py
server_backend/modules/Config/views_app/KnowledgePoint.py
server_vue3/src/views/modules/Config/KnowledgePoint/index.vue
server_vue3/src/views/modules/Config/KnowledgePoint/api.ts
server_vue3/src/views/modules/Config/KnowledgePoint/crud.tsx
联动对象:
code、pcode、level、type_point_subject、type_point_level、enable、pcode_count、hasChildren
联动要求:
1. 根节点查询默认 level=1。
2. 子节点展开按 pcode 查询。
3. 后端 pcode_count 要转换为前端 hasChildren。
4. 新增和编辑要保持 code、pcode、level 的树形语义。
5. 搜索 name 或 code 时不要错误覆盖查询条件。
6. 删除和清空后刷新树表。
输出接口设计、前端交互、字段转换、异常处理、权限约束和验收清单。
知识点初始化
知识点初始化用于把内置 JSON 目录转换成系统知识点数据。后端按 level 映射年级代码,再从 dvadmin.data.dictionary.GeneralSubject 反查学科编码,组合生成每个知识点的 code。初始化前会清理当前学段旧数据,再递归写入新节点。
结果阶段
处理阶段
输入阶段
选择学段
内置目录
校验学段
读取JSON
递归写入
初始化完成
刷新树表
Codex 生成时要处理边界:不支持的 level 要返回错误,内置目录不存在要返回错误,JSON 读取失败不能中断整个接口到 500。初始化完成后,前端需要刷新树表和初始化菜单状态。
可以直接使用下面的Prompt进行知识点初始化设计
text
请 Codex 基于真实源码补齐"知识点配置"的知识点初始化能力。
后端接口:
GET /api/Config/KnowledgePoint/get_init_menu/
POST /api/Config/KnowledgePoint/update_subject_knowledge_point/
POST /api/Config/KnowledgePoint/update_reset_model/
字段范围:
level、type_point_level、type_point_subject、name、code、pcode、enable
设计要求:
1. get_init_menu 返回学段菜单,并标记 initialized。
2. update_subject_knowledge_point 按 level 读取内置 JSON 目录。
3. 初始化时先清理当前学段旧数据,再递归写入新节点。
4. code 要由学段码、学科码和节点序号组合生成。
5. update_reset_model 要二次确认并限制权限。
6. 前端初始化成功后刷新菜单状态和树表。
输出后端流程、前端交互、异常边界和验收用例。
Codex开发标准
使用 Codex 开发知识点配置模块时,不能直接让它生成一个平铺表格。PDD、SOP、接口权限规则和验收标准需要同时约束树形模型、初始化接口、前端懒加载和危险操作。
验收交付
Codex开发
模块设计
输入约束
需求边界
PDD设计
SOP目录
接口权限
后端设计
前端设计
初始化设计
读取上下文
生成后端
生成前端
联动补齐
功能自检
PDD验收
问题修复
模块交付
SOP 标准
SOP 用于约束代码目录、文件职责和开发顺序。知识点配置模块需要同时维护模型、ViewSet、前端 API、树表页面、初始化弹窗和模块文档。
text
docs/modules/知识点配置/
├── pdd.md
├── api.md
├── test-cases.md
└── codex-sop.md
server_backend/modules/Config/
├── models.py
└── views_app/
└── KnowledgePoint.py
server_vue3/src/views/modules/Config/KnowledgePoint/
├── index.vue
├── api.ts
├── crud.tsx
└── components/
└── InitKnowledgePointDialog.vue
| 开发阶段 | Codex 执行目标 | 输出结果 |
|---|---|---|
| 模块设计 | 读取 KnowledgePoint、KnowledgePointViewSet、前端 api.ts/crud.tsx/index.vue。 |
输出字段、接口、树形结构和初始化边界。 |
| 文档规划 | 建立 PDD、API、测试和 SOP 文档。 | 形成 pdd.md、api.md、test-cases.md、codex-sop.md。 |
| 后端实现 | 校准树形模型、列表查询、初始化菜单、初始化写入和清空重置。 | 后端接口可支撑树表和初始化。 |
| 前端实现 | 校准树表懒加载、初始化弹窗、清空确认和保存回显。 | 页面可维护知识点树。 |
| 数据联动 | 打通 code、pcode、level、pcode_count 和 hasChildren。 |
前后端树形口径一致。 |
| 验收修复 | 按 PDD 检查接口、权限、初始化、清空和异常。 | 输出验收结果与需修复文件位置。 |
可以直接使用下面的Prompt进行SOP撰写
text
请 Codex 按教育管理系统模块开发 SOP,从零实现或补齐"知识点配置"模块。
执行要求:
1. 先输出目录结构,不要直接写代码。
2. 先生成 docs/modules/知识点配置/pdd.md、api.md、test-cases.md 和 codex-sop.md。
3. 文档确认模块边界后,再根据文档生成或修正项目代码。
4. 后端范围限定在 Config/models.py 和 Config/views_app/KnowledgePoint.py。
5. 前端范围限定在 Config/KnowledgePoint/index.vue、api.ts、crud.tsx 和初始化弹窗。
6. 后端需要覆盖树形模型、列表查询、get_init_menu、update_subject_knowledge_point、update_reset_model。
7. 前端需要覆盖树表懒加载、初始化入口、清空确认、字段回显和保存刷新。
8. 不生成源码中不存在的扩展能力。
输出目录结构、开发阶段表、后端任务清单、前端任务清单、数据联动清单和验收修复清单。
PDD 标准
PDD 是模块设计与验收文档,用来约束 Codex 输出是否符合真实业务。知识点配置模块的 PDD 要把树形字段、初始化接口、清空重置、前端懒加载和权限边界写成可验证条目。
| 验收维度 | 验收标准 | 需要检查的文件 |
|---|---|---|
| 业务目标 | 模块能维护学段、学科和知识点层级,为题库与分析提供统一口径。 | pdd.md、models.py、KnowledgePoint.py |
| 页面结构 | 页面包含树表、初始化入口、清空确认、节点新增编辑删除。 | index.vue、crud.tsx |
| 数据模型 | KnowledgePoint 字段覆盖 name、code、level、type_point_subject、type_point_level、enable、pcode。 |
models.py |
| 接口规则 | 列表、详情、新增、删除、初始化菜单、初始化写入、清空重置可用。 | KnowledgePoint.py、api.ts、api.md |
| 权限控制 | 初始化、清空、删除节点需要明确权限和误操作防护。 | KnowledgePoint.py、test-cases.md |
| 数据联动 | code、pcode、level、pcode_count、hasChildren 前后端一致。 |
KnowledgePoint.py、api.ts、crud.tsx |
| 知识点初始化 | 内置 JSON 初始化能按学段生成知识点树,并处理错误。 | KnowledgePoint.py、InitKnowledgePointDialog.vue |
| 测试用例 | 覆盖根节点查询、子节点展开、初始化成功、无效学段、清空重置、删除节点。 | test-cases.md |
可以直接使用下面的Prompt进行PDD 验收
text
请 Codex 根据 docs/modules/知识点配置/pdd.md 对"知识点配置"模块进行验收。
验收范围:
server_backend/modules/Config/models.py
server_backend/modules/Config/views_app/KnowledgePoint.py
server_vue3/src/views/modules/Config/KnowledgePoint/index.vue
server_vue3/src/views/modules/Config/KnowledgePoint/api.ts
server_vue3/src/views/modules/Config/KnowledgePoint/crud.tsx
server_vue3/src/views/modules/Config/KnowledgePoint/components/InitKnowledgePointDialog.vue
docs/modules/知识点配置/api.md
docs/modules/知识点配置/test-cases.md
验收维度:
1. 业务目标:是否能维护知识点层级。
2. 页面结构:是否包含树表、初始化入口和清空确认。
3. 数据模型:KnowledgePoint 字段和树形关系是否正确。
4. 接口规则:列表、初始化、清空重置是否可用。
5. 权限控制:危险操作是否有权限与确认。
6. 数据联动:pcode_count、hasChildren、pcode、level 是否一致。
7. 知识点初始化:内置 JSON 初始化是否可验收。
8. 测试用例:是否覆盖成功路径和失败路径。
输出验收结果表,标记通过、未通过和需要修复的文件位置。不要只给结论,需要指出具体问题、影响范围和修复建议。
总结
知识点配置不是普通字典表,而是教育管理系统中支撑题库、考试分析和教学资源关联的知识体系闭环。它通过 code、pcode 和 level 维护层级,通过学段和学科字段保证业务口径统一。
用 Codex 开发该模块时,PDD 负责定义树形结构和验收标准,SOP 负责约束目录结构和开发顺序,Prompt 负责把模型、接口、页面、权限、数据联动和初始化能力拆成分阶段任务。这样生成的代码更容易支撑真实教学与考试业务。