【Codex】用Tauri工作流任务管理桌面端自动化执行流程
本文介绍了Tauri工作流任务模块的设计与实现。该模块用于记录桌面端工具与教育管理后台之间的异步任务,核心功能包括任务同步、状态跟踪和结果预览。后端基于AITask模型和UserAITaskViewSet提供接口,重点处理任务创建、列表查询、状态更新和软删除。前端通过FastCrud实现任务列表展示、JSON结果预览等功能。系统通过user_uuid和client_uuid实现用户数据隔离,并支持
Tauri工作流任务承接桌面端工具与教育管理后台之间的异步任务记录。它保存 provider、model、prompt、upstream_task_id、status、progress 和 result_json,让用户能追踪外部工作流任务的发起、运行、更新和删除。

本文基于 AITask 模型、UserAITaskViewSet、Tauri 工具类和 FastCrud 页面,说明如何把任务同步、列表筛选、结果 JSON 预览和用户数据隔离,转换成 Codex 可执行的项目代码生成任务。
设计与需求
Tauri工作流任务不能只按普通 CRUD 处理。它的业务重点是把桌面工具提交的外部任务 ID 与后台任务记录绑定起来,按 user_uuid 或 client_uuid 隔离任务归属,并在任务运行过程中持续维护 status、progress 和 result_json。源码范围包括 server_backend/modules/Tauri/views_app/UserAITask.py、server_backend/modules/Tauri/utils.py、server_backend/modules/Tauri/urls.py、server_backend/dvadmin/system/models.py、server_vue3/src/views/modules/Tauri/UserAITask/index.vue、api.ts、crud.ts。
交给 Codex 的任务需要同时覆盖后台管理端和桌面端接口。后台管理端需要查看任务 UUID、用户 UUID、厂商、模型、Prompt、进度和结果;桌面端需要通过 update_create_task 同步任务,通过 get_task_list 查询任务,通过 update_task 写回结果,通过 delete_task 软删除记录。权限、筛选和结果回显必须和这些真实接口一致。
| 需求层描述 | 设计层转换 | Codex 代码生成方向 |
|---|---|---|
| 桌面端需要同步外部任务 | update_create_task 接收上游 id、provider、model、modules、prompt 和 result_json,写入 AITask。 |
生成任务创建接口、身份解析、字段校验和重复任务处理策略。 |
| 用户需要查看自己的任务 | get_task_list 按 user_uuid、modules、status、provider、model 查询并分页返回。 |
生成查询参数、分页返回、状态筛选和用户隔离。 |
| 后台需要管理任务记录 | UserAITaskViewSet 基于 CustomModelViewSet 提供列表、详情、更新和软删除能力。 |
生成 FastCrud 列表、筛选区、复制按钮、进度条和结果预览。 |
| 任务结果需要回写 | update_task 按 user_uuid + upstream_task_id 更新 result_json 和 status。 |
生成结果 JSON 解析、状态同步、异常响应和测试用例。 |
| 结果数据需要可读 | index.vue 打开 JSON 弹窗,crud.ts 在 result_json 列提供“查看”按钮。 |
生成 JSON 格式化、长文本复制、错误信息展示和回显检查。 |
| 权限需要真实隔离 | mixin 中 get_queryset 对普通用户按 user_uuid 过滤,匿名后台列表返回空。 |
校准 action 权限名称,补齐登录态与 client_uuid 访问边界。 |
可以直接使用下面的Prompt进行模块功能的设计
请 Codex 基于教育管理系统真实源码设计“Tauri工作流任务”模块。
模块定位:
Tauri工作流任务用于记录桌面端发起的外部工作流任务,按用户身份保存任务输入、上游任务 ID、运行状态、进度和结果 JSON。
源码范围:
server_backend/modules/Tauri/views_app/UserAITask.py
server_backend/modules/Tauri/utils.py
server_backend/modules/Tauri/urls.py
server_backend/dvadmin/system/models.py
server_vue3/src/views/modules/Tauri/UserAITask/index.vue
server_vue3/src/views/modules/Tauri/UserAITask/api.ts
server_vue3/src/views/modules/Tauri/UserAITask/crud.ts
核心字段:
task_uuid、provider、model、modules、user_uuid、prompt、upstream_task_id、status、progress、result_json、error_message、cost_points、create_datetime
接口范围:
api/Tauri/UserAITask/
GET 列表、POST 新增、PUT 更新、PUT 软删除
POST update_create_task/
GET get_task_list/
POST update_task/
POST delete_task/
设计要求:
1. 输出页面结构、数据模型、接口规则、权限边界和验收标准。
2. 说明任务创建、任务列表、结果更新、任务删除的接口流程。
3. 说明 user_uuid 与 client_uuid 的身份解析方式。
4. 说明 status、progress、result_json 在前端列表和 JSON 弹窗中的回显方式。
5. 校准 get_permissions 中的 action 名称,避免权限规则与真实 action 不匹配。
6. 只允许设计源码中存在的任务同步、状态联动和结果预览能力。
后端设计
后端设计重点不是堆任务表 CRUD,而是建立桌面端任务同步的数据底座。server_backend/dvadmin/system/models.py 中的 AITask 承载任务数据,UserAITaskViewSet 通过 CustomModelRefSerializer(model=AITask, ref_name='TauriUserAITask') 对外提供接口。filterset_class 对 model、task_uuid、user_uuid 做模糊筛选,后台列表可以按模型和用户定位任务。
server_backend/modules/Tauri/views_app/UserAITask.py 中的四个 action 是这个模块的核心。update_create_task 负责写入新任务,get_task_list 负责按用户与模块返回任务列表,update_task 负责解析 result_json 并写回状态,delete_task 负责按 upstream_task_id 软删除任务。server_backend/modules/Tauri/utils.py 中的 UserAITaskIdentityUtils.resolve_user_uuid 负责把登录用户或 client_uuid 转换成任务归属字段。
需要特别注意权限 mixin。UserAITaskViewSetUtilsMixin.get_permissions 当前判断的是 create_task、tauri_task_list,但真实 action 名称是 update_create_task、get_task_list。交给 Codex 补齐时,应同步校准权限 action 名称,否则桌面端接口可能被错误要求登录,或者权限说明与实际行为不一致。
| 后端设计项 | 设计重点 | Codex 生成方向 |
|---|---|---|
| 任务模型 | 使用 AITask 保存任务 UUID、上游任务 ID、厂商、模型、模块、Prompt、状态、进度和结果 JSON。 |
生成序列化字段、查询字段、默认状态和结果结构说明。 |
| 身份解析 | 登录用户使用自身 UUID,未登录桌面端通过 client_uuid 查询或提交任务。 |
统一 user_uuid 解析逻辑,补齐缺失身份的错误响应。 |
| 创建同步 | update_create_task 从请求体写入任务记录,默认状态可落为上游状态或 running。 |
生成字段校验、重复任务处理、返回结构和异常测试。 |
| 列表查询 | get_task_list 按 modules 必选条件和可选 status、provider、model 查询。 |
生成分页、状态筛选、字段白名单和排序规则。 |
| 结果更新 | update_task 按 upstream_task_id 查找任务,解析 result_json 并同步 status。 |
校验 JSON 字符串、处理解析失败、记录错误信息。 |
| 删除任务 | delete_task 按 upstream_task_id 将记录标记为 is_deleted=True。 |
保持软删除语义,输出未找到任务的错误响应。 |
| 权限控制 | 普通用户只看自己的任务,超级管理员可看全部,匿名后台列表返回空。 | 校准 action 名称,补齐越权访问测试。 |
可以直接使用下面的Prompt进行后端代码的设计
请 Codex 按“Tauri工作流任务”业务从零设计或补齐后端代码。
后端源码范围:
server_backend/modules/Tauri/views_app/UserAITask.py
server_backend/modules/Tauri/utils.py
server_backend/modules/Tauri/urls.py
server_backend/dvadmin/system/models.py
必须遵守的现有结构:
1. 查询对象为 AITask,ViewSet 为 UserAITaskViewSet。
2. 路由注册为 api/Tauri/UserAITask/。
3. 基础请求方法为 get、post、put,删除按软删除处理。
4. 身份解析复用 UserAITaskIdentityUtils.resolve_user_uuid。
需要实现或校准的接口:
1. update_create_task:接收 provider、model、modules、prompt、id、result_json、status,写入 AITask。
2. get_task_list:按 user_uuid、modules、status、provider、model 查询任务并分页返回。
3. update_task:按 user_uuid 和 upstream_task_id 更新 result_json 与 status。
4. delete_task:按 user_uuid 和 upstream_task_id 标记 is_deleted。
5. 后台列表:按 model、task_uuid、user_uuid 支持筛选,普通用户只看自己的任务。
需要特别检查:
1. get_permissions 中的 action 名称要与 update_create_task、get_task_list、update_task、delete_task 对齐。
2. result_json 如果是字符串,需要安全解析;解析失败要返回明确错误。
3. status 与 progress 要保证前端可展示,失败任务要保留 error_message。
4. 只补齐任务同步、状态联动和结果预览相关能力,不添加源码中不存在的扩展能力。
输出涉及文件、接口返回结构、权限规则、异常响应和测试建议。
前端设计
前端设计重点不是展示一堆任务字段,而是让后台用户能快速识别任务来源、运行状态和结果。server_vue3/src/views/modules/Tauri/UserAITask/crud.ts 中已经配置了 task_uuid、provider、model、user_uuid、upstream_task_id、status、progress、cost_points、prompt 和 result_json。长文本字段通过复制按钮缩短展示,status 用 el-tag 区分运行中、成功、失败,progress 用 el-progress 显示进度。
server_vue3/src/views/modules/Tauri/UserAITask/index.vue 负责提供 JSON 弹窗,crud.ts 中的 result_json 列通过 context.openJsonDialog(row.result_json) 打开结果预览。api.ts 当前只封装了基础 CRUD,后端已经存在 update_create_task、get_task_list、update_task、delete_task,前端补齐时应增加同名方法,供 Tauri 客户端或任务页面调用。
| 前端设计项 | 设计重点 | Codex 生成方向 |
|---|---|---|
| 页面容器 | index.vue 使用 fs-page、fs-crud,挂载后执行 crudExpose.doRefresh()。 |
保持 FastCrud 初始化和上下文方法。 |
| 列表字段 | 展示任务 UUID、厂商、模型、用户 UUID、上游任务 ID、状态、进度、点数、Prompt 和结果。 | 生成列宽、筛选、复制按钮、状态标签和进度条。 |
| 结果预览 | result_json 列通过“查看”按钮打开 JSON 弹窗。 |
生成 JSON 格式化、空值处理和超长内容展示。 |
| 接口封装 | api.ts 已有基础 CRUD,但缺少任务同步 action 封装。 |
补齐 updateCreateTask、getTaskList、updateTask、deleteTask。 |
| 查询筛选 | task_uuid、provider、model、user_uuid、status 支持搜索或下拉。 |
保持前端参数与后端 filterset/action 参数一致。 |
| 保存回显 | 任务更新或删除后刷新列表,结果更新后回显状态和 JSON。 | 生成刷新策略、错误提示和接口返回处理。 |
可以直接使用下面的Prompt进行前端代码的设计
请 Codex 按“Tauri工作流任务”业务生成或补齐前端页面代码。
前端源码范围:
server_vue3/src/views/modules/Tauri/UserAITask/index.vue
server_vue3/src/views/modules/Tauri/UserAITask/api.ts
server_vue3/src/views/modules/Tauri/UserAITask/crud.ts
页面现状:
1. index.vue 使用 fs-page 和 fs-crud,并提供结果 JSON 弹窗。
2. crud.ts 已配置任务 UUID、厂商、模型、用户 UUID、上游任务 ID、状态、进度、点数、Prompt、结果等字段。
3. status 使用标签展示 running、succeeded、failed。
4. progress 使用 el-progress 展示百分比。
5. task_uuid、user_uuid、upstream_task_id、prompt 等长文本字段带复制按钮。
6. api.ts 已有 GetList、AddObj、UpdateObj、DelObj、GetObj、putObj。
需要补齐或修正:
1. 增加 updateCreateTask、getTaskList、updateTask、deleteTask 的 API 封装。
2. getTaskList 支持 user_uuid 或 client_uuid、modules、status、provider、model 参数。
3. updateTask 提交 upstream_task_id 和 result_json,成功后刷新列表。
4. result_json 预览需要处理空对象、字符串和对象格式。
5. 任务删除使用后端 delete_task 或基础软删除时,要保持按钮含义一致。
6. 不生成源码中不存在的多选处理、文件上传或内容生成入口。
输出页面结构、API 封装、字段配置、状态展示、JSON 弹窗、异常提示和验收步骤。
扩展功能
Tauri工作流任务的扩展能力来自任务同步和结果回显。它超出普通 CRUD 的地方,是任务状态会随外部服务变化,result_json 是结构化结果,前端需要用状态标签、进度条和 JSON 弹窗表达任务运行过程。
| 扩展功能 | 主要用途 | 落地重点 |
|---|---|---|
| 数据联动 | 将用户身份、模块筛选、任务状态、进度和结果 JSON 串成一致的数据流。 | 查询参数、状态字段、结果回写和列表刷新必须同名同义。 |
| 任务状态同步 | 将桌面端或外部服务的任务结果同步到后台记录。 | 按 upstream_task_id 定位任务,更新 result_json 与 status,保留错误边界。 |
| 资源预览 | 在后台页面预览任务结果 JSON。 | 结果只进入弹窗预览,不在未确认格式时直接拆成业务字段。 |
数据联动
数据联动集中在 user_uuid、client_uuid、modules、status、provider、model 和 result_json。桌面端查询任务时必须带身份和模块范围;后台列表筛选时要把 task_uuid、provider、model、user_uuid、status 同步到后端查询;任务结果更新后,列表中的状态标签、进度条和 JSON 弹窗要使用同一份返回数据。
交给 Codex 生成时,边界要限定在真实字段和真实接口内。status 不能只在前端硬编码显示,还要与 update_task 写回结果保持一致;modules 是桌面端任务列表的重要过滤条件,不能省略;result_json 可以是对象或字符串,前端显示前要安全格式化。
可以直接使用下面的Prompt进行数据联动设计
请 Codex 基于真实源码补齐“Tauri工作流任务”的数据联动能力。
源码范围:
server_backend/modules/Tauri/views_app/UserAITask.py
server_backend/modules/Tauri/utils.py
server_vue3/src/views/modules/Tauri/UserAITask/index.vue
server_vue3/src/views/modules/Tauri/UserAITask/api.ts
server_vue3/src/views/modules/Tauri/UserAITask/crud.ts
联动对象:
user_uuid、client_uuid、modules、provider、model、status、progress、upstream_task_id、result_json
联动要求:
1. 任务列表查询必须使用用户身份和 modules 限定范围。
2. status、provider、model 要能作为查询条件进入后端。
3. update_task 写回 result_json 后要同步 status,并刷新前端列表。
4. progress 展示需要限制在 0 到 100。
5. result_json 预览要兼容对象、字符串和空值。
6. 权限规则要保证普通用户只能看自己的任务。
输出接口设计、前端交互、字段转换、异常处理、权限约束和验收清单。
任务状态同步
任务状态同步是这个模块的核心扩展能力。update_create_task 写入任务记录后,外部服务或桌面端可以通过 update_task 按 upstream_task_id 回写结果。后端从 result_json 中提取 status,更新任务状态;前端列表据此更新标签、进度条和结果弹窗。
Codex 生成时要约束几个边界:upstream_task_id 为空时不能更新;result_json 解析失败时不能静默写库;未找到任务时要返回明确错误;删除任务只做软删除;状态值要与前端字典保持一致,避免后端写入 success 而前端只识别 succeeded。
可以直接使用下面的Prompt进行任务状态同步设计
请 Codex 基于真实源码设计“Tauri工作流任务”的任务状态同步能力。
后端接口:
POST api/Tauri/UserAITask/update_create_task/
GET api/Tauri/UserAITask/get_task_list/
POST api/Tauri/UserAITask/update_task/
POST api/Tauri/UserAITask/delete_task/
字段范围:
user_uuid、client_uuid、upstream_task_id、provider、model、modules、prompt、status、progress、result_json、error_message
设计要求:
1. update_create_task 创建任务记录,保存上游任务 ID 和初始状态。
2. update_task 按 user_uuid 和 upstream_task_id 定位任务。
3. result_json 必须安全解析,解析后同步 status。
4. 未找到任务、身份缺失、JSON 错误都要返回明确错误。
5. 前端列表要刷新状态标签、进度条和结果预览。
6. delete_task 只做软删除,不物理删除数据。
输出后端处理流程、前端调用方式、异常边界、状态字典和验收用例。
资源预览
资源预览在该模块中表现为任务结果 JSON 预览。index.vue 通过 el-dialog 和 pre 展示格式化后的 result_json,crud.ts 只在列表中保留“查看”按钮,避免复杂 JSON 直接撑开表格。这个设计适合任务结果结构不固定的场景。
结果预览不能替代业务入库校验。Codex 补齐时可以增强空值提示、复制按钮、解析错误提示,但不应把任意 JSON 自动拆成新的业务字段保存。
可以直接使用下面的Prompt进行资源预览功能设计
请 Codex 基于真实源码补齐“Tauri工作流任务”的资源预览能力。
源码范围:
server_vue3/src/views/modules/Tauri/UserAITask/index.vue
server_vue3/src/views/modules/Tauri/UserAITask/crud.ts
预览对象:
result_json
设计要求:
1. 列表中 result_json 只展示“查看”入口。
2. 点击后在 el-dialog 中格式化展示 JSON。
3. 兼容对象、字符串、空值和无法序列化的异常值。
4. 可以增加复制功能和错误提示。
5. 预览结果不能自动拆成业务字段保存。
输出前端组件设计、交互流程、异常处理和验收用例。
Codex开发标准
使用 Codex 开发 Tauri工作流任务模块时,需要用需求边界、PDD、SOP、接口权限规则和验收标准约束生成过程。任务记录涉及用户身份、外部任务 ID 和结果 JSON,任何字段错位都会影响桌面端查询和后台追踪。
SOP 标准
SOP 用于约束代码目录、文件职责和开发顺序。Tauri工作流任务模块需要同时维护后端任务接口、工具类身份解析、前端列表、结果弹窗和模块文档,不能只改 crud.ts 或只写一个接口。
docs/modules/Tauri工作流任务/
├── pdd.md
├── api.md
├── test-cases.md
└── codex-sop.md
server_backend/modules/Tauri/
├── urls.py
├── utils.py
└── views_app/
└── UserAITask.py
server_backend/dvadmin/system/
└── models.py
server_vue3/src/views/modules/Tauri/UserAITask/
├── index.vue
├── api.ts
└── crud.ts
_sop_workflow/project_pr/Tauri工具/数据信息_Tauri工具数据_工作流任务/
└── 教育管理系统Tauri工作流任务用Codex自动生成项目代码.md
| 开发阶段 | Codex 执行目标 | 输出结果 |
|---|---|---|
| 模块设计 | 读取 AITask、UserAITaskViewSet、mixin、前端 api.ts/crud.ts/index.vue。 |
输出字段、接口、权限和扩展边界。 |
| 文档规划 | 建立 PDD、API、测试和 SOP 文档。 | 形成 pdd.md、api.md、test-cases.md、codex-sop.md。 |
| 后端实现 | 校准任务创建、列表、更新、删除、权限和身份解析。 | 接口可按用户身份读写任务。 |
| 前端实现 | 补齐任务 action API、列表筛选、状态标签、进度条和 JSON 弹窗。 | 页面可查询、查看、复制和预览任务结果。 |
| 数据联动 | 打通身份、模块、状态、进度、结果 JSON 和刷新策略。 | 任务状态与页面展示一致。 |
| 验收修复 | 按 PDD 检查接口、权限、异常和前端调用。 | 输出验收结果与需修复文件位置。 |
可以直接使用下面的Prompt进行SOP撰写
请 Codex 按教育管理系统模块开发 SOP,从零实现或补齐“Tauri工作流任务”模块。
执行要求:
1. 先输出目录结构,不要直接写代码。
2. 先生成 docs/modules/Tauri工作流任务/pdd.md、api.md、test-cases.md 和 codex-sop.md。
3. 文档确认模块边界后,再根据文档生成或修正项目代码。
4. 后端范围限定在 UserAITask.py、utils.py、urls.py 和 AITask 模型相关字段。
5. 前端范围限定在 UserAITask/index.vue、api.ts、crud.ts。
6. 后端需要覆盖 update_create_task、get_task_list、update_task、delete_task、列表筛选、权限和身份解析。
7. 前端需要覆盖任务列表、状态标签、进度条、结果 JSON 弹窗、复制按钮和 action API 封装。
8. 状态同步需要覆盖 upstream_task_id、status、progress、result_json 和 error_message。
9. 不生成源码中不存在的扩展能力。
输出目录结构、开发阶段表、后端任务清单、前端任务清单、状态同步清单和验收修复清单。
PDD 标准
PDD 是模块设计与验收文档,用来约束 Codex 输出是否符合真实业务。Tauri工作流任务模块的 PDD 要把任务身份、任务 ID、状态进度、结果 JSON、权限边界和前端展示写成可验证条目。
| 验收维度 | 验收标准 | 需要检查的文件 |
|---|---|---|
| 业务目标 | 模块能记录桌面端工作流任务,并支持任务同步、查询、更新和删除。 | pdd.md、UserAITask.py、crud.ts |
| 页面结构 | 页面包含列表、搜索、状态标签、进度条、复制按钮和结果 JSON 弹窗。 | index.vue、crud.ts |
| 数据模型 | AITask 字段覆盖任务 UUID、用户 UUID、上游任务 ID、状态、进度和结果 JSON。 |
server_backend/dvadmin/system/models.py |
| 接口规则 | api/Tauri/UserAITask/ 和四个 action 可按 PDD 工作。 |
UserAITask.py、api.ts、api.md |
| 权限控制 | 普通用户只访问自己的任务,匿名后台列表不返回全量数据,桌面端按 client_uuid 受控访问。 |
utils.py、UserAITask.py |
| 数据联动 | modules、status、provider、model、result_json 的查询、更新和回显一致。 |
UserAITask.py、crud.ts |
| 任务状态同步 | update_task 能更新 result_json 与 status,异常场景有明确响应。 |
UserAITask.py、test-cases.md |
| 资源预览 | result_json 能格式化预览,不把未知结构自动写成业务字段。 |
index.vue、crud.ts |
| 测试用例 | 覆盖任务创建、列表查询、结果更新、任务删除、越权访问和 JSON 解析失败。 | test-cases.md |
可以直接使用下面的Prompt进行PDD 验收
请 Codex 根据 docs/modules/Tauri工作流任务/pdd.md 对“Tauri工作流任务”模块进行验收。
验收范围:
server_backend/modules/Tauri/views_app/UserAITask.py
server_backend/modules/Tauri/utils.py
server_backend/modules/Tauri/urls.py
server_backend/dvadmin/system/models.py
server_vue3/src/views/modules/Tauri/UserAITask/index.vue
server_vue3/src/views/modules/Tauri/UserAITask/api.ts
server_vue3/src/views/modules/Tauri/UserAITask/crud.ts
docs/modules/Tauri工作流任务/api.md
docs/modules/Tauri工作流任务/test-cases.md
验收维度:
1. 业务目标:是否能记录并追踪 Tauri 工作流任务。
2. 页面结构:是否包含筛选、状态标签、进度条、复制按钮和结果预览。
3. 数据模型:AITask 字段是否满足任务同步和结果回显。
4. 接口规则:update_create_task、get_task_list、update_task、delete_task 是否可用。
5. 权限控制:登录用户、client_uuid 和后台匿名访问是否符合规则。
6. 数据联动:modules、status、provider、model、result_json 是否前后端一致。
7. 任务状态同步:result_json 解析、status 更新和错误处理是否完整。
8. 资源预览:JSON 弹窗是否处理对象、字符串和空值。
输出验收结果表,标记通过、未通过和需要修复的文件位置。不要只给结论,需要指出具体问题、影响范围和修复建议。
总结
Tauri工作流任务不是普通任务列表,而是教育管理系统中连接桌面端、外部工作流和后台追踪的任务闭环。它通过 upstream_task_id 关联外部任务,通过 status、progress 和 result_json 表达运行状态,通过用户身份保证数据归属。
用 Codex 开发该模块时,PDD 负责定义任务同步和验收标准,SOP 负责约束目录结构和开发顺序,Prompt 负责把模型、接口、权限、状态联动和结果预览拆成可执行步骤。这样生成的代码更容易回到真实项目中联调。
更多推荐



所有评论(0)