
教育管理系统Tauri数据工作台模块用Codex生成项目代码
Tauri数据工作台不是业务指标页,而是教育管理系统中 Tauri 工具模块的入口聚合页。它根据菜单权限,把数据信息、配置信息、统计可视化、应用信息和系统使用等分区整理成可点击卡片。
本文基于 WorkbenchesViewSet、菜单权限查询、CommonWorkbenches 和 EachModuleWorkWorkbenche,说明如何把菜单树、权限过滤、分区卡片和路由跳转,转换成 Codex 可执行的项目代码生成任务。
文章目录
设计与需求
Tauri数据工作台不能按普通 CRUD 页面理解。它没有独立业务模型,后端使用 DummyModel.objects.none() 作为占位查询对象,真正的数据来自 Menu 和 RoleMenuPermission。server_backend/dvadmin/utils/workbenches.py 中的 WorkbenchesViewSet.web_router 会根据请求路径推导模块前缀,再按 Data、Setting、Statistics、Application、System 后缀读取菜单分组。Tauri 模块在 server_backend/modules/Tauri/urls.py 中注册 WorkbenchesViewSet,前端入口为 server_vue3/src/views/modules/Tauri/Workbenches/index.vue。
交给 Codex 的任务需要把"菜单入口聚合"拆成后端菜单查询、权限过滤、分组返回、前端卡片渲染和路由跳转。这里的 Statistics 是工作台分区名称,不代表该模块存在统计计算接口;文章和代码生成都应围绕菜单分组和权限可见性展开。
验收阶段
生成阶段
设计阶段
输入阶段
模块路径
菜单权限
源码上下文
菜单分组
权限过滤
卡片布局
路由跳转
读取源码
生成后端
生成前端
入口检查
PDD验收
| 需求层描述 | 设计层转换 | Codex 代码生成方向 |
|---|---|---|
| Tauri 模块需要统一入口 | server_vue3/src/views/modules/Tauri/Workbenches/index.vue 传入 /api/Tauri/Workbenches/web_router/。 |
生成工作台入口页面和通用组件调用。 |
| 后端需要按模块返回菜单分区 | web_router 根据请求路径组合 /TauriWorkbenchesData 等目标菜单路径。 |
生成路径解析、菜单查询、空结果处理和返回结构。 |
| 权限需要影响卡片可见性 | 非超级管理员按 RoleMenuPermission 过滤可见菜单。 |
生成角色菜单权限过滤和越权测试。 |
| 菜单需要分组展示 | _menu_block_serializer 将第一层目录作为分组,收集其下叶子菜单。 |
生成 label、value、children 分组数据。 |
| 前端需要卡片化导航 | EachModuleWorkWorkbenche.vue 用 tabs、分组标题和卡片渲染菜单。 |
生成卡片布局、图片回退、图标回退和路由跳转。 |
| 页面需要稳定回显 | ORDER 固定分区顺序,TITLE_MAP 映射中文标题。 |
生成分区排序、空状态和默认激活 tab。 |
可以直接使用下面的Prompt进行模块功能的设计
text
请 Codex 基于教育管理系统真实源码设计"Tauri数据工作台"模块。
模块定位:
Tauri数据工作台用于聚合 Tauri 工具模块的菜单入口。后端按当前用户菜单权限返回分区数据,前端用通用工作台组件渲染卡片并跳转到具体功能页面。
源码范围:
server_backend/dvadmin/utils/workbenches.py
server_backend/modules/Tauri/urls.py
server_backend/dvadmin/system/models.py
server_vue3/src/views/modules/Tauri/Workbenches/index.vue
server_vue3/src/components/commonWorkbenches/api.ts
server_vue3/src/components/commonWorkbenches/index.vue
server_vue3/src/views/system/Workbenches/components/EachModuleWorkWorkbenche.vue
接口范围:
GET /api/Tauri/Workbenches/web_router/
返回结构:
System、Data、Setting、Statistics、Application
每个分区包含 label、value、children
children 使用 WebRouterSerializer 返回菜单路由字段
设计要求:
1. 输出页面结构、后端菜单查询、权限规则、前端卡片渲染和验收标准。
2. 说明 WorkbenchesViewSet 如何根据请求路径推导模块菜单后缀。
3. 说明 RoleMenuPermission 如何限制非超级管理员可见菜单。
4. 说明 CommonWorkbenches 与 EachModuleWorkWorkbenche 的组件职责。
5. 只允许设计源码中存在的菜单分组、权限过滤和卡片导航能力。
后端设计
后端设计重点不是搭建新的数据模型,而是把系统菜单树整理成工作台可用的数据结构。server_backend/dvadmin/utils/workbenches.py 中的 WorkbenchesViewSet 使用 DummyModel 和 DummySerializer 占位,web_router action 返回当前模块的菜单分区。Tauri 模块通过 server_backend/modules/Tauri/urls.py 注册 router.register('Workbenches', WorkbenchesViewSet, 'Workbenches'),因此前端可以请求 /api/Tauri/Workbenches/web_router/。
核心逻辑在 _menu_block_serializer。它从 request.path 中解析模块名和路由名,例如 /api/Tauri/Workbenches/web_router/ 会推导出模块 Tauri、路由 Workbenches,再组合 /TauriWorkbenchesData、/TauriWorkbenchesSetting 等目标菜单路径。命中父菜单后,后端会根据 Menu.status 和角色权限构造可见菜单全集,把第一层菜单作为目录组,再收集其下所有叶子菜单并用 WebRouterSerializer 输出给前端。
| 后端设计项 | 设计重点 | Codex 生成方向 |
|---|---|---|
| 视图入口 | WorkbenchesViewSet.web_router 返回工作台菜单数据。 |
保持 GET /api/Tauri/Workbenches/web_router/ 接口结构。 |
| 路径解析 | 根据 request.path 解析 web 和 router,拼接目标菜单路径。 |
生成路径边界校验和空结果返回。 |
| 菜单查询 | 通过 Menu.web_path 命中父菜单,再读取子菜单。 |
生成菜单层级查询、排序和叶子节点收集。 |
| 权限过滤 | 超级管理员看全部,普通用户按 RoleMenuPermission 限制。 |
生成角色权限过滤和越权菜单不可见测试。 |
| 返回结构 | 返回 System、Data、Setting、Statistics、Application 五组数据。 |
保持 label、value、children 结构稳定。 |
| 空状态 | 找不到父菜单、无权限或无叶子菜单时返回空数组。 | 生成空工作台和前端空状态验收。 |
可以直接使用下面的Prompt进行后端代码的设计
text
请 Codex 按"Tauri数据工作台"业务从零设计或补齐后端代码。
后端源码范围:
server_backend/dvadmin/utils/workbenches.py
server_backend/modules/Tauri/urls.py
server_backend/dvadmin/system/models.py
必须遵守的现有结构:
1. WorkbenchesViewSet 使用 DummyModel.objects.none() 和 DummySerializer。
2. Tauri 路由注册 WorkbenchesViewSet,接口为 /api/Tauri/Workbenches/web_router/。
3. 菜单数据来自 Menu 和 RoleMenuPermission。
4. 叶子菜单序列化使用 WebRouterSerializer。
需要实现或校准:
1. 根据 request.path 解析模块和路由,组合 Data、Setting、Statistics、Application、System 的菜单父路径。
2. 找到父菜单后,读取第一层目录组。
3. 收集目录下所有叶子菜单,并保留 sort、id 排序。
4. 普通用户只能看到角色授权菜单,超级管理员可见全部启用菜单。
5. 返回结构必须包含 System、Data、Setting、Statistics、Application。
6. 没有菜单或没有权限时返回空数组,不报 500。
输出涉及文件、接口返回结构、权限规则、空状态处理和测试建议。
前端设计
前端设计重点是让用户能快速进入 Tauri 工具下的各类功能页面。server_vue3/src/views/modules/Tauri/Workbenches/index.vue 只负责声明 apiUrl = '/api/Tauri/Workbenches/web_router/' 并把它传给 CommonWorkbenches。server_vue3/src/components/commonWorkbenches/index.vue 是轻包装组件,实际渲染逻辑在 server_vue3/src/views/system/Workbenches/components/EachModuleWorkWorkbenche.vue。
EachModuleWorkWorkbenche.vue 请求 GetList(props.apiUrl) 后,按固定顺序 Data、System、Setting、Statistics、Application 生成 tabs,并用 TITLE_MAP 转成中文标题。每个分区下先展示目录标题,再展示卡片;卡片使用菜单的 path、name、image、desc,点击后通过 router.push({ path }) 进入对应功能页。图片缺失时根据菜单名称和路径选择回退图标。
| 前端设计项 | 设计重点 | Codex 生成方向 |
|---|---|---|
| 模块入口 | Tauri/Workbenches/index.vue 传入 Tauri 工作台 API 地址。 |
保持模块入口轻量,避免重复实现通用工作台。 |
| 接口封装 | commonWorkbenches/api.ts 的 GetList(url) 按传入 URL 请求。 |
生成通用请求方法和错误处理。 |
| 分区渲染 | EachModuleWorkWorkbenche.vue 使用 ORDER 和 TITLE_MAP 排序展示。 |
生成 tabs、默认激活项和空状态。 |
| 卡片展示 | 卡片展示图片、名称、描述和右侧箭头。 | 生成图片加载、回退图标和响应式布局。 |
| 路由跳转 | handleToSubMenu(path) 使用 Vue Router 跳转。 |
生成点击、Enter、Space 键盘可访问交互。 |
| 权限回显 | 前端只展示后端返回的授权菜单。 | 避免前端硬编码不可见菜单。 |
可以直接使用下面的Prompt进行前端代码的设计
text
请 Codex 按"Tauri数据工作台"业务生成或补齐前端页面代码。
前端源码范围:
server_vue3/src/views/modules/Tauri/Workbenches/index.vue
server_vue3/src/components/commonWorkbenches/api.ts
server_vue3/src/components/commonWorkbenches/index.vue
server_vue3/src/views/system/Workbenches/components/EachModuleWorkWorkbenche.vue
页面现状:
1. Tauri/Workbenches/index.vue 传入 apiUrl:/api/Tauri/Workbenches/web_router/。
2. CommonWorkbenches 负责转发 apiUrl 和 limit。
3. EachModuleWorkWorkbenche 请求后端分区数据并渲染 tabs。
4. 分区顺序为 Data、System、Setting、Statistics、Application。
5. 卡片使用菜单 path、name、image、desc。
6. 点击卡片通过 router.push 进入具体页面。
需要生成或修正:
1. 保持通用工作台组件,不在 Tauri 页面重复写卡片逻辑。
2. 对空分区、空 children、图片加载失败进行处理。
3. 保持键盘 Enter 和 Space 跳转。
4. 保持后端返回什么就展示什么,不硬编码未授权菜单。
5. Statistics 只作为菜单分区,不要生成统计图表或指标接口。
输出页面结构、接口调用、分区渲染、卡片交互、权限回显和验收步骤。
扩展功能
Tauri数据工作台的扩展能力主要是数据联动。它超出普通静态入口页的地方,是菜单卡片由后端菜单树和当前用户权限动态生成,前端分区、卡片、图片、路由跳转都依赖同一份 web_router 返回数据。
| 扩展功能 | 主要用途 | 落地重点 |
|---|---|---|
| 数据联动 | 将请求路径、菜单树、角色权限、分区 tabs 和卡片跳转串成稳定数据流。 | 后端返回结构与前端分区渲染必须一致,不能前端硬编码权限菜单。 |
数据联动
数据联动从请求路径开始。后端根据 /api/Tauri/Workbenches/web_router/ 推导目标菜单路径,再查找对应父菜单和子菜单;权限过滤决定哪些菜单能返回;前端根据 System、Data、Setting、Statistics、Application 生成 tabs,并把每个叶子菜单渲染成卡片。这个过程把后端菜单配置、角色权限和前端导航连成一条链路。
结果阶段
处理阶段
输入阶段
请求路径
角色权限
菜单配置
解析模块
过滤菜单
收集叶子
分区Tabs
入口卡片
路由跳转
交给 Codex 生成时,边界要限定在菜单和权限联动上。不要因为返回结构里有 Statistics 分区就生成图表接口;不要绕过后端权限在前端写死菜单;不要把 DummyModel 当成真实业务表扩展字段。工作台的真实价值是让菜单配置变成按权限可见的导航入口。
可以直接使用下面的Prompt进行数据联动设计
text
请 Codex 基于真实源码补齐"Tauri数据工作台"的数据联动设计。
源码范围:
server_backend/dvadmin/utils/workbenches.py
server_backend/modules/Tauri/urls.py
server_vue3/src/views/modules/Tauri/Workbenches/index.vue
server_vue3/src/components/commonWorkbenches/api.ts
server_vue3/src/components/commonWorkbenches/index.vue
server_vue3/src/views/system/Workbenches/components/EachModuleWorkWorkbenche.vue
联动对象:
request.path、Menu.web_path、RoleMenuPermission、System、Data、Setting、Statistics、Application、path、name、image、desc
联动要求:
1. 后端根据请求路径推导当前模块工作台菜单。
2. 普通用户只能看到角色授权菜单,超级管理员可见全部启用菜单。
3. 后端返回 label、value、children 分组结构。
4. 前端按固定顺序渲染 tabs,空分区不展示。
5. 卡片点击和键盘操作都能跳转到菜单 path。
6. Statistics 只作为菜单分区,不生成统计接口。
输出接口设计、前端交互、权限约束、空状态处理和验收清单。
Codex开发标准
使用 Codex 开发 Tauri数据工作台时,不能让它随意生成一个静态卡片页。工作台入口必须由后端菜单权限驱动,PDD、SOP、接口权限规则和验收标准要约束菜单查询、角色过滤、前端分区和路由跳转。
验收交付
Codex开发
模块设计
输入约束
需求边界
PDD设计
SOP目录
接口权限
后端设计
前端设计
联动检查
读取上下文
生成后端
生成前端
功能补齐
功能自检
PDD验收
问题修复
模块交付
SOP 标准
SOP 用于约束代码目录、文件职责和开发顺序。Tauri数据工作台模块的代码分散在通用工作台后端、通用前端组件和 Tauri 模块入口中,Codex 需要先识别这些职责,再决定修改范围。
text
docs/modules/Tauri数据工作台/
├── pdd.md
├── api.md
├── test-cases.md
└── codex-sop.md
server_backend/dvadmin/utils/
└── workbenches.py
server_backend/modules/Tauri/
└── urls.py
server_vue3/src/views/modules/Tauri/Workbenches/
└── index.vue
server_vue3/src/components/commonWorkbenches/
├── api.ts
└── index.vue
server_vue3/src/views/system/Workbenches/components/
└── EachModuleWorkWorkbenche.vue
_sop_workflow/project_pr/Tauri工具/数据工作台/
└── 教育管理系统Tauri数据工作台用Codex自动生成项目代码.md
| 开发阶段 | Codex 执行目标 | 输出结果 |
|---|---|---|
| 模块设计 | 读取 WorkbenchesViewSet、Tauri 路由、通用工作台组件和 Tauri 入口。 |
输出接口、菜单结构、权限和前端职责。 |
| 文档规划 | 建立 PDD、API、测试和 SOP 文档。 | 形成 pdd.md、api.md、test-cases.md、codex-sop.md。 |
| 后端实现 | 校准菜单路径解析、权限过滤、分组返回和空状态。 | 工作台接口返回授权菜单分区。 |
| 前端实现 | 校准 Tauri 入口、通用组件、tabs、卡片、图片回退和跳转。 | 页面能展示入口卡片并跳转。 |
| 数据联动 | 打通请求路径、菜单权限、分区 tabs 和卡片路由。 | 后端返回与前端展示一致。 |
| 验收修复 | 按 PDD 检查权限、空状态、路由跳转和响应式展示。 | 输出验收结果与需修复文件位置。 |
可以直接使用下面的Prompt进行SOP撰写
text
请 Codex 按教育管理系统模块开发 SOP,从零实现或补齐"Tauri数据工作台"模块。
执行要求:
1. 先输出目录结构,不要直接写代码。
2. 先生成 docs/modules/Tauri数据工作台/pdd.md、api.md、test-cases.md 和 codex-sop.md。
3. 文档确认模块边界后,再根据文档生成或修正项目代码。
4. 后端范围限定在 dvadmin/utils/workbenches.py 和 modules/Tauri/urls.py。
5. 前端范围限定在 Tauri/Workbenches/index.vue、commonWorkbenches、EachModuleWorkWorkbenche.vue。
6. 后端需要覆盖菜单路径解析、RoleMenuPermission 权限过滤、叶子菜单收集和分区返回。
7. 前端需要覆盖 apiUrl 传入、tabs 渲染、卡片展示、图片回退、空状态和路由跳转。
8. Statistics 只是菜单分区,不生成统计接口或图表能力。
9. 不生成源码中不存在的扩展能力。
输出目录结构、开发阶段表、后端任务清单、前端任务清单、数据联动清单和验收修复清单。
PDD 标准
PDD 是模块设计与验收文档,用来约束 Codex 输出是否符合真实业务。Tauri数据工作台模块的 PDD 要把菜单来源、权限过滤、返回结构、卡片渲染和路由跳转写成可验证条目。
| 验收维度 | 验收标准 | 需要检查的文件 |
|---|---|---|
| 业务目标 | 模块能按权限聚合 Tauri 工具菜单入口,并展示为工作台卡片。 | pdd.md、workbenches.py、EachModuleWorkWorkbenche.vue |
| 页面结构 | 页面包含分区 tabs、目录标题、入口卡片、图片或回退图标、空状态。 | Tauri/Workbenches/index.vue、EachModuleWorkWorkbenche.vue |
| 数据模型 | 不新增业务模型,使用 DummyModel 占位,菜单数据来自 Menu。 |
workbenches.py |
| 接口规则 | /api/Tauri/Workbenches/web_router/ 返回五类分区和菜单 children。 |
workbenches.py、api.md |
| 权限控制 | 普通用户只看到角色授权菜单,超级管理员看到全部启用菜单。 | workbenches.py、test-cases.md |
| 数据联动 | 请求路径、菜单父路径、分区数据、卡片 path 和前端跳转保持一致。 | workbenches.py、EachModuleWorkWorkbenche.vue |
| 测试用例 | 覆盖超级管理员、普通角色、无权限、无菜单、图片缺失和路由跳转。 | test-cases.md |
可以直接使用下面的Prompt进行PDD 验收
text
请 Codex 根据 docs/modules/Tauri数据工作台/pdd.md 对"Tauri数据工作台"模块进行验收。
验收范围:
server_backend/dvadmin/utils/workbenches.py
server_backend/modules/Tauri/urls.py
server_vue3/src/views/modules/Tauri/Workbenches/index.vue
server_vue3/src/components/commonWorkbenches/api.ts
server_vue3/src/components/commonWorkbenches/index.vue
server_vue3/src/views/system/Workbenches/components/EachModuleWorkWorkbenche.vue
docs/modules/Tauri数据工作台/api.md
docs/modules/Tauri数据工作台/test-cases.md
验收维度:
1. 业务目标:是否能聚合 Tauri 模块菜单入口。
2. 页面结构:是否包含 tabs、分组、卡片、图片回退和空状态。
3. 数据模型:是否未误建业务模型。
4. 接口规则:web_router 返回结构是否包含五类分区。
5. 权限控制:不同角色是否只看到授权菜单。
6. 数据联动:request.path、Menu.web_path、children.path 和 router.push 是否一致。
7. 测试用例:是否覆盖权限、空菜单、图片失败和跳转。
输出验收结果表,标记通过、未通过和需要修复的文件位置。不要只给结论,需要指出具体问题、影响范围和修复建议。
总结
Tauri数据工作台不是统计看板,也不是静态导航页,而是教育管理系统中由菜单权限驱动的模块入口闭环。它把后端菜单树、角色权限、分区数据和前端卡片跳转连接起来,让用户只看到自己可访问的 Tauri 功能。
用 Codex 开发该模块时,PDD 负责定义菜单来源和验收标准,SOP 负责约束通用工作台与模块入口的职责边界,Prompt 负责把后端权限查询、前端分区渲染和路由跳转拆成分阶段任务。这样生成的代码不会偏离真实工作台结构。