【Codex】用Tauri用户配置打通桌面端个性化设置
Tauri用户配置模块摘要 该模块作为教育管理系统与桌面端工具的配置中枢,通过part_name区分功能模块,以setting_data存储动态JSON数据,支持user_uuid和client_uuid隔离用户数据。后端采用Django模型(UserConfig)实现配置存储,支持软删除和用户隔离查询;前端通过FastCrud管理配置列表,提供JSON可视化编辑。核心功能包括: 配置管理:按us

教育管理系统Tauri用户配置模块用Codex生成项目代码
Tauri用户配置不是后台里一张孤立的配置表,而是教育管理系统与桌面端工具之间的用户配置中枢。它按 part_name 区分功能模块,用 setting_data 保存动态 JSON,用 user_uuid 或 client_uuid 保证不同账号、不同客户端的配置互不串用。
本文从 UserConfig 模型、UserConfigViewSet、mixin 工具类和 FastCrud 页面入手,说明如何把“读取当前配置、保存配置、查看 JSON、隔离用户数据”这类真实需求,拆成 Codex 可以理解并生成后端、前端和验收文档的工程任务。
设计与需求
Tauri用户配置不能只理解成普通列表维护。它的业务核心是按 user_uuid + part_name 定位一份配置,把 setting_data 作为可变 JSON 存储,并在后台列表、桌面端接口和用户身份之间保持一致。源码中后端文件包括 server_backend/modules/Tauri/models.py、server_backend/modules/Tauri/views_app/UserConfig.py、server_backend/modules/Tauri/utils.py、server_backend/modules/Tauri/urls.py;前端文件包括 server_vue3/src/views/modules/Tauri/UserConfig/index.vue、api.ts、crud.ts。
交给 Codex 的任务需要把业务需求拆成页面结构、数据模型、接口规则、权限验收和联动边界。后台管理端关注配置列表、模块名称筛选、JSON 查看和软删除;桌面工具关注按 part_name 读取当前配置、提交配置载荷、登录用户与 client_uuid 的身份兼容。生成代码时不能脱离这些真实文件去扩展不存在的功能。
| 需求层描述 | 设计层转换 | Codex 代码生成方向 |
|---|---|---|
| Tauri 工具需要保存用户级配置 | 使用 UserConfig 记录 part_name、setting_data、user_uuid,同一用户不同模块互不覆盖。 |
生成配置模型、序列化、配置键校验和保存回显逻辑。 |
| 后台需要查看配置数据 | index.vue 通过 openJsonDialog 展示 JSON 原文、树结构和扁平表格。 |
生成列表列配置、JSON 解析、复制操作和异常展示。 |
| 管理端需要按模块和用户检索 | crud.ts 对 part_name、creator_username 配置搜索,后端 filterset_class 支持模糊查询。 |
保持前端搜索字段与后端筛选字段一致。 |
| 桌面端需要读取当前配置 | get_current_config 使用 part_name 与用户身份查询配置,不存在时返回空对象。 |
生成当前配置接口、默认值策略和前端封装。 |
| 桌面端需要保存配置 | update_config 支持 setting_data 载荷或展开字段载荷,并按 user_uuid + part_name 更新。 |
生成事务保存、重复记录清理、返回 created 状态。 |
| 用户数据需要隔离 | get_queryset 对登录用户按 user_uuid 或 creator 过滤,匿名列表返回空。 |
生成权限边界、越权用例和匿名访问处理。 |
| JSON 配置需要稳定转换 | crud.ts 在编辑时把对象转成 textarea 字符串,提交时尝试解析回 JSON。 |
生成 valueResolve、valueBuilder、解析失败提示和保存回显。 |
可以直接使用下面的Prompt进行模块功能的设计
请 Codex 基于教育管理系统真实源码设计“Tauri用户配置”模块。
模块定位:
Tauri用户配置用于保存桌面工具的用户级模块配置。后端通过 UserConfig 模型保存 part_name、setting_data、user_uuid;前端通过 FastCrud 列表查看配置,并使用 JSON 弹窗展示 setting_data。
源码范围:
server_backend/modules/Tauri/models.py
server_backend/modules/Tauri/views_app/UserConfig.py
server_backend/modules/Tauri/utils.py
server_backend/modules/Tauri/urls.py
server_vue3/src/views/modules/Tauri/UserConfig/index.vue
server_vue3/src/views/modules/Tauri/UserConfig/api.ts
server_vue3/src/views/modules/Tauri/UserConfig/crud.ts
核心字段:
part_name:模块名称
setting_data:配置数据,JSONField
user_uuid:用户 UUID 字符串
creator、creator_name、creator_username:创建用户相关信息
create_datetime、update_datetime、id:基础审计字段
接口范围:
api/Tauri/UserConfig/
GET 列表、POST 新增、PUT 更新、PUT 软删除
POST get_current_config/
POST update_config/
设计要求:
1. 输出页面结构、数据模型、接口规则、权限边界和验收标准。
2. 说明 part_name 与 setting_data 的保存、读取、回显联动。
3. 登录用户按 user.uuid 隔离数据,匿名桌面端必须通过 client_uuid 建立身份。
4. setting_data 需要支持对象、数组和基础类型,前端编辑时要完成 JSON 字符串与对象的转换。
5. 只允许设计源码中存在的能力,不要加入未在源码中出现的扩展能力。
后端设计
后端设计重点不是堆 CRUD 接口,而是搭建可复用的配置数据底座。server_backend/modules/Tauri/models.py 中的 UserConfig 继承 CoreModel 与 SoftDeleteModel,核心字段是 part_name、setting_data、user_uuid。setting_data 使用 models.JSONField,说明配置不是固定字段表单,而是面向 Tauri 工具模块的可变结构。
接口层位于 server_backend/modules/Tauri/views_app/UserConfig.py。UserConfigViewSet 使用 CustomModelRefSerializer(model=UserConfig, ref_name="UserConfig"),http_method_names = ["get", "put", "post"],基础删除由前端 DelObj 发起 PUT is_deleted=1 完成软删除。筛选层使用 DjangoFilterBackend、SearchFilter 与 CustomModelInFilter.create_for_model,对 part_name、creator_username 提供模糊查询。
身份与配置解析集中在 server_backend/modules/Tauri/utils.py 的 UserConfigViewSetUtilsMixin。get_queryset 只返回当前登录用户的数据,条件为 Q(user_uuid=str(user.uuid)) | Q(creator=user);匿名访问后台列表时返回空查询集。_get_part_name 同时支持 body 和 query 参数,_extract_payload 支持 {part_name, setting_data} 与 {part_name, ...配置字段} 两种提交方式。update_config 使用 transaction.atomic() 和 select_for_update() 锁定同一 user_uuid + part_name 的记录,只保留最新配置并清理历史重复记录。
| 后端设计项 | 设计重点 | Codex 生成方向 |
|---|---|---|
| 数据模型 | UserConfig 包含 part_name、setting_data、user_uuid,并继承审计字段和软删除能力。 |
保持 db_table = "Tauri_UserConfig",补齐字段说明、索引、序列化和迁移检查。 |
| 序列化逻辑 | CustomModelRefSerializer 动态引用模型,前端可读取 creator_name、creator_username、时间字段。 |
生成字段白名单、JSON 返回结构和空配置默认值。 |
| 查询筛选 | part_name、creator_username 支持模糊查询,后台列表只返回当前用户数据。 |
生成 filterset、搜索参数、分页和越权测试。 |
| 当前配置读取 | get_current_config 根据身份和 part_name 返回 {part_name, setting_data},缺省为 {}。 |
补齐 action 路由说明、请求体校验和前端 API 封装。 |
| 配置保存更新 | update_config 按 user_uuid + part_name 原子更新,返回 created、part_name、setting_data。 |
保持事务、重复记录清理、payload 提取和异常响应。 |
| 身份兼容 | 登录态使用 user.uuid,未登录桌面端按 client_uuid 识别。 |
统一 client_uuid 字符串处理,避免注释与实现不一致。 |
| 路由注册 | urls.py 将 UserConfigViewSet 注册为 router.register('UserConfig', UserConfigViewSet, 'UserConfig')。 |
保持接口前缀 api/Tauri/UserConfig/,补充 action 路径文档。 |
可以直接使用下面的Prompt进行后端代码的设计
请 Codex 按“Tauri用户配置”业务从零设计或补齐后端代码。
后端源码范围:
server_backend/modules/Tauri/models.py
server_backend/modules/Tauri/views_app/UserConfig.py
server_backend/modules/Tauri/utils.py
server_backend/modules/Tauri/urls.py
必须遵守的现有结构:
1. 模型为 UserConfig,表名为 Tauri_UserConfig,继承 CoreModel 和 SoftDeleteModel。
2. 字段包含 part_name、setting_data、user_uuid,setting_data 使用 JSONField。
3. UserConfigViewSet 使用 CustomModelViewSet 和 CustomModelRefSerializer。
4. 路由注册为 api/Tauri/UserConfig/。
5. 基础请求方法限制为 get、put、post,删除按软删除处理。
需要实现或校准的接口:
1. 列表查询:支持分页、part_name 模糊查询、creator_username 模糊查询。
2. get_current_config:POST,按登录用户或 client_uuid 加 part_name 查询当前配置,不存在时返回空对象。
3. update_config:POST,支持 setting_data 载荷,也支持把除 part_name、client_uuid 外的字段作为配置载荷。
4. update_config 必须用事务处理同一 user_uuid + part_name 的配置更新,并清理历史重复记录。
5. 登录用户只能访问自己的配置,管理员是否可查看全量需要在权限规则中明确,匿名后台列表不得返回全量数据。
需要特别检查:
1. client_uuid 应按字符串处理,避免代码假设其存在 hex 属性。
2. setting_data 允许对象、数组、字符串、数字、布尔值,非法载荷要返回明确错误。
3. 返回结构保持 SuccessResponse 和 ErrorResponse 规范。
4. 只补齐数据联动相关接口,不添加未在源码中出现的扩展能力。
输出内容:
涉及文件、模型字段、序列化规则、接口视图、路由、权限控制、异常响应和测试建议。
前端设计
前端设计重点不是把字段堆到页面上,而是让管理端能高效定位、查看和处理配置数据。server_vue3/src/views/modules/Tauri/UserConfig/index.vue 使用 fs-page 与 fs-crud 承载列表,通过 openJsonDialog 打开配置数据弹窗;弹窗同时展示 JSON 原文、树形结构和扁平表格,并支持复制完整 JSON 或单个字段值。
接口封装位于 server_vue3/src/views/modules/Tauri/UserConfig/api.ts,当前已有 GetList、AddObj、UpdateObj、DelObj、GetObj、putObj。后端已经提供 get_current_config 和 update_config 两个 action,前端生成或补齐时应增加同名封装,供 Tauri 工具页面或配置表单调用。crud.ts 中 part_name 支持筛选,creator_username 作为搜索字段但不在列表和表单展示,setting_data 列渲染为“查看配置”按钮,并通过 valueResolve、valueBuilder 完成 JSON 对象与 textarea 文本之间的转换。
当前 crud.ts 的 editRequest 调用形态需要同步校准:页面调用 api.UpdateObj(row.id, form),而 api.ts 中 UpdateObj 只接收一个带 id 的对象。Codex 补齐前端时应统一为 UpdateObj({ ...form, id: row.id }),或调整 API 函数签名,避免编辑请求实际无法正确拼接地址。
| 前端设计项 | 设计重点 | Codex 生成方向 |
|---|---|---|
| 页面容器 | index.vue 使用 fs-page、fs-crud,页面挂载时执行 crudExpose.doRefresh()。 |
保持 FastCrud 生命周期,生成初始化刷新和上下文方法。 |
| 列表配置 | crud.ts 配置序号、用户名、模块名称、配置数据、创建时间、更新时间。 |
生成列宽、对齐、分页序号和可搜索字段。 |
| JSON 查看 | setting_data 列通过按钮调用 openJsonDialog(row.setting_data, row.part_name)。 |
生成 JSON 安全解析、树形展示、表格展开和复制操作。 |
| 表单转换 | valueResolve 将对象格式化为 JSON 字符串,valueBuilder 提交前尝试解析字符串。 |
保持 textarea 编辑、解析失败提示和后端校验联动。 |
| 接口封装 | api.ts 已有基础 CRUD,缺少后端 action 的前端封装。 |
补齐 getCurrentConfig、updateConfig,统一 UpdateObj 参数签名。 |
| 权限按钮 | 当前新增、查看、编辑隐藏,删除显示,软删除由 DelObj 发起 PUT。 |
按业务权限决定按钮展示,避免前端按钮与后端权限冲突。 |
| 保存回显 | 保存后应刷新列表或回填配置弹窗,当前配置接口应返回 part_name、setting_data。 |
生成提交状态、错误提示、刷新策略和回显校验。 |
可以直接使用下面的Prompt进行前端代码的设计
请 Codex 按“Tauri用户配置”业务生成或补齐前端页面代码。
前端源码范围:
server_vue3/src/views/modules/Tauri/UserConfig/index.vue
server_vue3/src/views/modules/Tauri/UserConfig/api.ts
server_vue3/src/views/modules/Tauri/UserConfig/crud.ts
页面现状:
1. index.vue 使用 fs-page 和 fs-crud。
2. 页面提供 JSON 弹窗,包含 JSON 原文、el-tree 展开视图、el-table 扁平字段表和复制按钮。
3. crud.ts 中 part_name 可搜索,creator_username 可搜索但不在列表和表单展示。
4. setting_data 列通过“查看配置”按钮打开 JSON 弹窗。
5. setting_data 表单使用 el-input textarea,编辑时把对象转成 JSON 字符串,提交时尝试解析回 JSON。
6. api.ts 已有 GetList、AddObj、UpdateObj、DelObj、GetObj、putObj。
需要补齐或修正:
1. 为后端 action 增加 getCurrentConfig 和 updateConfig 封装,请求地址为 api/Tauri/UserConfig/get_current_config/ 与 api/Tauri/UserConfig/update_config/。
2. 统一 editRequest 与 UpdateObj 的参数签名,避免 row.id 和 form 分开传入后接口地址丢失 id。
3. 保存配置后刷新列表,并在需要时回显 part_name 和 setting_data。
4. JSON 解析失败时给出明确提示,不能把错误字符串静默提交成错误结构。
5. 按权限配置新增、编辑、查看、删除按钮,当前没有真实多选操作入口时不要额外生成同类按钮。
6. 只实现数据联动、JSON 查看和配置保存回显,不添加源码中不存在的扩展能力。
输出内容:
页面结构、API 封装、FastCrud 列配置、表单字段、JSON 弹窗、权限按钮、保存回显和测试步骤。
扩展功能
Tauri用户配置的扩展能力主要体现在数据联动。它超出普通 CRUD 的地方,是 part_name 决定配置作用域,setting_data 承载动态 JSON,user_uuid 决定数据归属;前端还需要把 JSON 数据在列表、弹窗、表单和保存接口之间稳定转换。源码中没有其他已实现的扩展入口,因此不生成对应章节。
| 扩展功能 | 主要用途 | 落地重点 |
|---|---|---|
| 数据联动 | 将模块标识、用户身份、JSON 配置、列表筛选和保存回显串成稳定数据流。 | part_name 与 setting_data 必须同进同出,前端转换结果要与后端 payload 解析一致。 |
数据联动
数据联动的主线由 part_name、setting_data 和 user_uuid 构成。读取配置时,后端从 body 或 query 中解析 part_name,再结合登录用户 user.uuid 或匿名端 client_uuid 查询配置;没有记录时返回空对象,前端据此填充默认配置。保存配置时,update_config 从 setting_data 或展开字段中提取 payload,并在事务内更新同一用户、同一模块的记录。
前端联动集中在 crud.ts 和 index.vue。列表筛选输入的 part_name 会进入 GetList(query),后端 filterset 负责匹配;列表中的 setting_data 不直接铺满表格,而是通过“查看配置”按钮进入 JSON 弹窗。表单编辑时,valueResolve 把对象转为格式化 JSON,valueBuilder 在提交前尝试解析回对象,保证用户看到的是可编辑文本,后端接收的是结构化数据。
交给 Codex 生成时,边界需要明确在真实字段和真实接口内。setting_data 可以是对象、数组、字符串、数字或布尔值,但不能把 part_name、client_uuid 混入配置载荷;匿名客户端只能通过当前配置接口访问自己的配置,不应通过后台列表看到全量数据;JSON 解析失败时应由前端提示或后端拒绝,不能伪装为正常配置保存。
可以直接使用下面的Prompt进行数据联动设计
请 Codex 基于真实源码补齐“Tauri用户配置”的数据联动设计。
源码范围:
server_backend/modules/Tauri/models.py
server_backend/modules/Tauri/views_app/UserConfig.py
server_backend/modules/Tauri/utils.py
server_vue3/src/views/modules/Tauri/UserConfig/index.vue
server_vue3/src/views/modules/Tauri/UserConfig/api.ts
server_vue3/src/views/modules/Tauri/UserConfig/crud.ts
联动对象:
part_name:配置作用域和列表筛选条件
setting_data:可编辑 JSON 配置
user_uuid:用户隔离字段
client_uuid:匿名桌面端身份字段
creator_username:后台搜索字段
联动要求:
1. get_current_config 使用 part_name 加用户身份读取配置,缺省返回空对象。
2. update_config 使用 part_name 加用户身份保存配置,setting_data 与展开字段两种载荷都要支持。
3. 保存时排除 part_name 和 client_uuid,避免身份字段进入 setting_data。
4. 前端 setting_data 需要在对象、JSON 字符串、树形视图、扁平表格之间转换。
5. part_name 搜索字段要与后端 filterset 保持一致。
6. 保存成功后刷新列表或回显配置,保存失败时展示明确错误。
7. 不新增源码中不存在的扩展能力。
输出接口设计、前端交互、字段转换、异常处理、权限约束和验收清单。
Codex开发标准
使用 Codex 开发 Tauri用户配置模块时,不能直接让模型随意写代码。需要用 PDD 定义业务边界,用 SOP 约束目录结构和开发顺序,用接口权限规则限制访问范围,再用验收标准检查生成结果是否与源码一致。
SOP 标准
SOP 用于约束代码目录、文件职责和开发顺序。Tauri用户配置模块的 SOP 需要覆盖后端模型、接口视图、工具类、路由、前端 API、FastCrud 配置、JSON 弹窗和模块文档,避免 Codex 只改一个页面而漏掉接口、权限或验收文档。
docs/modules/Tauri用户配置/
├── pdd.md
├── api.md
├── test-cases.md
└── codex-sop.md
server_backend/modules/Tauri/
├── models.py
├── urls.py
├── utils.py
└── views_app/
└── UserConfig.py
server_vue3/src/views/modules/Tauri/UserConfig/
├── index.vue
├── api.ts
└── crud.ts
_sop_workflow/project_pr/Tauri工具/数据信息_Tauri工具数据_用户配置/
├── _instruction.png
└── 教育管理系统Tauri用户配置用Codex自动生成项目代码.md
| 开发阶段 | Codex 执行目标 | 输出结果 |
|---|---|---|
| 模块设计 | 读取 UserConfig 模型、ViewSet、mixin、路由和前端页面。 |
输出字段、接口、页面、权限和联动边界。 |
| 文档规划 | 在 docs/modules/Tauri用户配置/ 下建立 PDD、API、测试和 SOP 文档。 |
形成 pdd.md、api.md、test-cases.md、codex-sop.md。 |
| 后端实现 | 校准模型、序列化、列表筛选、当前配置读取、配置保存和软删除。 | 后端接口可按登录用户或 client_uuid 读写配置。 |
| 前端实现 | 补齐 API 封装、FastCrud 列表、JSON 弹窗、表单转换和保存回显。 | 页面可搜索、查看、复制、编辑配置数据。 |
| 数据联动 | 打通 part_name、setting_data、user_uuid、client_uuid 与页面状态。 |
配置读写、列表筛选、JSON 回显保持同一数据口径。 |
| 验收修复 | 按 PDD 检查接口、权限、前端调用和异常处理。 | 输出验收结果与需修复文件位置。 |
可以直接使用下面的Prompt进行SOP撰写
请 Codex 按教育管理系统模块开发 SOP,从零实现或补齐“Tauri用户配置”模块。
执行要求:
1. 先输出目录结构,不要直接写代码。
2. 先生成 docs/modules/Tauri用户配置/pdd.md、api.md、test-cases.md 和 codex-sop.md。
3. 文档确认模块边界后,再根据文档生成或修正项目代码。
4. 代码范围限定在以下文件:
server_backend/modules/Tauri/models.py
server_backend/modules/Tauri/views_app/UserConfig.py
server_backend/modules/Tauri/utils.py
server_backend/modules/Tauri/urls.py
server_vue3/src/views/modules/Tauri/UserConfig/index.vue
server_vue3/src/views/modules/Tauri/UserConfig/api.ts
server_vue3/src/views/modules/Tauri/UserConfig/crud.ts
5. 后端需要覆盖 UserConfig 模型、序列化、列表筛选、get_current_config、update_config、软删除和权限边界。
6. 前端需要覆盖列表查询、part_name 搜索、setting_data JSON 查看、JSON 表单转换、接口封装、保存回显和异常提示。
7. 数据联动需要覆盖 part_name、setting_data、user_uuid、client_uuid 与 creator_username 的查询和回显关系。
8. 不生成源码中不存在的扩展能力。
输出格式:
目录结构
开发阶段表
后端任务清单
前端任务清单
数据联动任务清单
验收与修复清单
PDD 标准
PDD 是模块设计与验收文档,用来约束 Codex 输出是否符合真实业务。Tauri用户配置模块的 PDD 需要把用户隔离、配置键、JSON 载荷、前端回显和接口返回写成可验证条目,避免代码看似生成完成,但桌面端无法按当前用户读取配置。
| 验收维度 | 验收标准 | 需要检查的文件 |
|---|---|---|
| 业务目标 | 模块能够按用户和模块名称保存 Tauri 工具配置,后台可查看配置内容。 | pdd.md、models.py、index.vue |
| 页面结构 | 页面包含列表、模块名称搜索、配置查看弹窗、复制操作和基础时间字段。 | server_vue3/src/views/modules/Tauri/UserConfig/index.vue、crud.ts |
| 数据模型 | UserConfig 包含 part_name、setting_data、user_uuid,并保留软删除和审计字段。 |
server_backend/modules/Tauri/models.py |
| 接口规则 | api/Tauri/UserConfig/ 支持列表、保存、更新、软删除、当前配置读取和配置更新。 |
views_app/UserConfig.py、api.ts、api.md |
| 权限控制 | 登录用户只能访问自己的配置,匿名端必须提供 client_uuid,后台匿名列表不得返回全量数据。 |
utils.py、views_app/UserConfig.py、test-cases.md |
| 数据联动 | part_name、setting_data、user_uuid、client_uuid 的读取、保存、回显一致。 |
utils.py、crud.ts、index.vue |
| JSON 展示 | setting_data 可展示为原文、树形和表格,复制操作可用,异常 JSON 有提示。 |
index.vue、crud.ts |
| 测试用例 | 覆盖登录用户读取、匿名 client_uuid 读取、重复配置清理、JSON 解析失败、越权访问。 |
test-cases.md |
可以直接使用下面的Prompt进行PDD 验收
请 Codex 根据 docs/modules/Tauri用户配置/pdd.md 对“Tauri用户配置”模块进行验收。
验收范围:
server_backend/modules/Tauri/models.py
server_backend/modules/Tauri/views_app/UserConfig.py
server_backend/modules/Tauri/utils.py
server_backend/modules/Tauri/urls.py
server_vue3/src/views/modules/Tauri/UserConfig/index.vue
server_vue3/src/views/modules/Tauri/UserConfig/api.ts
server_vue3/src/views/modules/Tauri/UserConfig/crud.ts
docs/modules/Tauri用户配置/api.md
docs/modules/Tauri用户配置/test-cases.md
验收维度:
1. 业务目标:是否能按用户和 part_name 保存 Tauri 工具配置。
2. 页面结构:是否包含列表、搜索、JSON 查看、复制和时间字段。
3. 数据模型:UserConfig 字段、软删除、审计字段是否符合 PDD。
4. 接口规则:列表、保存、更新、软删除、get_current_config、update_config 是否可用。
5. 权限控制:登录用户、匿名 client_uuid、后台匿名访问和越权访问是否符合规则。
6. 数据联动:part_name、setting_data、user_uuid、client_uuid 的读取、保存、回显是否一致。
7. JSON 展示:对象、数组、字符串、数字、布尔值和解析失败场景是否处理。
8. 测试用例:是否覆盖成功路径、失败路径、重复记录清理和前后端参数不一致。
输出要求:
请输出验收结果表,标记通过、未通过和需要修复的文件位置。不要只给结论,需要指出具体问题、影响范围和修复建议。
总结
Tauri用户配置不是简单的后台表格,而是教育管理系统中连接桌面工具、用户身份和动态配置的业务闭环。它用 part_name 定义模块范围,用 setting_data 保存可变配置,用 user_uuid 和 client_uuid 控制数据归属。
用 Codex 开发该模块时,PDD 负责定义业务边界和验收标准,SOP 负责约束目录结构和开发顺序,Prompt 负责把页面、模型、接口、权限和数据联动拆成分阶段任务。这样生成的代码更容易回到真实项目中运行和验收。
更多推荐



所有评论(0)