【Codex】用GPT提示词模块管理教育场景AI提示词资产

管理可复用 Prompt 模板、分类标签、角色说明和模型调用前的提示词文本。它在教育管理系统里承担内容沉淀、资源配置或业务流转职责,后续页面、接口和权限都需要围绕这条业务主线设计。

本文基于 ArticleProjectPrompt、ArticleProjectPromptCategory 和 ArticleProjectPrompt 前端页面 的真实代码,说明如何把GPT提示词需求拆成模型字段、接口规则、页面交互、扩展能力和验收标准,再转换成 Codex 可以执行的项目代码生成任务。

文章目录

设计与需求

GPT提示词不能只按普通 CRUD 理解。源码范围包括 server_backend/modules/Article/models.py、server_backend/modules/Article/views_app/ArticleProjectPrompt.py、server_backend/modules/Article/views_app/ArticleProjectPromptCategory.py,前端范围包括 server_vue3/src/views/modules/Article/ArticleProjectPrompt/index.vue、api.ts、apiCategory.ts、crud.tsx、components/CategoryTreeCom/index.vue。交给 Codex 的任务需要明确业务字段、接口前缀、页面回显和权限边界,避免后端字段、前端表单和 PDD 文档相互脱节。
#mermaid-svg-51fFMTwGqmj9aNSB{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-51fFMTwGqmj9aNSB .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-51fFMTwGqmj9aNSB .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-51fFMTwGqmj9aNSB .error-icon{fill:#552222;}#mermaid-svg-51fFMTwGqmj9aNSB .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-51fFMTwGqmj9aNSB .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-51fFMTwGqmj9aNSB .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-51fFMTwGqmj9aNSB .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-51fFMTwGqmj9aNSB .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-51fFMTwGqmj9aNSB .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-51fFMTwGqmj9aNSB .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-51fFMTwGqmj9aNSB .marker{fill:#333333;stroke:#333333;}#mermaid-svg-51fFMTwGqmj9aNSB .marker.cross{stroke:#333333;}#mermaid-svg-51fFMTwGqmj9aNSB svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-51fFMTwGqmj9aNSB p{margin:0;}#mermaid-svg-51fFMTwGqmj9aNSB .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-51fFMTwGqmj9aNSB .cluster-label text{fill:#333;}#mermaid-svg-51fFMTwGqmj9aNSB .cluster-label span{color:#333;}#mermaid-svg-51fFMTwGqmj9aNSB .cluster-label span p{background-color:transparent;}#mermaid-svg-51fFMTwGqmj9aNSB .label text,#mermaid-svg-51fFMTwGqmj9aNSB span{fill:#333;color:#333;}#mermaid-svg-51fFMTwGqmj9aNSB .node rect,#mermaid-svg-51fFMTwGqmj9aNSB .node circle,#mermaid-svg-51fFMTwGqmj9aNSB .node ellipse,#mermaid-svg-51fFMTwGqmj9aNSB .node polygon,#mermaid-svg-51fFMTwGqmj9aNSB .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-51fFMTwGqmj9aNSB .rough-node .label text,#mermaid-svg-51fFMTwGqmj9aNSB .node .label text,#mermaid-svg-51fFMTwGqmj9aNSB .image-shape .label,#mermaid-svg-51fFMTwGqmj9aNSB .icon-shape .label{text-anchor:middle;}#mermaid-svg-51fFMTwGqmj9aNSB .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-51fFMTwGqmj9aNSB .rough-node .label,#mermaid-svg-51fFMTwGqmj9aNSB .node .label,#mermaid-svg-51fFMTwGqmj9aNSB .image-shape .label,#mermaid-svg-51fFMTwGqmj9aNSB .icon-shape .label{text-align:center;}#mermaid-svg-51fFMTwGqmj9aNSB .node.clickable{cursor:pointer;}#mermaid-svg-51fFMTwGqmj9aNSB .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-51fFMTwGqmj9aNSB .arrowheadPath{fill:#333333;}#mermaid-svg-51fFMTwGqmj9aNSB .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-51fFMTwGqmj9aNSB .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-51fFMTwGqmj9aNSB .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-51fFMTwGqmj9aNSB .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-51fFMTwGqmj9aNSB .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-51fFMTwGqmj9aNSB .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-51fFMTwGqmj9aNSB .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-51fFMTwGqmj9aNSB .cluster text{fill:#333;}#mermaid-svg-51fFMTwGqmj9aNSB .cluster span{color:#333;}#mermaid-svg-51fFMTwGqmj9aNSB div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-51fFMTwGqmj9aNSB .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-51fFMTwGqmj9aNSB rect.text{fill:none;stroke-width:0;}#mermaid-svg-51fFMTwGqmj9aNSB .icon-shape,#mermaid-svg-51fFMTwGqmj9aNSB .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-51fFMTwGqmj9aNSB .icon-shape p,#mermaid-svg-51fFMTwGqmj9aNSB .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-51fFMTwGqmj9aNSB .icon-shape .label rect,#mermaid-svg-51fFMTwGqmj9aNSB .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-51fFMTwGqmj9aNSB .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-51fFMTwGqmj9aNSB .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-51fFMTwGqmj9aNSB :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-51fFMTwGqmj9aNSB .input>*{fill:#EEF4FF!important;stroke:#5B8FF9!important;color:#1D39C4!important;stroke-width:1.2px!important;}#mermaid-svg-51fFMTwGqmj9aNSB .input span{fill:#EEF4FF!important;stroke:#5B8FF9!important;color:#1D39C4!important;stroke-width:1.2px!important;}#mermaid-svg-51fFMTwGqmj9aNSB .input tspan{fill:#1D39C4!important;}#mermaid-svg-51fFMTwGqmj9aNSB .design>*{fill:#F6FFED!important;stroke:#52C41A!important;color:#237804!important;stroke-width:1.2px!important;}#mermaid-svg-51fFMTwGqmj9aNSB .design span{fill:#F6FFED!important;stroke:#52C41A!important;color:#237804!important;stroke-width:1.2px!important;}#mermaid-svg-51fFMTwGqmj9aNSB .design tspan{fill:#237804!important;}#mermaid-svg-51fFMTwGqmj9aNSB .process>*{fill:#FFF7E6!important;stroke:#FA8C16!important;color:#AD4E00!important;stroke-width:1.2px!important;}#mermaid-svg-51fFMTwGqmj9aNSB .process span{fill:#FFF7E6!important;stroke:#FA8C16!important;color:#AD4E00!important;stroke-width:1.2px!important;}#mermaid-svg-51fFMTwGqmj9aNSB .process tspan{fill:#AD4E00!important;}#mermaid-svg-51fFMTwGqmj9aNSB .check>*{fill:#F9F0FF!important;stroke:#722ED1!important;color:#531DAB!important;stroke-width:1.2px!important;}#mermaid-svg-51fFMTwGqmj9aNSB .check span{fill:#F9F0FF!important;stroke:#722ED1!important;color:#531DAB!important;stroke-width:1.2px!important;}#mermaid-svg-51fFMTwGqmj9aNSB .check tspan{fill:#531DAB!important;}#mermaid-svg-51fFMTwGqmj9aNSB .output>*{fill:#E6FFFB!important;stroke:#13C2C2!important;color:#006D75!important;stroke-width:1.2px!important;}#mermaid-svg-51fFMTwGqmj9aNSB .output span{fill:#E6FFFB!important;stroke:#13C2C2!important;color:#006D75!important;stroke-width:1.2px!important;}#mermaid-svg-51fFMTwGqmj9aNSB .output tspan{fill:#006D75!important;} 教育管理需求
GPT提示词设计
页面结构
数据模型
接口规则
权限验收
Codex生成代码
模块交付

需求层描述 设计层转换 Codex 代码生成方向
业务目标 管理可复用 Prompt 模板、分类标签、角色说明和模型调用前的提示词文本。 生成模块入口、页面结构和业务说明
数据模型 ArticleProjectPrompt 字段覆盖 category_prompt、group_prompt、emoji_prompt、name_prompt、start_prompt、end_prompt、image_prompt、info_prompt 生成序列化、字段校验、查询筛选和保存回显
页面结构 server_vue3/src/views/modules/Article/ArticleProjectPrompt/index.vue、api.ts、apiCategory.ts、crud.tsx、components/CategoryTreeCom/index.vue 生成列表、筛选区、表单、详情或自定义操作区
接口规则 /api/Article/ArticleProjectPrompt/、/api/Article/ArticleProjectPrompt/update_fixture/、/api/Article/ArticleProjectPrompt/export_fixture/、/api/Article/ArticleProjectPromptCategory/ 保持前端封装、后端 action 和路由注册一致
权限验收 按钮权限、接口权限、用户数据范围、异常响应 在 PDD 中列出角色、接口和越权用例
扩展能力 数据联动、Prompt模板管理、导入导出、文件管理 只实现源码中真实存在的扩展入口和服务边界

更适合交给 Codex 的需求说明,应覆盖源码路径、字段、接口和验收口径。GPT提示词的重点是把 ArticleProjectPrompt 与前端接口封装、列表配置、表单状态和自定义页面逻辑合并成一个可测试的模块任务。

可以直接使用下面的Prompt进行模块功能的设计

text 复制代码
请 Codex 基于教育管理系统真实源码设计"GPT提示词"模块。

业务说明:管理可复用 Prompt 模板、分类标签、角色说明和模型调用前的提示词文本。
后端源码:server_backend/modules/Article/models.py、server_backend/modules/Article/views_app/ArticleProjectPrompt.py、server_backend/modules/Article/views_app/ArticleProjectPromptCategory.py
前端源码:server_vue3/src/views/modules/Article/ArticleProjectPrompt/index.vue、api.ts、apiCategory.ts、crud.tsx、components/CategoryTreeCom/index.vue
模型对象:ArticleProjectPrompt
字段范围:category_prompt、group_prompt、emoji_prompt、name_prompt、start_prompt、end_prompt、image_prompt、info_prompt
接口范围:/api/Article/ArticleProjectPrompt/、/api/Article/ArticleProjectPrompt/update_fixture/、/api/Article/ArticleProjectPrompt/export_fixture/、/api/Article/ArticleProjectPromptCategory/
扩展能力边界:数据联动、Prompt模板管理、导入导出、文件管理

请输出模块页面结构、数据模型、接口规则、权限验收、测试用例和 Codex 代码生成任务。只允许使用源码中存在的字段、接口和页面状态。

后端设计

GPT提示词的后端设计重点不是堆 CRUD 接口,而是建立可复用的数据底座。Codex 需要识别 ArticleProjectPrompt 的字段、序列化器、ViewSet、筛选逻辑和自定义 action,并让接口返回结构稳定服务前端。

后端 update_fixture 会读取 modules/Article/init_data 下的 article_articleprojectcategory.jsonarticle_articleprojectprompt.json,通过事务重建分类与提示词数据;export_fixture 会把两份 JSON 写回 init_data 并打包为 ZIP 交给下载中心。

后端设计项 设计重点 Codex 生成方向
核心字段 category_prompt、group_prompt、emoji_prompt、name_prompt、start_prompt、end_prompt、image_prompt、info_prompt 生成序列化、查询筛选、表单回显和保存校验
接口视图 server_backend/modules/Article/models.py、server_backend/modules/Article/views_app/ArticleProjectPrompt.py、server_backend/modules/Article/views_app/ArticleProjectPromptCategory.py 注册列表、详情、保存、软删除和已有 action
查询筛选 按后端 filterset_class 与前端查询项保持一致 生成筛选参数、模糊查询和关联查询
权限控制 使用当前项目权限体系约束新增、编辑、删除和自定义按钮 生成前后端一致的权限点
异常处理 参数缺失、记录不存在、权限不足、任务失败要返回明确消息 生成可验收错误响应

可以直接使用下面的Prompt进行后端代码的设计

text 复制代码
请为教育管理系统的GPT提示词模块设计或补齐后端代码。

后端源码范围:server_backend/modules/Article/models.py、server_backend/modules/Article/views_app/ArticleProjectPrompt.py、server_backend/modules/Article/views_app/ArticleProjectPromptCategory.py
模型或查询对象:ArticleProjectPrompt
字段范围:category_prompt、group_prompt、emoji_prompt、name_prompt、start_prompt、end_prompt、image_prompt、info_prompt
接口范围:/api/Article/ArticleProjectPrompt/、/api/Article/ArticleProjectPrompt/update_fixture/、/api/Article/ArticleProjectPrompt/export_fixture/、/api/Article/ArticleProjectPromptCategory/

请按当前项目技术栈生成模型字段、序列化规则、接口视图、路由注册、筛选查询、权限控制和基础校验。自定义 action 只能来自源码或 PDD 明确说明,不能额外增加不存在的业务入口。

后端 `update_fixture` 会读取 `modules/Article/init_data` 下的 `article_articleprojectcategory.json` 和 `article_articleprojectprompt.json`,通过事务重建分类与提示词数据;`export_fixture` 会把两份 JSON 写回 init_data 并打包为 ZIP 交给下载中心。

请保证新增、编辑、详情返回、列表查询、软删除、权限校验和异常响应字段一致。

前端设计

GPT提示词的前端设计重点不是把字段堆到页面上,而是让用户能按业务路径完成查询、编辑、状态处理和结果确认。当前前端范围包括 server_vue3/src/views/modules/Article/ArticleProjectPrompt/index.vue、api.ts、apiCategory.ts、crud.tsx、components/CategoryTreeCom/index.vue,其中 api.ts 负责接口封装,crud.tsxindex.vue 负责列表、表单、自定义布局和按钮交互。

前端需要同时处理提示词列表和分类树。apiCategory.ts 提供分类接口,CategoryTreeCom 负责分类选择,crud.tsx 负责提示词字段、表单保存和筛选回显。

前端设计项 设计重点 Codex 生成方向
页面结构 server_vue3/src/views/modules/Article/ArticleProjectPrompt/index.vue、api.ts、apiCategory.ts、crud.tsx、components/CategoryTreeCom/index.vue 生成列表、筛选区、表单、详情抽屉或自定义操作区
接口封装 /api/Article/ArticleProjectPrompt/、/api/Article/ArticleProjectPrompt/update_fixture/、/api/Article/ArticleProjectPrompt/export_fixture/、/api/Article/ArticleProjectPromptCategory/ 统一封装查询、详情、保存、删除和已有 action
表单结构 按 category_prompt、group_prompt、emoji_prompt、name_prompt、start_prompt、end_prompt、image_prompt、info_prompt 组织新增、编辑和回显字段 生成字段组件、校验规则和保存载荷
列表查询 与后端 filterset_class 和 SearchFilter 对齐 生成查询项、分页、刷新和重置逻辑
权限按钮 按当前项目 authv-permission 控制操作入口 生成按钮显示和禁用逻辑

可以直接使用下面的Prompt进行前端代码的设计

text 复制代码
请为教育管理系统的GPT提示词模块设计或补齐前端代码。

前端源码范围:server_vue3/src/views/modules/Article/ArticleProjectPrompt/index.vue、api.ts、apiCategory.ts、crud.tsx、components/CategoryTreeCom/index.vue
接口范围:/api/Article/ArticleProjectPrompt/、/api/Article/ArticleProjectPrompt/update_fixture/、/api/Article/ArticleProjectPrompt/export_fixture/、/api/Article/ArticleProjectPromptCategory/
字段范围:category_prompt、group_prompt、emoji_prompt、name_prompt、start_prompt、end_prompt、image_prompt、info_prompt
扩展能力边界:数据联动、Prompt模板管理、导入导出、文件管理

请生成页面结构、列表查询、筛选区域、新增编辑表单、详情预览、权限按钮、保存回显和接口调用。前端字段必须与后端模型和序列化字段一致。

前端需要同时处理提示词列表和分类树。`apiCategory.ts` 提供分类接口,`CategoryTreeCom` 负责分类选择,`crud.tsx` 负责提示词字段、表单保存和筛选回显。

如果源码中存在扩展能力,请只加入真实交互入口,例如分类树、导入导出、下载中心任务、批量处理、资源预览、购买确认或统计面板。源码没有的能力不要写入页面。

扩展功能

GPT提示词 的扩展能力都来自当前源码,不按固定模板硬套。它们超出普通 CRUD 的地方在于,需要把字段、接口、页面状态和结果回显串成业务闭环。

扩展功能 主要用途 落地重点
数据联动 让左侧分类树、右侧提示词列表、分类字段和保存回显保持一致 category_prompt、分类树筛选、表单回填和列表刷新
Prompt模板管理 维护 start_prompt、end_prompt、info_prompt 等可复用提示词模板 模板字段保存、分类归档、初始化数据和导出数据一致
导入导出 通过 update_fixture 和 export_fixture 初始化或导出分类与提示词 JSON 数据包 JSON 文件读取、事务重建、下载中心任务和数量统计
文件管理 将导出的提示词数据包交给下载中心管理 ZIP 文件字节、任务名称、download_center_id 和错误响应

数据联动

GPT提示词的数据联动来自源码中已经存在的字段、接口或前端交互。它的作用是让左侧分类树、右侧提示词列表、分类字段和保存回显保持一致,落地时要关注category_prompt、分类树筛选、表单回填和列表刷新,不能为了文章结构把未实现的能力写成需求。
#mermaid-svg-3NEbda7IcXdA1BXB{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-3NEbda7IcXdA1BXB .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-3NEbda7IcXdA1BXB .error-icon{fill:#552222;}#mermaid-svg-3NEbda7IcXdA1BXB .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-3NEbda7IcXdA1BXB .marker{fill:#333333;stroke:#333333;}#mermaid-svg-3NEbda7IcXdA1BXB .marker.cross{stroke:#333333;}#mermaid-svg-3NEbda7IcXdA1BXB svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-3NEbda7IcXdA1BXB p{margin:0;}#mermaid-svg-3NEbda7IcXdA1BXB .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster-label text{fill:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster-label span{color:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster-label span p{background-color:transparent;}#mermaid-svg-3NEbda7IcXdA1BXB .label text,#mermaid-svg-3NEbda7IcXdA1BXB span{fill:#333;color:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .node rect,#mermaid-svg-3NEbda7IcXdA1BXB .node circle,#mermaid-svg-3NEbda7IcXdA1BXB .node ellipse,#mermaid-svg-3NEbda7IcXdA1BXB .node polygon,#mermaid-svg-3NEbda7IcXdA1BXB .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-3NEbda7IcXdA1BXB .rough-node .label text,#mermaid-svg-3NEbda7IcXdA1BXB .node .label text,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape .label,#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape .label{text-anchor:middle;}#mermaid-svg-3NEbda7IcXdA1BXB .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-3NEbda7IcXdA1BXB .rough-node .label,#mermaid-svg-3NEbda7IcXdA1BXB .node .label,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape .label,#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape .label{text-align:center;}#mermaid-svg-3NEbda7IcXdA1BXB .node.clickable{cursor:pointer;}#mermaid-svg-3NEbda7IcXdA1BXB .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-3NEbda7IcXdA1BXB .arrowheadPath{fill:#333333;}#mermaid-svg-3NEbda7IcXdA1BXB .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-3NEbda7IcXdA1BXB .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-3NEbda7IcXdA1BXB .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3NEbda7IcXdA1BXB .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-3NEbda7IcXdA1BXB .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3NEbda7IcXdA1BXB .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-3NEbda7IcXdA1BXB .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster text{fill:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster span{color:#333;}#mermaid-svg-3NEbda7IcXdA1BXB div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-3NEbda7IcXdA1BXB .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-3NEbda7IcXdA1BXB rect.text{fill:none;stroke-width:0;}#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape p,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape .label rect,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3NEbda7IcXdA1BXB .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-3NEbda7IcXdA1BXB .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-3NEbda7IcXdA1BXB :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-3NEbda7IcXdA1BXB .input>*{fill:#EEF4FF!important;stroke:#5B8FF9!important;color:#1D39C4!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .input span{fill:#EEF4FF!important;stroke:#5B8FF9!important;color:#1D39C4!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .input tspan{fill:#1D39C4!important;}#mermaid-svg-3NEbda7IcXdA1BXB .process>*{fill:#FFF7E6!important;stroke:#FA8C16!important;color:#AD4E00!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .process span{fill:#FFF7E6!important;stroke:#FA8C16!important;color:#AD4E00!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .process tspan{fill:#AD4E00!important;}#mermaid-svg-3NEbda7IcXdA1BXB .output>*{fill:#E6FFFB!important;stroke:#13C2C2!important;color:#006D75!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .output span{fill:#E6FFFB!important;stroke:#13C2C2!important;color:#006D75!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .output tspan{fill:#006D75!important;} 结果阶段
处理阶段
输入阶段
业务输入
筛选条件
组装参数
请求接口
转换字段
刷新列表
结果回显

交给 Codex 生成时,边界要写清楚:只处理当前模块源码中已经存在的字段和接口,后端返回结构、前端保存载荷和页面回显必须同名对齐。涉及批量、导出、下载中心或异步任务时,需要返回可检查的统计字段,方便 PDD 验收定位问题。

可以直接使用下面的Prompt进行数据联动设计

text 复制代码
请为教育管理系统的GPT提示词模块实现数据联动。

能力用途:让左侧分类树、右侧提示词列表、分类字段和保存回显保持一致。
落地重点:`category_prompt`、分类树筛选、表单回填和列表刷新。

请读取当前模块源码路径、后端 ViewSet、自定义 action、前端 api.ts、crud.tsx 或 index.vue,按真实字段和真实接口补齐实现。不得新增源码中不存在的 LLM、OCR、审批、统计、导入导出、文件预览等能力。

需要实现分类树点击后筛选 ArticleProjectPrompt,新增或编辑时 category_prompt 与 ArticleProjectCategory 保持一致,保存后刷新当前分类列表。

请输出需要修改的文件、核心字段映射、接口参数、返回结构、前端交互、错误处理和验收用例。

Prompt模板管理

GPT提示词的Prompt模板管理来自源码中已经存在的字段、接口或前端交互。它的作用是维护 start_prompt、end_prompt、info_prompt 等可复用提示词模板,落地时要关注模板字段保存、分类归档、初始化数据和导出数据一致,不能为了文章结构把未实现的能力写成需求。
#mermaid-svg-3NEbda7IcXdA1BXB{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-3NEbda7IcXdA1BXB .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-3NEbda7IcXdA1BXB .error-icon{fill:#552222;}#mermaid-svg-3NEbda7IcXdA1BXB .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-3NEbda7IcXdA1BXB .marker{fill:#333333;stroke:#333333;}#mermaid-svg-3NEbda7IcXdA1BXB .marker.cross{stroke:#333333;}#mermaid-svg-3NEbda7IcXdA1BXB svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-3NEbda7IcXdA1BXB p{margin:0;}#mermaid-svg-3NEbda7IcXdA1BXB .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster-label text{fill:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster-label span{color:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster-label span p{background-color:transparent;}#mermaid-svg-3NEbda7IcXdA1BXB .label text,#mermaid-svg-3NEbda7IcXdA1BXB span{fill:#333;color:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .node rect,#mermaid-svg-3NEbda7IcXdA1BXB .node circle,#mermaid-svg-3NEbda7IcXdA1BXB .node ellipse,#mermaid-svg-3NEbda7IcXdA1BXB .node polygon,#mermaid-svg-3NEbda7IcXdA1BXB .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-3NEbda7IcXdA1BXB .rough-node .label text,#mermaid-svg-3NEbda7IcXdA1BXB .node .label text,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape .label,#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape .label{text-anchor:middle;}#mermaid-svg-3NEbda7IcXdA1BXB .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-3NEbda7IcXdA1BXB .rough-node .label,#mermaid-svg-3NEbda7IcXdA1BXB .node .label,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape .label,#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape .label{text-align:center;}#mermaid-svg-3NEbda7IcXdA1BXB .node.clickable{cursor:pointer;}#mermaid-svg-3NEbda7IcXdA1BXB .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-3NEbda7IcXdA1BXB .arrowheadPath{fill:#333333;}#mermaid-svg-3NEbda7IcXdA1BXB .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-3NEbda7IcXdA1BXB .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-3NEbda7IcXdA1BXB .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3NEbda7IcXdA1BXB .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-3NEbda7IcXdA1BXB .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3NEbda7IcXdA1BXB .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-3NEbda7IcXdA1BXB .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster text{fill:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster span{color:#333;}#mermaid-svg-3NEbda7IcXdA1BXB div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-3NEbda7IcXdA1BXB .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-3NEbda7IcXdA1BXB rect.text{fill:none;stroke-width:0;}#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape p,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape .label rect,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3NEbda7IcXdA1BXB .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-3NEbda7IcXdA1BXB .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-3NEbda7IcXdA1BXB :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-3NEbda7IcXdA1BXB .input>*{fill:#EEF4FF!important;stroke:#5B8FF9!important;color:#1D39C4!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .input span{fill:#EEF4FF!important;stroke:#5B8FF9!important;color:#1D39C4!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .input tspan{fill:#1D39C4!important;}#mermaid-svg-3NEbda7IcXdA1BXB .process>*{fill:#FFF7E6!important;stroke:#FA8C16!important;color:#AD4E00!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .process span{fill:#FFF7E6!important;stroke:#FA8C16!important;color:#AD4E00!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .process tspan{fill:#AD4E00!important;}#mermaid-svg-3NEbda7IcXdA1BXB .output>*{fill:#E6FFFB!important;stroke:#13C2C2!important;color:#006D75!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .output span{fill:#E6FFFB!important;stroke:#13C2C2!important;color:#006D75!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .output tspan{fill:#006D75!important;} 结果阶段
处理阶段
输入阶段
业务输入
筛选条件
组装参数
请求接口
转换字段
刷新列表
结果回显

交给 Codex 生成时,边界要写清楚:只处理当前模块源码中已经存在的字段和接口,后端返回结构、前端保存载荷和页面回显必须同名对齐。涉及批量、导出、下载中心或异步任务时,需要返回可检查的统计字段,方便 PDD 验收定位问题。

可以直接使用下面的Prompt进行LLM功能设计

text 复制代码
请为教育管理系统的GPT提示词模块实现Prompt模板管理。

能力用途:维护 start_prompt、end_prompt、info_prompt 等可复用提示词模板。
落地重点:模板字段保存、分类归档、初始化数据和导出数据一致。

请读取当前模块源码路径、后端 ViewSet、自定义 action、前端 api.ts、crud.tsx 或 index.vue,按真实字段和真实接口补齐实现。不得新增源码中不存在的 LLM、OCR、审批、统计、导入导出、文件预览等能力。

该模块只管理 Prompt 模板,不直接调用模型生成内容。请重点实现模板字段校验、分类归档、初始化 fixture 和导出 fixture。

请输出需要修改的文件、核心字段映射、接口参数、返回结构、前端交互、错误处理和验收用例。

导入导出

GPT提示词的导入导出来自源码中已经存在的字段、接口或前端交互。它的作用是通过 update_fixture 和 export_fixture 初始化或导出分类与提示词 JSON 数据包,落地时要关注JSON 文件读取、事务重建、下载中心任务和数量统计,不能为了文章结构把未实现的能力写成需求。
#mermaid-svg-3NEbda7IcXdA1BXB{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-3NEbda7IcXdA1BXB .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-3NEbda7IcXdA1BXB .error-icon{fill:#552222;}#mermaid-svg-3NEbda7IcXdA1BXB .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-3NEbda7IcXdA1BXB .marker{fill:#333333;stroke:#333333;}#mermaid-svg-3NEbda7IcXdA1BXB .marker.cross{stroke:#333333;}#mermaid-svg-3NEbda7IcXdA1BXB svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-3NEbda7IcXdA1BXB p{margin:0;}#mermaid-svg-3NEbda7IcXdA1BXB .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster-label text{fill:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster-label span{color:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster-label span p{background-color:transparent;}#mermaid-svg-3NEbda7IcXdA1BXB .label text,#mermaid-svg-3NEbda7IcXdA1BXB span{fill:#333;color:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .node rect,#mermaid-svg-3NEbda7IcXdA1BXB .node circle,#mermaid-svg-3NEbda7IcXdA1BXB .node ellipse,#mermaid-svg-3NEbda7IcXdA1BXB .node polygon,#mermaid-svg-3NEbda7IcXdA1BXB .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-3NEbda7IcXdA1BXB .rough-node .label text,#mermaid-svg-3NEbda7IcXdA1BXB .node .label text,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape .label,#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape .label{text-anchor:middle;}#mermaid-svg-3NEbda7IcXdA1BXB .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-3NEbda7IcXdA1BXB .rough-node .label,#mermaid-svg-3NEbda7IcXdA1BXB .node .label,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape .label,#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape .label{text-align:center;}#mermaid-svg-3NEbda7IcXdA1BXB .node.clickable{cursor:pointer;}#mermaid-svg-3NEbda7IcXdA1BXB .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-3NEbda7IcXdA1BXB .arrowheadPath{fill:#333333;}#mermaid-svg-3NEbda7IcXdA1BXB .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-3NEbda7IcXdA1BXB .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-3NEbda7IcXdA1BXB .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3NEbda7IcXdA1BXB .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-3NEbda7IcXdA1BXB .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3NEbda7IcXdA1BXB .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-3NEbda7IcXdA1BXB .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster text{fill:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster span{color:#333;}#mermaid-svg-3NEbda7IcXdA1BXB div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-3NEbda7IcXdA1BXB .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-3NEbda7IcXdA1BXB rect.text{fill:none;stroke-width:0;}#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape p,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape .label rect,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3NEbda7IcXdA1BXB .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-3NEbda7IcXdA1BXB .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-3NEbda7IcXdA1BXB :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-3NEbda7IcXdA1BXB .input>*{fill:#EEF4FF!important;stroke:#5B8FF9!important;color:#1D39C4!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .input span{fill:#EEF4FF!important;stroke:#5B8FF9!important;color:#1D39C4!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .input tspan{fill:#1D39C4!important;}#mermaid-svg-3NEbda7IcXdA1BXB .process>*{fill:#FFF7E6!important;stroke:#FA8C16!important;color:#AD4E00!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .process span{fill:#FFF7E6!important;stroke:#FA8C16!important;color:#AD4E00!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .process tspan{fill:#AD4E00!important;}#mermaid-svg-3NEbda7IcXdA1BXB .output>*{fill:#E6FFFB!important;stroke:#13C2C2!important;color:#006D75!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .output span{fill:#E6FFFB!important;stroke:#13C2C2!important;color:#006D75!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .output tspan{fill:#006D75!important;} 结果阶段
处理阶段
输入阶段
业务输入
筛选条件
组装参数
请求接口
转换字段
刷新列表
结果回显

交给 Codex 生成时,边界要写清楚:只处理当前模块源码中已经存在的字段和接口,后端返回结构、前端保存载荷和页面回显必须同名对齐。涉及批量、导出、下载中心或异步任务时,需要返回可检查的统计字段,方便 PDD 验收定位问题。

可以直接使用下面的Prompt进行导入导出功能设计

text 复制代码
请为教育管理系统的GPT提示词模块实现导入导出。

能力用途:通过 update_fixture 和 export_fixture 初始化或导出分类与提示词 JSON 数据包。
落地重点:JSON 文件读取、事务重建、下载中心任务和数量统计。

请读取当前模块源码路径、后端 ViewSet、自定义 action、前端 api.ts、crud.tsx 或 index.vue,按真实字段和真实接口补齐实现。不得新增源码中不存在的 LLM、OCR、审批、统计、导入导出、文件预览等能力。

update_fixture 读取 modules/Article/init_data 下的分类与提示词 JSON,事务清空并 bulk_create。export_fixture 生成 JSON 与 ZIP,并通过下载中心返回 download_center_id。

请输出需要修改的文件、核心字段映射、接口参数、返回结构、前端交互、错误处理和验收用例。

文件管理

GPT提示词的文件管理来自源码中已经存在的字段、接口或前端交互。它的作用是将导出的提示词数据包交给下载中心管理,落地时要关注ZIP 文件字节、任务名称、download_center_id 和错误响应,不能为了文章结构把未实现的能力写成需求。
#mermaid-svg-3NEbda7IcXdA1BXB{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-3NEbda7IcXdA1BXB .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-3NEbda7IcXdA1BXB .error-icon{fill:#552222;}#mermaid-svg-3NEbda7IcXdA1BXB .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-3NEbda7IcXdA1BXB .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-3NEbda7IcXdA1BXB .marker{fill:#333333;stroke:#333333;}#mermaid-svg-3NEbda7IcXdA1BXB .marker.cross{stroke:#333333;}#mermaid-svg-3NEbda7IcXdA1BXB svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-3NEbda7IcXdA1BXB p{margin:0;}#mermaid-svg-3NEbda7IcXdA1BXB .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster-label text{fill:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster-label span{color:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster-label span p{background-color:transparent;}#mermaid-svg-3NEbda7IcXdA1BXB .label text,#mermaid-svg-3NEbda7IcXdA1BXB span{fill:#333;color:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .node rect,#mermaid-svg-3NEbda7IcXdA1BXB .node circle,#mermaid-svg-3NEbda7IcXdA1BXB .node ellipse,#mermaid-svg-3NEbda7IcXdA1BXB .node polygon,#mermaid-svg-3NEbda7IcXdA1BXB .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-3NEbda7IcXdA1BXB .rough-node .label text,#mermaid-svg-3NEbda7IcXdA1BXB .node .label text,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape .label,#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape .label{text-anchor:middle;}#mermaid-svg-3NEbda7IcXdA1BXB .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-3NEbda7IcXdA1BXB .rough-node .label,#mermaid-svg-3NEbda7IcXdA1BXB .node .label,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape .label,#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape .label{text-align:center;}#mermaid-svg-3NEbda7IcXdA1BXB .node.clickable{cursor:pointer;}#mermaid-svg-3NEbda7IcXdA1BXB .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-3NEbda7IcXdA1BXB .arrowheadPath{fill:#333333;}#mermaid-svg-3NEbda7IcXdA1BXB .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-3NEbda7IcXdA1BXB .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-3NEbda7IcXdA1BXB .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3NEbda7IcXdA1BXB .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-3NEbda7IcXdA1BXB .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3NEbda7IcXdA1BXB .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-3NEbda7IcXdA1BXB .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster text{fill:#333;}#mermaid-svg-3NEbda7IcXdA1BXB .cluster span{color:#333;}#mermaid-svg-3NEbda7IcXdA1BXB div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-3NEbda7IcXdA1BXB .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-3NEbda7IcXdA1BXB rect.text{fill:none;stroke-width:0;}#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape p,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-3NEbda7IcXdA1BXB .icon-shape .label rect,#mermaid-svg-3NEbda7IcXdA1BXB .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3NEbda7IcXdA1BXB .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-3NEbda7IcXdA1BXB .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-3NEbda7IcXdA1BXB :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-3NEbda7IcXdA1BXB .input>*{fill:#EEF4FF!important;stroke:#5B8FF9!important;color:#1D39C4!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .input span{fill:#EEF4FF!important;stroke:#5B8FF9!important;color:#1D39C4!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .input tspan{fill:#1D39C4!important;}#mermaid-svg-3NEbda7IcXdA1BXB .process>*{fill:#FFF7E6!important;stroke:#FA8C16!important;color:#AD4E00!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .process span{fill:#FFF7E6!important;stroke:#FA8C16!important;color:#AD4E00!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .process tspan{fill:#AD4E00!important;}#mermaid-svg-3NEbda7IcXdA1BXB .output>*{fill:#E6FFFB!important;stroke:#13C2C2!important;color:#006D75!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .output span{fill:#E6FFFB!important;stroke:#13C2C2!important;color:#006D75!important;stroke-width:1.2px!important;}#mermaid-svg-3NEbda7IcXdA1BXB .output tspan{fill:#006D75!important;} 结果阶段
处理阶段
输入阶段
业务输入
筛选条件
组装参数
请求接口
转换字段
刷新列表
结果回显

交给 Codex 生成时,边界要写清楚:只处理当前模块源码中已经存在的字段和接口,后端返回结构、前端保存载荷和页面回显必须同名对齐。涉及批量、导出、下载中心或异步任务时,需要返回可检查的统计字段,方便 PDD 验收定位问题。

可以直接使用下面的Prompt进行文件管理功能设计

text 复制代码
请为教育管理系统的GPT提示词模块实现文件管理。

能力用途:将导出的提示词数据包交给下载中心管理。
落地重点:ZIP 文件字节、任务名称、download_center_id 和错误响应。

请读取当前模块源码路径、后端 ViewSet、自定义 action、前端 api.ts、crud.tsx 或 index.vue,按真实字段和真实接口补齐实现。不得新增源码中不存在的 LLM、OCR、审批、统计、导入导出、文件预览等能力。

导出结果不直接写页面下载链接,需调用 create_download_center_task 创建下载中心任务,并返回可追踪任务 ID。

请输出需要修改的文件、核心字段映射、接口参数、返回结构、前端交互、错误处理和验收用例。

Codex开发标准

使用 Codex 开发GPT提示词时,不能直接让它随意写代码,而要用需求边界、PDD、SOP、接口权限规则和验收标准约束开发过程。这个模块需要先读取源码上下文,再按后端、前端和真实扩展能力分阶段完成。
#mermaid-svg-1bsHj53zWmP8H8vw{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-1bsHj53zWmP8H8vw .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-1bsHj53zWmP8H8vw .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-1bsHj53zWmP8H8vw .error-icon{fill:#552222;}#mermaid-svg-1bsHj53zWmP8H8vw .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-1bsHj53zWmP8H8vw .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-1bsHj53zWmP8H8vw .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-1bsHj53zWmP8H8vw .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-1bsHj53zWmP8H8vw .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-1bsHj53zWmP8H8vw .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-1bsHj53zWmP8H8vw .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-1bsHj53zWmP8H8vw .marker{fill:#333333;stroke:#333333;}#mermaid-svg-1bsHj53zWmP8H8vw .marker.cross{stroke:#333333;}#mermaid-svg-1bsHj53zWmP8H8vw svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-1bsHj53zWmP8H8vw p{margin:0;}#mermaid-svg-1bsHj53zWmP8H8vw .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-1bsHj53zWmP8H8vw .cluster-label text{fill:#333;}#mermaid-svg-1bsHj53zWmP8H8vw .cluster-label span{color:#333;}#mermaid-svg-1bsHj53zWmP8H8vw .cluster-label span p{background-color:transparent;}#mermaid-svg-1bsHj53zWmP8H8vw .label text,#mermaid-svg-1bsHj53zWmP8H8vw span{fill:#333;color:#333;}#mermaid-svg-1bsHj53zWmP8H8vw .node rect,#mermaid-svg-1bsHj53zWmP8H8vw .node circle,#mermaid-svg-1bsHj53zWmP8H8vw .node ellipse,#mermaid-svg-1bsHj53zWmP8H8vw .node polygon,#mermaid-svg-1bsHj53zWmP8H8vw .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-1bsHj53zWmP8H8vw .rough-node .label text,#mermaid-svg-1bsHj53zWmP8H8vw .node .label text,#mermaid-svg-1bsHj53zWmP8H8vw .image-shape .label,#mermaid-svg-1bsHj53zWmP8H8vw .icon-shape .label{text-anchor:middle;}#mermaid-svg-1bsHj53zWmP8H8vw .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-1bsHj53zWmP8H8vw .rough-node .label,#mermaid-svg-1bsHj53zWmP8H8vw .node .label,#mermaid-svg-1bsHj53zWmP8H8vw .image-shape .label,#mermaid-svg-1bsHj53zWmP8H8vw .icon-shape .label{text-align:center;}#mermaid-svg-1bsHj53zWmP8H8vw .node.clickable{cursor:pointer;}#mermaid-svg-1bsHj53zWmP8H8vw .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-1bsHj53zWmP8H8vw .arrowheadPath{fill:#333333;}#mermaid-svg-1bsHj53zWmP8H8vw .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-1bsHj53zWmP8H8vw .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-1bsHj53zWmP8H8vw .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-1bsHj53zWmP8H8vw .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-1bsHj53zWmP8H8vw .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-1bsHj53zWmP8H8vw .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-1bsHj53zWmP8H8vw .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-1bsHj53zWmP8H8vw .cluster text{fill:#333;}#mermaid-svg-1bsHj53zWmP8H8vw .cluster span{color:#333;}#mermaid-svg-1bsHj53zWmP8H8vw div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-1bsHj53zWmP8H8vw .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-1bsHj53zWmP8H8vw rect.text{fill:none;stroke-width:0;}#mermaid-svg-1bsHj53zWmP8H8vw .icon-shape,#mermaid-svg-1bsHj53zWmP8H8vw .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-1bsHj53zWmP8H8vw .icon-shape p,#mermaid-svg-1bsHj53zWmP8H8vw .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-1bsHj53zWmP8H8vw .icon-shape .label rect,#mermaid-svg-1bsHj53zWmP8H8vw .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-1bsHj53zWmP8H8vw .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-1bsHj53zWmP8H8vw .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-1bsHj53zWmP8H8vw :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-1bsHj53zWmP8H8vw .input>*{fill:#EEF4FF!important;stroke:#5B8FF9!important;color:#1D39C4!important;stroke-width:1.2px!important;}#mermaid-svg-1bsHj53zWmP8H8vw .input span{fill:#EEF4FF!important;stroke:#5B8FF9!important;color:#1D39C4!important;stroke-width:1.2px!important;}#mermaid-svg-1bsHj53zWmP8H8vw .input tspan{fill:#1D39C4!important;}#mermaid-svg-1bsHj53zWmP8H8vw .design>*{fill:#F6FFED!important;stroke:#52C41A!important;color:#237804!important;stroke-width:1.2px!important;}#mermaid-svg-1bsHj53zWmP8H8vw .design span{fill:#F6FFED!important;stroke:#52C41A!important;color:#237804!important;stroke-width:1.2px!important;}#mermaid-svg-1bsHj53zWmP8H8vw .design tspan{fill:#237804!important;}#mermaid-svg-1bsHj53zWmP8H8vw .dev>*{fill:#FFF7E6!important;stroke:#FA8C16!important;color:#AD4E00!important;stroke-width:1.2px!important;}#mermaid-svg-1bsHj53zWmP8H8vw .dev span{fill:#FFF7E6!important;stroke:#FA8C16!important;color:#AD4E00!important;stroke-width:1.2px!important;}#mermaid-svg-1bsHj53zWmP8H8vw .dev tspan{fill:#AD4E00!important;}#mermaid-svg-1bsHj53zWmP8H8vw .check>*{fill:#F9F0FF!important;stroke:#722ED1!important;color:#531DAB!important;stroke-width:1.2px!important;}#mermaid-svg-1bsHj53zWmP8H8vw .check span{fill:#F9F0FF!important;stroke:#722ED1!important;color:#531DAB!important;stroke-width:1.2px!important;}#mermaid-svg-1bsHj53zWmP8H8vw .check tspan{fill:#531DAB!important;} 验收交付
Codex开发
模块设计
输入约束
需求边界
PDD设计
SOP目录规范
接口与权限规则
后端设计
前端设计
能力边界
读取上下文
生成后端代码
生成前端代码
补齐联动
功能自检
PDD验收
问题修复
模块交付

SOP 标准

SOP 用于约束代码目录、文件职责和开发顺序。GPT提示词需要沿用当前模块目录,不应另起一套平行实现。

text 复制代码
ManageBak-ExamEdu/
├── server_backend/
│   └── modules/
│       └── Article/
│           ├── models.py
│           ├── urls.py
│           ├── utils.py
│           └── views_app/
│               └── ArticleProjectPrompt.py
├── server_vue3/
│   └── src/
│       └── views/
│           └── modules/
│               └── Article/
│                   └── ArticleProjectPrompt/
│                       ├── index.vue
│                       ├── api.ts
│                       └── crud.tsx
└── docs/
    └── modules/
        └── article-ArticleProjectPrompt/
            ├── pdd.md
            ├── api.md
            ├── test-cases.md
            └── codex-sop.md
开发阶段 Codex 执行目标 输出结果
模块设计 明确GPT提示词的业务目标、字段、接口和页面结构 pdd.md
目录规划 按当前 Article 模块目录规划后端、前端和文档 codex-sop.md
后端实现 补齐模型、序列化、视图、筛选、路由和权限 后端模块代码
前端实现 补齐页面、接口封装、表格配置、表单和按钮 前端页面代码
数据联动 打通筛选、保存、回显和刷新 联动逻辑代码
扩展功能 补齐数据联动、Prompt模板管理、导入导出、文件管理 扩展能力代码与验收记录
验收修复 按 PDD 检查功能、接口、权限和数据回显 验收记录与修复提交

可以直接使用下面的Prompt进行SOP撰写

text 复制代码
请按照教育管理系统模块开发 SOP,从零实现或补齐GPT提示词模块。

开发前先输出目录结构,不要直接写代码。目录需要贴合当前项目:后端在 server_backend/modules/Article/,前端在 server_vue3/src/views/modules/Article/,文档在 docs/modules/article-ArticleProjectPrompt/。

请先生成 pdd.md、api.md、test-cases.md 和 codex-sop.md,再根据这些文档生成项目代码。文档需要明确字段、接口、权限、页面结构、扩展能力和验收规则。

实现过程中只允许使用源码中真实存在的能力:数据联动、Prompt模板管理、导入导出、文件管理。不要编造未在代码中出现的功能。

PDD 标准

PDD 是GPT提示词的模块设计与验收文档,用来约束 Codex 输出是否符合真实业务。验收不能只看页面能否打开,还要检查字段、接口、权限、保存回显和真实扩展能力。

验收维度 验收标准 不通过表现
业务目标 管理可复用 Prompt 模板、分类标签、角色说明和模型调用前的提示词文本。 只生成普通 CRUD,缺少业务字段说明
页面结构 页面包含列表、筛选、表单、权限按钮和必要交互 页面字段与源码不一致
数据模型 ArticleProjectPrompt 字段覆盖 category_prompt、group_prompt、emoji_prompt、name_prompt、start_prompt、end_prompt、image_prompt、info_prompt 保存或回显字段缺失
接口规则 /api/Article/ArticleProjectPrompt/、/api/Article/ArticleProjectPrompt/update_fixture/、/api/Article/ArticleProjectPrompt/export_fixture/、/api/Article/ArticleProjectPromptCategory/ 可被前端正确调用 页面有按钮但接口不存在
权限控制 新增、编辑、删除和自定义动作遵守当前权限体系 只隐藏按钮,接口层无约束
测试用例 覆盖查询、新增、编辑、删除、回显和异常处理 只有人工描述,没有验收路径
数据联动 让左侧分类树、右侧提示词列表、分类字段和保存回显保持一致,并能在前后端按真实字段验收 页面有入口但接口、字段或回显不一致
Prompt模板管理 维护 start_prompt、end_prompt、info_prompt 等可复用提示词模板,并能在前后端按真实字段验收 页面有入口但接口、字段或回显不一致
导入导出 通过 update_fixture 和 export_fixture 初始化或导出分类与提示词 JSON 数据包,并能在前后端按真实字段验收 页面有入口但接口、字段或回显不一致
文件管理 将导出的提示词数据包交给下载中心管理,并能在前后端按真实字段验收 页面有入口但接口、字段或回显不一致

可以直接使用下面的Prompt进行PDD 验收

text 复制代码
请根据 docs/modules/article-ArticleProjectPrompt/pdd.md 对GPT提示词模块进行 PDD 验收。

验收范围包括后端源码 server_backend/modules/Article/models.py、server_backend/modules/Article/views_app/ArticleProjectPrompt.py、server_backend/modules/Article/views_app/ArticleProjectPromptCategory.py,前端源码 server_vue3/src/views/modules/Article/ArticleProjectPrompt/index.vue、api.ts、apiCategory.ts、crud.tsx、components/CategoryTreeCom/index.vue。

请检查业务目标、页面结构、数据模型、接口规则、权限控制、测试用例和扩展能力。扩展能力范围限定为:数据联动、Prompt模板管理、导入导出、文件管理。

请输出验收结果表,标记通过、未通过和需要修复的文件位置。不要只给结论,需要指出具体问题、影响范围和修复建议。

总结

GPT提示词模块的开发价值,不在于生成一张能增删改查的后台表,而在于把管理可复用 Prompt 模板、分类标签、角色说明和模型调用前的提示词文本。沉淀成教育管理系统可维护、可验收的业务闭环。字段、接口、页面和权限保持一致,后续内容运营、资源管理和用户侧调用才有稳定基础。

使用 Codex 开发这类模块时,PDD 定义业务边界和验收标准,SOP 约束目录结构和开发顺序,Prompt 把页面、模型、接口、权限和真实扩展能力交给 Codex 分阶段实现。这样生成的代码更接近项目交付,而不是一次性演示页面。