12 KiB
OneOS终态交付模型与迁移规则
目录
- 模型选择与边界
- 工作项和状态
- 原生Y规则
- AI与Webhook桥接
- 迁移就绪门禁
- 分阶段实施
- 验收与负向测试
- 已知风险和回滚
1. 模型选择与边界
OneOS终态模型以需求为阶段看板唯一真相:
迭代
├─ 多个产品类需求
├─ 按需求分包的测试计划
└─ 一条【发版】任务
产品类需求
└─ 一条【交付】主任务
├─ 多条【开发】任务
└─ 一条【测试】任务
每个项目只能选择一个主模型:
stage_tasks:分析、设计、开发、测试各建阶段任务,使用R/TK控制。oneos_delivery:一条交付主任务镜像需求,多开发任务汇总,使用Y/A控制。
不得同时启用两套进场规则。若项目仍有分析/设计标签驱动的R规则,先记录为legacy_active,完成迁移就绪检查后再停用。
2. 工作项和状态
2.1 任务身份
| 任务 | 数量 | 必须关系 | 识别优先级 |
|---|---|---|---|
【交付】主任务 |
每需求1条 | 正式关联需求 | 独立工作项类型 > 任务标签交付 > 标题前缀流程约束 |
【开发】任务 |
每需求1..N条 | 正式关联需求和主任务 | 独立类型 > 标签开发 > 标题前缀 |
【测试】任务 |
每需求1条 | 正式关联需求和主任务 | 独立类型 > 标签测试 > 标题前缀 |
【发版】任务 |
每迭代1条 | 正式关联迭代和本批需求 | 独立类型 > 标签发版 > 标题前缀 |
标题关键字本身不构成正式关系。规则编辑器不能读取关联任务的类型、标签或标题时,不得声称原生规则能区分主任务和开发任务;使用桥接或人工门禁。
2.2 需求状态
目标状态顺序:
待处理 → 已确认 → 分析中 → 分析完成 → 设计中 → 设计完成
→ 待开发 → 开发中 → 开发完成 → 待测试 → 测试中 → 测试完成
→ 发布中 → 发布完成 / 发布失败 → 已关闭
允许的快轨至少包括已确认 → 待开发和设计完成 → 待开发。发布失败 → 发布中用于重试。已有近义状态先映射,禁止静默创建完成发布/发布完成、已完成/已关闭等重复状态。
2.3 任务状态
- 主任务:首选与需求同名镜像状态。
- 开发任务:
待处理 → 处理中 → 已完成,另有取消态。 - 测试任务:
待处理/待测试 → 测试中 → 已完成。 - 发版任务:
待处理 → 发布中 → 发布完成/发布失败。
若任务工作流不能承载主任务全量状态,不配置Y02–Y16原生镜像;由桥接更新需求并记录主任务显示口径。
3. 原生Y规则
统一规则前缀:[OneOS终态] Yxx ...。保存后重新打开核对事件、条件、动作、顺序、启用状态和执行账号。
3.1 主任务镜像
| ID | 触发 | 条件 | 动作 | 默认方式 |
|---|---|---|---|---|
| Y01 | 新增正式关联主任务 | 主任务可可靠识别;需求为待处理/已确认 | 需求与主任务进入分析中或获批快轨 | 原生/桥接 |
| Y02 | 主任务到分析完成 | 正式关联唯一需求 | 需求到分析完成 | 原生 |
| Y03 | 主任务到设计中 | 正式关联唯一需求 | 需求到设计中 | 原生 |
| Y04 | 主任务到设计完成 | 正式关联唯一需求 | 需求到设计完成 | 原生 |
| Y05 | 主任务到待开发 | 正式关联唯一需求 | 需求到待开发;负责人按项目配置 | 原生/桥接 |
| Y06 | 主任务到开发中 | 正式关联唯一需求 | 需求到开发中 | 原生 |
| Y07 | 主任务到开发完成 | 正式关联唯一需求 | 需求到开发完成 | 原生 |
| Y08 | 主任务到待测试 | 正式关联唯一需求 | 需求到待测试 | 原生 |
| Y09 | 主任务到测试中 | 正式关联唯一需求 | 需求到测试中 | 原生 |
| Y10 | 主任务到测试完成 | Testhub门禁通过 | 需求到测试完成 | 桥接优先 |
| Y11 | 主任务到发布中 | 发版任务和迭代范围有效 | 需求到发布中 | 原生/桥接 |
| Y12 | 主任务到发布完成 | 生产发布证据有效 | 需求到发布完成 | 桥接 |
| Y13 | 主任务到发布失败 | 生产发布失败证据有效 | 需求到发布失败并记录原因 | 桥接 |
| Y14 | 主任务到已关闭 | 产品验收证据有效 | 需求到已关闭 | 默认人工 |
| Y15 | 需求状态变化 | 存在唯一主任务且无循环风险 | 主任务同名镜像 | 可选原生 |
| Y16 | 需求快轨到待开发 | 存在唯一主任务 | 主任务到待开发 | 原生/桥接 |
每条双向镜像规则必须有防循环条件。平台无法区分“由本规则写入”的事件时,只保留一个权威方向。
3.2 开发任务汇总
| ID | 触发 | 条件 | 动作 | 默认方式 |
|---|---|---|---|---|
| Y20 | 新增第一条开发任务或正式关联开发分支 | 需求=待开发;开发任务数量≥1;任务已指派 | 需求和主任务到开发中;对应开发任务处理中 | 原生/桥接 |
| Y21 | 开发任务完成 | 非取消开发任务数量≥1且全部完成;全部相关MR已合并 | 需求和主任务到开发完成 | 桥接优先 |
| Y22 | 开发完成 | 同需求无未取消测试任务;幂等键未处理 | 创建并关联唯一测试任务,进入待测试 | 桥接 |
现有的“任务添加分支且标签=开发,待处理→处理中”和“全部MR已合并且标签=开发,处理中→已完成”可作为Y20/Y21的任务侧子规则保留。需求侧“全部MR已合并”只能看到正式关联资产,必须执行多仓库负向测试。
3.3 测试、发布和迭代
| ID | 触发 | 条件 | 动作 | 默认方式 |
|---|---|---|---|---|
| Y30 | 创建测试任务 | 正式关联需求和主任务 | 需求/主任务到待测试 | 桥接 |
| Y31 | 首条用例执行或测试负责人开工 | 测试任务=待处理/待测试 | 测试任务、需求、主任务到测试中 | 原生/人工 |
| Y32 | 测试验收完成 | 本需求用例包全部通过且缺陷闭环 | 三个对象完成测试阶段 | 桥接/人工 |
| Y33 | 发版任务提交 | 发版任务正式关联迭代与本批需求 | 发版任务和本批需求到发布中 | 原生/桥接 |
| Y34 | 生产发布成功 | 流水线执行、环境、范围、签名和幂等均有效 | 到发布完成 | 桥接 |
| Y35 | 生产发布失败 | 同上;失败证据有效 | 到发布失败并记录原因 | 桥接 |
| Y40 | 需求到待开发 | 未关联迭代 | 通知产品负责人,不自动写入未知迭代 | 通知/人工 |
test部署只能允许测试开始,不能触发Y34。发布完成后必须停留,等待产品/业务验收;禁止自动进入已关闭。
4. AI与Webhook桥接
| ID | 能力 | 最小门禁 |
|---|---|---|
| A01 | 发布原型/附件并回写需求描述 | 外部存储授权;链接可审计 |
| A02 | 生成并保留更新内容历史 | 不覆盖历史段;OneOS 默认调用 $oneos-autoprd 第 10 章「功能变更记录」(自上次定稿以来);旧段挪到「更新内容·历史」 |
| A02B | 生成产品可读需求说明 | 不写实现机密;保留来源;OneOS 默认调用 $oneos-autoprd 全文/交付口径写入「需求说明」 |
| A03 | 建需求和唯一主任务并快轨待开发 | 幂等查询;正式关系可见;建单写描述前先完成 A02+A02B(AutoPRD);进入待开发时按 auto-stage-task.md 建/复用与需求同名任务,负责人何斐,时间沿用需求 |
| A03B | 需求进入分析中/设计中自动建同名阶段任务 | 标签分析/设计;负责人=需求创建人;正式关联;时间沿用需求;与 A03 同一套查重 |
| A04 | 拆分多条开发任务 | 负责人、范围和父子关系明确 |
| A05 | 按MR证据关闭开发任务 | 所有仓库、目标分支和关联关系完整 |
| A06 | 全部开发完成后建唯一测试任务 | 幂等键=项目ID+需求ID+create_test_task |
| A07 | 按Testhub结果完成测试 | 用例与缺陷口径满足TC/DF控制 |
| A08 | 按迭代创建发版任务和更新说明 | 正式关联迭代和本批需求 |
| A09 | 发布成败回写 | 验证环境、签名、时间戳、执行ID和范围 |
| A10 | 产品验收后关闭 | 明确验收人和证据;不得由发布成功替代 |
所有桥接必须具备:最小权限服务账号、签名、时间戳、防重放、幂等、失败重试、审计日志和人工回退。不得把未部署的AI能力写成已自动化。
5. 迁移就绪门禁
只有全部满足时才停用旧R/TK进场规则:
- 需求状态已包含
待测试、发布中、发布失败,并配置必要流转边。 - 主任务能被可靠识别;若只能靠标题前缀,已明确由桥接处理,不使用无过滤原生镜像。
- 主任务和开发/测试/发版任务的工作流已选定并验证。
- Y/A控制逐项指定
native_rule、integration_bridge、manual或not_supported。 - A03、A06、A08、A09具备幂等键、负责人和回退方案。
- Codeup前后端仓库、真实
dev/develop、正式关联和多仓库MR门禁已验证。 - Testhub按需求分包;未执行、阻塞、失败用例和仅“已修复”缺陷会阻塞测试完成。
- test、生产发布、发布变更和产品验收证据已分离。
- 已保存旧规则名称、条件、顺序、启用状态和执行账号证据。
L01、L02已停用,发布完成不会瞬时关闭。
未通过门禁时:保留当前可用规则,只停用会绕过验收或造成误触发的规则,并输出迁移计划。
6. 分阶段实施
- P0:补齐工作流、唯一主任务、快轨待开发、负责人和旧规则备份。
- P1:开发任务拆分、分支/MR双关联、多仓库完成门禁、唯一测试任务。
- P2:迭代、Testhub按需求分包、用例和缺陷复测闭环。
- P3:发版任务、生产流水线成败回写、发布失败重试、产品验收关闭。
每阶段先在隔离测试需求验证,再启用下一阶段。新规则不补触发历史事件;历史数据修正必须单独记录。
7. 验收与负向测试
| ID | 操作 | 期望 | 负向检查 |
|---|---|---|---|
| V01 | 创建需求和唯一主任务 | 正式关联且不重复 | 重放不得建第二条主任务 |
| V02 | 未建开发任务 | 保持待开发 | 主任务本身不得被当作开发任务 |
| V03 | 建两条开发任务 | 进入开发中 | 无正式关系或无负责人不触发 |
| V04 | 只完成一条开发任务/MR | 保持开发中 | 不得提前完成 |
| V05 | 所有开发任务和MR完成 | 开发完成并只建一条测试任务 | 重复回调不重复创建 |
| V06 | 同迭代其他需求未测完 | 本需求仍可独立完成测试 | 不按整个计划全绿判断 |
| V07 | 用例失败且缺陷仅已修复 | 保持测试中 | 未复测不得完成 |
| V08 | 复测通过/失败 | 用例通过+缺陷关闭 / 用例失败+缺陷重开 | 双方状态必须一致 |
| V09 | test部署成功 | 允许测试开始 | 不得发布完成 |
| V10 | 生产发布成功 | 发布完成并停留 | 不得自动已关闭 |
| V11 | 生产发布失败后重试 | 发布失败→发布中 | 原因和执行ID可审计 |
| V12 | 产品验收 | 已关闭 | 无验收证据不关闭 |
8. 已知风险和回滚
- “全部关联任务完成”若无法按任务身份过滤,会把主任务或测试任务纳入,默认交桥接。
- 仅标题前缀不能替代正式关系,也不能保证原生规则可过滤。
- 需求和主任务双向镜像可能循环,只保留一个权威方向或增加来源防重。
- 分支/MR只关联需求而未关联开发任务,会导致任务状态不更新。
- 发布完成自动关闭会绕过产品验收;
L01、L02默认停用。
回滚顺序:先禁用本次新增Y/A入口,恢复旧规则启用状态和顺序,再恢复状态流转边;保留已创建任务、关系和执行日志,删除任何资产需单独授权。