# 研发流水线 — 质量门禁规范 # 每个阶段完成后,由马总管自动执行质量门禁检查 --- ## 质量门禁总览 ``` 需求 ──→ [QG1] ──→ 设计 ──→ [QG2] ──→ 编码 ──→ [QG3] ──→ 测试 ──→ [QG4] ──→ 部署 ``` --- ## QG1: 需求分析门禁 **执行时机:** ①需求分析完成后,进入②设计之前 | 检查项 | 通过标准 | 执行方式 | |--------|---------|---------| | 产物格式完整 | YAML所有必填字段非空 | 自动 | | 验收标准可测试 | 每条AC标记testable=true | 自动 | | 范围边界清晰 | in_scope和out_of_scope均非空 | 自动 | | 用户确认 | 乔确认需求理解正确 | 人工 | **不通过处理:** 补充缺失信息,重新跟乔确认 --- ## QG2: 技术方案门禁 **执行时机:** ②设计完成后,进入③编码之前 | 检查项 | 通过标准 | 执行方式 | |--------|---------|---------| | 产物格式完整 | YAML所有必填字段非空 | 自动 | | 文件变更清单 | file_changes列表非空 | 自动 | | API设计与需求对齐 | 每个AC至少对应一个API或功能点 | AI审查 | | 无遗留阻断问题 | open_issues中无阻断级问题 | 自动 | | 重大决策确认 | 涉及架构变更时需乔确认 | 条件人工 | **不通过处理:** 反馈问题给架构师Agent重新设计(最多2轮) --- ## QG3: 编码实现门禁 **执行时机:** ③编码完成后,进入④审查之前 | 检查项 | 通过标准 | 执行方式 | |--------|---------|---------| | 产物格式完整 | YAML所有必填字段非空 | 自动 | | 代码可编译/无语法错误 | self_check.compiles=true | 自动 | | lint通过 | self_check.lint_passes=true | 自动 | | 文件变更与设计一致 | 实际变更文件 ⊆ 设计中的file_changes | AI审查 | | 无常驻进程残留 | 无未关闭的后台服务 | 自动 | **不通过处理:** 反馈给程序员Agent修复(最多3轮) --- ## QG4: 测试验证门禁 **执行时机:** ⑤测试完成后,进入⑥部署之前 | 检查项 | 通过标准 | 执行方式 | |--------|---------|---------| | 所有测试通过 | verdict=ALL_PASS | 自动 | | 覆盖率达标 | line_percent >= 阈值(见测试规范) | 自动 | | 无回归 | existing_tests_still_pass=true | 自动 | | 冒烟测试通过 | smoke.failed=0 | 自动 | | 部署确认 | 乔确认可以部署 | 人工 | **不通过处理:** 失败信息反馈给程序员Agent修复 → 重新测试(最多3轮) --- ## 门禁执行规则 ### 重试策略 ``` 第1次失败 → 同模型重试,附带失败原因 第2次失败 → 换备用模型重试 第3次失败 → 上报乔,进入人工介入 ``` ### 备用模型降级链(示例 — 根据实际可用模型替换) 降级原则:主模型失败时,按以下优先级替换: 1. 同平台其他模型(相同 API 端点) 2. 不同平台同等级模型 3. 快速响应模型兜底 | 角色 | 降级策略 | |------|---------| | 架构师 | 强推理模型 → 同平台次强模型 → 通用模型 | | 设计师 | 编码版模型 → 通用强模型 → 快速模型 | | 主程序员 | 深度编码模型 → 其他编码模型 → 快速模型 | | 结对程序员 | 与主程序员不同家族模型 → 主程序员模型 | | 审查员 | 深度推理模型 → 架构师模型 | | 测试员 | Agent能力强的模型 → 编码模型 | ### 超时保护 | 阶段 | 超时时间 | 超时处理 | |------|---------|---------| | ②设计 | 30分钟 | 终止,记录已有产出,人工介入 | | ③UI设计 | 10分钟 | 换模型重试,精简prompt | | ④编码 | 50分钟 | 终止,保留已写代码,人工介入 | | ⑤审查 | 25分钟 | 终止,标记"审查超时",进入测试 | | ⑥测试 | 40分钟 | 终止,保留已有测试结果,人工介入 |