搜索/在内容生成工作流应用中,通过 OpenAPI 让后端和前端保持一致

在内容生成工作流应用中,通过 OpenAPI 让后端和前端保持一致

在修改这样一个应用时使用:用户先提取对象,在准备页面确认,再到生成工作区启动生成。它会在每次 API 变更后重新生成 OpenAPI 类型,分开各界面的职责和各种状态,并让 architecture 文档、plans 和发布说明保持最新。

要使用这个AI规则
## 每次修改后端 API 后,重新生成 OpenAPI 类型和客户端 每次修改后端API后,都要运行仓库的OpenAPI更新命令。生成的schema和前端类型属于同一次变更,不能作为以后再处理的清理工作。 前端代码必须通过生成的OpenAPI客户端调用后端端点。不得新增手写service封装,重复定义生成的请求契约和响应契约。 严格划分后端职责: - API层负责解析输入、执行身份认证和授权以及组织响应; - service层负责业务规则、状态流转和数据编排。 跨层的生成契约,包括输入DTO、输出DTO和供应商配置,应放在共享contracts模块中。task模块只应包含任务封装、分派和执行编排,不得定义共享DTO。 integration模块可以依赖共享contracts,但不得依赖task内部的类型模块。 API、类型或状态模型发生变化时,要同时更新后端实现、OpenAPI文档、生成的前端类型、客户端调用和直接相关的文档。 ## 为每个函数写注释,并把当前事实和未来计划分开写进文档 前端样式重复超过一次时,应优先抽取可复用组件或共享样式结构,而不是再次复制。 每个函数、类或同类代码块都需要注释,说明它做什么以及为什么存在。复杂逻辑还应记录相关参数、返回行为和关键内部决策。注释必须与实现保持同步。 编写前先对文档分类: - `guide`说明如何执行任务或接入功能; - `architecture`记录当前已经实现的系统; - `plans`记录未来工作、分阶段任务和拟议变更; - `reference`保存用于查阅的稳定事实; - `blog`保存发布说明。 当前边界、已实现的状态流转和实际行为应写入architecture文档。仍在设计或执行的工作应写入plans。操作步骤和开发工作流应写入guide。 不要在一篇how-to文档中混写当前事实和未来意图。即使涉及同一主题,也要分别写入architecture和plans。 除非任务明确要求,否则不得修改已经定稿的历史发布说明。 ## 让任务中心保持轻量,并让每个工作流界面各司其职 将主要用户工作流拆分为职责明确的界面: - 准备页面提取领域数据、确认候选项、修正基础信息,并将对象推进到`ready`; - 生成工作区检查产出准备度、管理关键素材和参数、启动生成并展示结果; - 任务中心只显示轻量、通用的任务信息,例如状态、进度、成功、失败、取消和返回入口。 不得把领域专用摘要、提示词调试上下文、素材映射或其他大量细节放入通用任务中心。应将这些内容保留在相应的准备、生成、执行或诊断面板中。 如果生成工作区仍保留提取工具,只能将其作为快捷入口或诊断手段。它们不得取代准备页面成为主要确认界面。 职责边界发生变化时,要同时更新相关UI和architecture文档。重新设计任务中心时,不得将其变成新的业务详情页面。 ## 对象状态只用于信息确认,不用于表示生成进度 领域对象的主状态只能用于表示信息确认状态: - `pending`表示仍有提取或确认工作未完成; - `ready`表示必需信息已经确认,可以开始后续准备。 不得使用该状态表示运行时生成状态。`generating`等值属于任务系统和runtime summary。 产出准备度应作为独立维度表示。对象对后续准备处于`ready`状态,并不保证已经满足所有生成条件。 每个用户界面都必须区分: 1. 信息确认状态; 2. 运行时任务状态; 3. 产出生成准备度。 状态语义发生变化时,要同步后端行为、OpenAPI、生成的前端类型、状态标签、导航条件和开发文档。 ## 在准备页面确认后,把用户引导到生成工作区 标准流程如下: 1. 从源内容中提取工作对象; 2. 在准备页面确认并修正提取的素材、对白或其他必需信息; 3. 进入生成工作区,检查关键素材、参考资料、产出参数和准备度; 4. 从生成工作区启动生成; 5. 在领域工作区查看结果,任务中心只用于查看通用任务进度。 准备页面负责提取、确认和修正。生成工作区负责生成准备、执行和结果查看。 准备成功后,要清楚地引导用户进入生成工作区。如果工作区发现对象尚未`ready`,应说明原因,并引导用户返回准备页面。 调整交互时要优先保证该流程。便利性快捷入口不得遮蔽规范的下一步,也不得将准备和生成合并到一个职责模糊的界面中。 ## 每次变更都更新 architecture 文档,并在发布说明中写出可直接使用的迁移步骤 architecture文档只记录当前真实生效的行为。plans记录正在推进的工作、分阶段任务、优先级和未来执行路径。 代码行为、状态语义或页面职责发生变化时,要在同一项工作中更新architecture文档。计划范围、优先级或顺序发生变化时,要更新plans。已经落地的计划应转入architecture或形成发布说明。 存在过时architecture或plans文档时,应将该项工作视为未完成。 发布说明必须包含`title`、`date`、`description`、`tags`和`authors`的frontmatter。只省略不适用的章节,并使用以下稳定顺序: 1. 重点内容; 2. 新增、变更和修复; 3. 破坏性变更和弃用项; 4. 安全事项和已知问题; 5. 迁移指南和回滚说明; 6. 兼容性矩阵、验证命令和升级检查清单; 7. 参考资料、贡献者说明和致谢。 发布说明应采用维护者发布口吻:先给出结论和可执行信息,使用短段落和列表,并保持术语稳定。要明确区分新增能力、行为变化、兼容性风险和已知问题。 迁移步骤、回滚步骤和验证命令必须能够直接使用,不能含糊。 ## 只有生成的类型和文档都与代码一致时才算完成 只有满足所有适用条件时,工作才算完成: 1. 实现已经落地,没有明显占位内容或过时兼容代码残留; 2. 新增和修改的函数及类具有准确、有用的注释; 3. API变更已经同步OpenAPI、生成的前端类型和生成客户端的调用; 4. 当前行为已反映在architecture文档中,未来工作已反映在plans中; 5. 准备、生成和任务中心的职责仍然彼此分离; 6. 前端变更通过仓库的TypeScript no-output检查; 7. 后端变更通过相关测试,或至少通过文档规定的语法和import检查; 8. 完成报告说明了变更内容和已经通过的验证; 9. 剩余工作或后续建议单独列出。 只要代码、契约、生成的类型、文档、状态语义或工作流界面之间存在不一致,就不得宣称完成。