AI项目开发流程框架会议讲解.html 30 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <!doctype html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1">
  6. <title>AI 项目开发流程框架|团队宣讲与启用指南</title>
  7. <style>
  8. :root{--ink:#10233f;--muted:#5f718c;--paper:#f5f8fc;--white:#fff;--line:#dbe5f1;--blue:#2f6bff;--cyan:#17bfd6;--violet:#7956ed;--green:#20aa79;--amber:#f59e0b;--red:#e34c5b;--night:#091a34;--shadow:0 16px 45px rgba(24,55,96,.12)}
  9. *{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.68 "Microsoft YaHei","PingFang SC",Arial,sans-serif}
  10. .nav{position:sticky;top:0;z-index:10;background:rgba(9,26,52,.95);backdrop-filter:blur(14px);padding:12px 28px;display:flex;gap:18px;align-items:center;color:#e8f0ff}.brand{font-weight:800;white-space:nowrap}.nav a{font-size:13px;color:#aebfe0;text-decoration:none}.nav a:hover{color:white}.nav .pill{margin-left:auto;border:1px solid #42699a;border-radius:99px;padding:4px 10px;font-size:12px;color:#d9e9ff}
  11. main{max-width:1220px;margin:auto;padding:0 24px 80px;display:flex;flex-direction:column}.hero{order:0;position:relative;overflow:hidden;min-height:590px;width:100vw;margin:0 calc(50% - 50vw) 42px;padding:76px 24px;background:linear-gradient(120deg,#07172f 0%,#102f61 52%,#1c2872 100%);color:white}.hero:after{content:"";position:absolute;inset:auto -12% -35% auto;width:720px;height:720px;background:radial-gradient(circle,rgba(56,198,255,.24),transparent 65%);pointer-events:none}.hero-grid{max-width:1172px;margin:auto;display:grid;grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr);align-items:center;gap:48px;position:relative;z-index:1}.eyebrow{color:#7be5ff;font-weight:800;letter-spacing:.12em;font-size:13px}.hero h1{font-size:52px;line-height:1.18;letter-spacing:-.04em;margin:14px 0 18px;word-break:normal;overflow-wrap:normal}.hero p{font-size:18px;color:#c9daf8;max-width:560px}.hero-art{width:100%;display:block;border-radius:22px;box-shadow:0 24px 70px rgba(0,0,0,.35);border:1px solid rgba(255,255,255,.2)}.hero-badges{display:flex;flex-wrap:wrap;gap:9px;margin-top:28px}.badge{padding:6px 12px;border:1px solid rgba(161,219,255,.4);background:rgba(255,255,255,.09);border-radius:99px;font-size:13px;color:#dcecff}
  12. #why{order:1}#map{order:2}#flow{order:3}#roles{order:4}#playbook{order:5}#start{order:6}#context{order:7}#developer{order:8}#manager{order:9}#status{order:10}#rollout{order:11}#conclusion{order:12}
  13. section{margin:44px 0}.section-head{display:flex;gap:18px;align-items:flex-start;margin-bottom:20px}.kicker{color:var(--blue);font-weight:800;font-size:13px;letter-spacing:.1em}.section-head h2{font-size:30px;line-height:1.25;margin:0}.section-head p{color:var(--muted);margin:6px 0 0;max-width:800px}.grid{display:grid;gap:18px}.two{grid-template-columns:repeat(2,minmax(0,1fr))}.three{grid-template-columns:repeat(3,minmax(0,1fr))}.four{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:var(--white);border:1px solid var(--line);border-radius:16px;padding:22px;box-shadow:0 5px 20px rgba(24,55,96,.04)}.card h3{font-size:18px;margin:0 0 10px}.card p{color:var(--muted);margin:0}.icon{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:#edf3ff;color:var(--blue);font-size:22px;margin-bottom:14px}.num{display:grid;place-items:center;width:33px;height:33px;border-radius:10px;background:linear-gradient(135deg,var(--blue),var(--violet));color:white;font-weight:800;margin-bottom:12px}.callout{border-left:5px solid var(--cyan);background:#eafcff;padding:18px 20px;border-radius:0 14px 14px 0;color:#264565}.callout strong{color:#0d5c8e}.warn{border-color:var(--amber);background:#fff8e8}.danger{border-color:var(--red);background:#fff0f2}
  14. .architecture{display:grid;grid-template-columns:280px 1fr;gap:18px}.architecture .spine{background:linear-gradient(180deg,#133160,#091a34);border-radius:18px;padding:26px;color:white}.spine h3{margin-top:0}.spine p{color:#bfd1f2}.stack{display:grid;gap:11px}.stack div{border:1px solid var(--line);border-radius:13px;background:white;padding:14px 16px;display:flex;gap:12px;align-items:center}.stack b{color:var(--blue)}
  15. .flow{display:grid;grid-template-columns:repeat(7,1fr);gap:9px;align-items:stretch}.flow-step{position:relative;padding:15px 12px;background:white;border:1px solid var(--line);border-radius:14px;min-height:137px}.flow-step:not(:last-child):after{content:"→";position:absolute;right:-14px;top:48px;z-index:2;width:22px;text-align:center;color:var(--blue);font-size:22px;font-weight:800}.flow-step b{font-size:14px;display:block;color:var(--blue);margin-bottom:5px}.flow-step span{font-size:12px;line-height:1.45;color:var(--muted);display:block}.gate{margin-top:24px;display:grid;grid-template-columns:1fr 1fr;gap:14px}.gate .card{padding:18px}.gate .card h3{font-size:16px}.check{list-style:none;padding:0;margin:11px 0 0}.check li{margin:7px 0;padding-left:24px;position:relative;color:var(--muted)}.check li:before{content:"✓";position:absolute;left:0;color:var(--green);font-weight:900}.block li:before{content:"×";color:var(--red)}
  16. table{width:100%;border-collapse:separate;border-spacing:0;background:white;border:1px solid var(--line);border-radius:14px;overflow:hidden;font-size:14px}th{background:#eef4ff;text-align:left;color:#2e4973;font-weight:800}th,td{padding:13px 14px;border-bottom:1px solid var(--line);vertical-align:top}tr:last-child td{border-bottom:0}.status{display:inline-block;padding:2px 8px;border-radius:99px;font-size:12px;font-weight:800}.s-blue{background:#e9f0ff;color:#2854bf}.s-amber{background:#fff4d8;color:#a26000}.s-green{background:#e6f8f0;color:#187651}.s-red{background:#ffe8eb;color:#b31f38}.path{display:block;padding:11px 13px;border-radius:9px;background:#0d203d;color:#d9ebff;font:13px/1.5 Consolas,monospace;overflow:auto}.role{border-top:4px solid var(--blue)}.role:nth-child(2){border-color:var(--violet)}.role:nth-child(3){border-color:var(--cyan)}.role:nth-child(4){border-color:var(--green)}.role h3{margin-top:5px}.role ul{padding-left:19px;color:var(--muted);margin-bottom:0}.role li{margin:6px 0}
  17. .timeline{position:relative;margin-left:9px;border-left:2px solid #c9d8ec;padding-left:30px}.timeline-item{position:relative;margin:0 0 22px;padding:17px 18px;background:white;border:1px solid var(--line);border-radius:14px}.timeline-item:before{content:"";position:absolute;width:13px;height:13px;left:-38px;top:23px;background:var(--blue);border:4px solid var(--paper);border-radius:50%}.timeline-item h3{margin:0 0 7px;font-size:17px}.timeline-item p{margin:0;color:var(--muted)}.mini{font-size:13px;color:var(--muted)}
  18. .pack{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.pack div{background:white;border:1px solid var(--line);border-radius:12px;padding:13px;font-size:14px}.pack b{color:var(--blue);display:block;font-size:12px;margin-bottom:3px}.meeting{background:linear-gradient(135deg,#17396e,#2854a9);color:white;border-radius:20px;padding:32px}.meeting h2{margin-top:0}.meeting .grid{margin-top:18px}.meeting .card{box-shadow:none;background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.19);color:white}.meeting .card p{color:#d7e7ff}.footer{order:13;text-align:center;color:#76869d;font-size:13px;padding:28px 0 5px}
  19. @media(max-width:900px){.nav a{display:none}.hero-grid,.architecture{grid-template-columns:1fr}.hero{padding-top:56px}.hero h1{font-size:36px}.flow{grid-template-columns:repeat(2,1fr)}.flow-step:after{display:none}.two,.three,.four,.pack{grid-template-columns:1fr}.gate{grid-template-columns:1fr}.nav .pill{display:none}} @media print{.nav{display:none}.hero{margin-top:0;break-after:page}section{break-inside:avoid}.card,table{box-shadow:none}body{background:white}}
  20. </style>
  21. </head>
  22. <body>
  23. <nav class="nav"><span class="brand">AI 项目开发流程框架</span><a href="#why">为什么需要</a><a href="#flow">全流程</a><a href="#roles">角色管理</a><a href="#playbook">岗位操作</a><a href="#start">如何开始</a><a href="#context">上下文包</a><a href="#developer">开发者流程</a><a href="#manager">管理与验收</a><a href="#rollout">落地计划</a><span class="pill">会议讲解版 · 通用框架</span></nav>
  24. <main>
  25. <header class="hero">
  26. <div class="hero-grid"><div><div class="eyebrow">AI-ASSISTED SOFTWARE DELIVERY GOVERNANCE</div><h1>让 AI 参与开发,<br>但不让流程失控。</h1><p>这是一套面向多团队协作的软件研发框架:把项目资料、AI 协作、模块开发、验收归档和风险管理放入同一条可追溯的交付链路。</p><div class="hero-badges"><span class="badge">唯一项目口径</span><span class="badge">模块化上下文</span><span class="badge">双层验收</span><span class="badge">可审计归档</span></div></div><img class="hero-art" src="AI项目开发流程框架主视觉.png" alt="AI 协作软件交付流程主视觉"></div>
  27. </header>
  28. <section id="why"><div class="section-head"><div><div class="kicker">01 · 框架的价值</div><h2>它解决的不是“如何让 AI 写代码”,而是“如何让团队稳定交付”。</h2><p>AI 可以加快分析、编码和检查;项目负责人仍然掌握范围、授权、风险和最终验收。框架的目标是让每一次交付都有明确边界、证据和责任人。</p></div></div><div class="three grid"><div class="card"><div class="icon">◎</div><h3>信息不散落</h3><p>项目总控入口、模块进度、规格、报告和归档均有固定位置。聊天结论不是正式状态。</p></div><div class="card"><div class="icon">⌘</div><h3>AI 不越权</h3><p>角色卡定义读取范围、可写路径、停止条件与交付格式。AI 不能替负责人作业务或上线裁定。</p></div><div class="card"><div class="icon">✓</div><h3>验收可复核</h3><p>开发者先自检,管理方再在集成基线独立复核;通过后才允许归档。</p></div></div><div class="callout"><strong>一句话记忆:</strong>先定义,再开发;先证据,再通过;先授权,再写入;先复核,再归档。</div></section>
  29. <section id="map"><div class="section-head"><div><div class="kicker">02 · 框架地图</div><h2>五个目录层,覆盖从输入到归档的完整链路。</h2></div></div><div class="architecture"><aside class="spine"><h3>唯一治理原则</h3><p>项目总控入口记录当前阶段、当前基线、范围、阻塞和责任。任何人不得另建平行“最新口径”。</p><p class="mini">框架不携带业务源码、账号、接口、设计资产或原项目历史。</p></aside><div class="stack"><div><b>01</b><span><strong>项目文档</strong><br><span class="mini">项目管理、旧系统分析、UI 标准、功能模块、验收报告、问题、归档与记录。</span></span></div><div><b>02</b><span><strong>AI 协作工作流</strong><br><span class="mini">协作总则、Agent 角色卡、Skill 执行卡、Prompt、文档模板、工具适配。</span></span></div><div><b>03</b><span><strong>项目输入</strong><br><span class="mini">经授权的旧版源码、设计、接口、业务资料、测试信息和环境配置;默认只读。</span></span></div><div><b>04</b><span><strong>新项目源码</strong><br><span class="mini">实际业务代码;仅在当前模块被授权范围内修改。</span></span></div><div><b>05</b><span><strong>OpenSpec</strong><br><span class="mini">规格变更、任务、增量规格和归档;若项目不用 OpenSpec,需在总控入口指定替代机制。</span></span></div></div></div></section>
  30. <section id="start"><div class="section-head"><div><div class="kicker">03 · 第一次如何开始</div><h2>先初始化并分析项目输入,再领取第一个模块。</h2><p>框架不是复制后立即编码。登记资料不等于理解资料;完成以下八项,才能具备可控开发条件。</p></div></div><div class="two grid"><div class="card"><div class="num">1</div><h3>确定项目事实</h3><p>在项目总控入口填写项目名称、仓库根目录、源码位置、主开发分支和负责人。</p></div><div class="card"><div class="num">2</div><h3>登记资料与授权</h3><p>明确需求、设计、接口、存量代码、测试账号和环境的来源、版本、授权及敏感等级;输入资料默认只读。</p></div><div class="card"><div class="num">3</div><h3>冻结分析与开发基线</h3><p>记录当前可工作的分支/提交/构建号、输入版本与适用范围。后续规格、报告和验收只引用已登记基线。</p></div><div class="card"><div class="num">4</div><h3>分析旧输入与存量能力</h3><p>由分析 Agent 逐项梳理旧页面/路由、字段按钮、接口参数、登录权限、缓存、异常、固定内容和高风险操作;区分事实、推断与待确认。</p></div><div class="card"><div class="num">5</div><h3>形成 UI 与技术基线</h3><p>从设计和存量实现提取项目级 UI、组件、状态、适配、技术约束和兼容规则;缺失项进入决策/风险,不凭猜测编码。</p></div><div class="card"><div class="num">6</div><h3>建立模块与上下文包</h3><p>基于分析结论分配不可复用的功能编码,形成规格、AC、依赖、专项矩阵和 12 件套上下文包,再建立总进度表。</p></div><div class="card"><div class="num">7</div><h3>配置质量门禁</h3><p>确定适用的 build、lint、typecheck、test、视觉检查、真实联调和发布/回滚要求。</p></div><div class="card"><div class="num">8</div><h3>明确高风险边界</h3><p>对写入、支付、授权、数据迁移、生产变更等定义环境、白名单、审批人、禁测范围与回滚方式。</p></div></div><div class="callout" style="margin-top:18px"><strong>输入分析的输出:</strong>来源矩阵、旧功能覆盖清单、页面/路由与接口清单、登录权限/缓存/异常清单、UI/技术基线、风险与待确认项。没有这些输出,模块只能处于“待分析/待评审”,不得直接领取开发。</div><p class="path">唯一启动入口:01-项目文档_docs/00-项目管理/项目总控入口.md</p></section>
  31. <section id="flow"><div class="section-head"><div><div class="kicker">04 · 项目全流程</div><h2>从输入分析到归档,七个阶段、五道硬门。</h2></div></div><div class="flow"><div class="flow-step"><b>01 输入分析</b><span>读取授权的需求、设计、旧代码与接口,输出来源、存量能力、风险和待确认项。</span></div><div class="flow-step"><b>02 规格</b><span>形成范围、AC、依赖、接口、UI、异常、存量覆盖与 change。</span></div><div class="flow-step"><b>03 领取</b><span>建立分支/worktree,冻结契约,确认可写范围。</span></div><div class="flow-step"><b>04 开发</b><span>按模块实现,持续更新任务、矩阵与证据。</span></div><div class="flow-step"><b>05 自检</b><span>开发者触发 AI 自检,提交待验收材料。</span></div><div class="flow-step"><b>06 复核</b><span>在 develop 基线上独立复核并处理问题。</span></div><div class="flow-step"><b>07 归档</b><span>归档 change、formal spec、报告与经验回灌。</span></div></div><div class="gate"><div class="card"><h3>开发前门禁</h3><ul class="check"><li>输入分析、存量覆盖、模块范围、验收、依赖与风险清晰</li><li>基线、分支、OpenSpec change 完整</li><li>接口/权限/高风险边界明确</li><li>允许与禁止修改范围已写明</li></ul></div><div class="card"><h3>待验收门禁</h3><ul class="check"><li>自检报告、问题、任务和证据齐全</li><li>规格、change 与严格校验通过</li><li>状态四件套同步</li><li>真实接口、视觉与专项矩阵已核验</li></ul></div><div class="card"><h3>管理复核门禁</h3><ul class="check"><li>代码已在 develop 集成基线独立检查</li><li>无公共能力污染、依赖冲突或阻塞问题</li><li>文档、代码、change、进度一致</li><li>高风险能力与授权可追溯</li></ul></div><div class="card"><h3>归档门禁</h3><ul class="check"><li>管理复核通过,问题闭环或已裁定</li><li>active change、formal spec 与总结齐全</li><li>严格校验/全量校验通过</li><li>状态和索引更新,流程缺口已回灌</li></ul></div></div></section>
  32. <section id="roles"><div class="section-head"><div><div class="kicker">05 · 如何管理 AI 与团队</div><h2>角色负责“做什么”,权限定义“不能做什么”。</h2><p>每次任务必须说明目标、输入、允许写入、禁止范围、交付物、验收人和停止条件。</p></div></div><div class="four grid"><div class="card role"><h3>项目负责人</h3><ul><li>决定范围、优先级、资源、授权与上线</li><li>接受或拒绝风险</li><li>作最终验收裁定</li></ul></div><div class="card role"><h3>主 Agent</h3><ul><li>拆解、派发、维护总控和进度</li><li>协调依赖与串行集成</li><li>汇报风险,不替业务裁定</li></ul></div><div class="card role"><h3>开发 Agent</h3><ul><li>只改当前模块授权范围</li><li>维护上下文包/change/自检材料</li><li>不能自行合主线或归档</li></ul></div><div class="card role"><h3>验收与 OpenSpec Agent</h3><ul><li>自检与管理复核只审查、写报告</li><li>OpenSpec Agent 仅在通过后归档</li><li>任何角色都不能伪造通过</li></ul></div></div><div class="callout warn"><strong>并行开发规则:</strong>一模块、一分支、一独立 worktree。子 Agent 完成后移交“待集成材料”,主 Agent 才能按依赖和冲突风险串行合入 <code>develop</code>。<code>待集成</code>是集成队列标签,不是模块正式状态。</div></section>
  33. <section id="playbook"><div class="section-head"><div><div class="kicker">06 · 岗位操作手册</div><h2>让每个角色清楚:什么时候行动、和谁对齐、交付什么。</h2><p>角色不是称谓,而是一组可检查的工作动作。项目管理 Agent 负责组织与核对,开发者负责实现与留证,验收角色负责独立验证。</p></div></div><div class="two grid"><div class="card"><h3>项目管理 / 主 Agent 的固定动作</h3><div class="timeline"><div class="timeline-item"><h3>模块启动前:把“能不能开发”讲清楚</h3><p>与规格 Agent 对齐上下文包、AC、接口、UI、状态异常、依赖、允许/禁止范围与专项矩阵;缺项即登记阻塞。</p></div><div class="timeline-item"><h3>开发中:做口径与风险巡检</h3><p>定期检查状态四件套、任务真实性、问题/报告落盘、跨模块依赖、共享文件、未验接口和高风险授权。</p></div><div class="timeline-item"><h3>集成前后:组织而不越权</h3><p>收集子 Agent 的分支、commit、change、strict、自检、冲突与裁定事项;按依赖串行集成,并触发独立管理复核。</p></div><div class="timeline-item"><h3>阶段结束:汇报、归档、回灌</h3><p>汇总完成/阻塞/风险/需决策;通过后协调归档,发现流程漏洞则更新规则、Skill、Prompt 或模板。</p></div></div></div><div class="card"><h3>派发给 Agent 的任务合同</h3><table><tbody><tr><th>必须明确</th><td>目标、任务范围、当前基线、输入资料和责任人。</td></tr><tr><th>允许与禁止</th><td>可读资料、可写路径、不可修改内容、是否可以调用外部环境。</td></tr><tr><th>交付格式</th><td>结论、依据路径、修改清单、检查结果、不确定项、风险、下一步。</td></tr><tr><th>验收与停止</th><td>由谁验收;资料、依赖、授权或证据不足时应停止并报告什么。</td></tr></tbody></table><div class="callout warn" style="margin-top:18px"><strong>项目管理的关键职责:</strong>不是替 Agent 做所有细节,而是持续确认模块上下文包、状态口径、依赖契约和验收证据仍然一致。</div></div></div></section>
  34. <section id="developer"><div class="section-head"><div><div class="kicker">07 · 开发者的日常流程</div><h2>开发者只需要沿着一条清晰的工作路径前进。</h2></div></div><div class="two grid"><div class="timeline"><div class="timeline-item"><h3>① 领取前:先读,不先写</h3><p>读取项目总控、当前模块上下文包、开发流程、状态/分支规范、UI 标准、直接依赖和当前 change。资料不全先报阻塞。</p></div><div class="timeline-item"><h3>② 创建隔离环境</h3><p>从 <code>develop</code> 登记基线创建 <code>feature/&lt;功能编码&gt;-&lt;短名&gt;</code>;并行时创建独立 worktree。</p></div><div class="timeline-item"><h3>③ 按规格实现</h3><p>按执行计划完成页面、交互、接口、权限、状态和 UI;持续更新 tasks 与功能点/专项矩阵。</p></div><div class="timeline-item"><h3>④ 处理不确定性</h3><p>没有接口、授权、设计或依赖时,不猜、不造、不模拟成功;记录影响并提供安全禁用/待开放方案。</p></div><div class="timeline-item"><h3>⑤ 人工触发后自检</h3><p>完成开发并不代表自动进入自检。开发人员明确确认后,才执行自检 Prompt、生成报告和问题单。</p></div><div class="timeline-item"><h3>⑥ 交付待验收材料</h3><p>提交代码、tasks、change、报告、命令和视觉证据;同步模块目录、README、规格 YAML、总进度表。</p></div></div><div><div class="card"><h3>开发者必须避免的行为</h3><ul class="check block"><li>修改项目输入、其他模块、总控规则或正式归档</li><li>用 mock、假接口或硬编码业务成功伪造能力</li><li>绕过公共请求、认证、权限、路由或共享组件</li><li>未经授权使用真实写接口、生产数据或高风险动作</li><li>未获人工触发就自检、合并、发布或归档</li></ul></div><div class="card" style="margin-top:18px"><h3>最小交接包</h3><p>模块/分支/worktree、基线与最终 commit、change、变更文件、已完成/未完成任务、检查结果、视觉证据、问题与风险、共享文件、未验接口、需裁定事项和状态同步结果。</p></div></div></div></section>
  35. <section><div class="section-head"><div><div class="kicker">08 · 模块上下文包</div><h2>每个模块都有一份“可以交给新人或 AI 直接接手”的最小完整上下文。</h2><p>上下文包不是需求文档的复制;它把开发边界、依赖、验收和证据放在一起。</p></div></div><div class="pack"><div><b>01</b>模块规格说明书</div><div><b>02</b>开发执行计划</div><div><b>03</b>页面与交互清单</div><div><b>04</b>接口与数据清单</div><div><b>05</b>UI 与交互要求</div><div><b>06</b>状态与异常矩阵</div><div><b>07</b>验收标准和自检</div><div><b>08</b>OpenSpec 与分支</div><div><b>09</b>禁止修改范围</div><div><b>10</b>开发领取前强制规范</div><div><b>11</b>专项矩阵</div><div><b>12</b>现有系统覆盖补强(适用时)</div></div><p class="path">子模板位置:02-AI协作_ai-workflow/04-文档模板_templates/模块上下文包-01 至 模块上下文包-12</p></section>
  36. <section id="manager"><div class="section-head"><div><div class="kicker">09 · 管理、自检与复核</div><h2>“自检通过”不等于“项目验收通过”。</h2></div></div><table><thead><tr><th>层级</th><th>执行位置</th><th>重点</th><th>产物与状态</th></tr></thead><tbody><tr><td><span class="status s-blue">开发者自检</span></td><td>模块分支</td><td>AC、矩阵、真实接口、设计/存量双基线、状态异常、命令与视觉证据。</td><td>自检报告 + 问题;满足后进入“待验收”。</td></tr><tr><td><span class="status s-amber">管理复核</span></td><td><code>develop</code> 集成基线</td><td>独立检查污染、公共能力、change/文档/状态一致性、依赖、风险和证据。</td><td>复核报告;通过后为“已验收”,否则“整改中”。</td></tr><tr><td><span class="status s-green">OpenSpec 归档</span></td><td>通过后的正式材料</td><td>active change、formal spec、严格校验、归档总结、状态索引与历史引用。</td><td>归档记录;状态为“已归档”。</td></tr><tr><td><span class="status s-red">全量验收</span></td><td>冻结的 develop 基线</td><td>跨模块链路和真实联调;L1 只读 → L2 受控写入 → L3 高风险,逐级准入。</td><td>仅更新治理追踪中的全量验收轴,不篡改历史归档。</td></tr></tbody></table><div class="callout danger" style="margin-top:18px"><strong>统一否决项:</strong>主链或关键接口失败、严格校验失败、mock 替代真实能力、验收矩阵缺失、错误路由、视觉主问题、状态不同步、高风险/依赖边界不清、无授权真实写入或共享冲突未解,均不得通过或流转。</div></section>
  37. <section><div class="section-head"><div><div class="kicker">10 · 状态与问题闭环</div><h2>状态代表事实,问题代表待处理的事实。</h2></div></div><div class="two grid"><div class="card"><h3>模块开发归档轴</h3><p style="font-size:18px;font-weight:800;color:var(--blue)">待分析 → 待评审 → 待开发 → 开发中 → 待验收 → 已验收 → 已归档</p><p>不通过时:待验收 → 整改中 → 待验收。暂停与废弃独立记录。</p><p class="mini">每次开发状态变更同步:目录前缀、模块 README、规格 YAML、功能模块总进度表。</p></div><div class="card"><h3>全量验收轴(可选)</h3><p style="font-size:18px;font-weight:800;color:var(--violet)">待全量验收 → 静态回归通过 → 人工联调待验证 → 缺陷整改中 → 不通过/全量验收通过</p><p>它记录当前冻结基线,不等同于模块归档状态。归档后缺陷以 corrective change 和回归证据处理。</p><p class="mini">问题按 BUG-&lt;功能编码&gt;-NNN 编号,需有等级、复现、期望/实际、影响、整改与关闭依据。</p></div></div></section>
  38. <section id="rollout"><div class="meeting"><div class="kicker" style="color:#82e7ff">11 · 推荐落地节奏</div><h2>用一周把框架从“文档”变成团队习惯。</h2><div class="grid four"><div class="card"><h3>第 1 天</h3><p>负责人完成项目初始化,冻结基线,导入资料,确认质量与高风险门禁。</p></div><div class="card"><h3>第 2 天</h3><p>用一个真实小模块演示:分析 → 规格 → 12 件套 → change → 分支。</p></div><div class="card"><h3>第 3–4 天</h3><p>由开发者按流程完成一次开发、自检、待集成交接和管理复核。</p></div><div class="card"><h3>第 5 天</h3><p>完成首次归档与复盘;将实际发现的缺口回灌到规则、模板或 Prompt。</p></div></div></div></section>
  39. <section><div class="section-head"><div><div class="kicker">会议结束时的共识</div><h2>团队只需要记住四件事。</h2></div></div><div class="four grid"><div class="card"><div class="num">1</div><h3>总控入口唯一</h3><p>阶段、基线、范围和阻塞只认一处。</p></div><div class="card"><div class="num">2</div><h3>模块边界清晰</h3><p>领取前有上下文包,开发中不越界。</p></div><div class="card"><div class="num">3</div><h3>证据先于结论</h3><p>没有命令、视觉、人工或联调证据,就不说通过。</p></div><div class="card"><div class="num">4</div><h3>问题必须闭环</h3><p>不通过就整改、回归、再复核;归档后也不改写历史。</p></div></div></section>
  40. <footer class="footer">AI 项目开发流程框架 · 团队宣讲与启用指南 · 可在浏览器打开或打印为 PDF</footer>
  41. </main>
  42. <script>
  43. // 按会议讲解顺序重排页面,并同步章节编号;保留原有内容和锚点。
  44. window.addEventListener('DOMContentLoaded', () => {
  45. const main = document.querySelector('main');
  46. const sectionByKicker = (text) => Array.from(main.querySelectorAll(':scope > section'))
  47. .find((section) => section.querySelector('.kicker')?.textContent.includes(text));
  48. const hero = main.querySelector('.hero');
  49. const why = document.getElementById('why');
  50. const map = document.getElementById('map');
  51. const flow = document.getElementById('flow');
  52. const roles = document.getElementById('roles');
  53. const playbook = document.getElementById('playbook');
  54. const start = document.getElementById('start');
  55. const developer = document.getElementById('developer');
  56. const manager = document.getElementById('manager');
  57. const rollout = document.getElementById('rollout');
  58. const context = sectionByKicker('模块上下文包');
  59. const status = sectionByKicker('状态与问题闭环');
  60. const conclusion = sectionByKicker('会议结束时的共识');
  61. const footer = main.querySelector('footer');
  62. const analysisBaselineCard = Array.from(start.querySelectorAll('.card'))
  63. .find((card) => card.querySelector('h3')?.textContent.includes('冻结分析与开发基线'));
  64. context.id = 'context';
  65. status.id = 'status';
  66. conclusion.id = 'conclusion';
  67. flow.querySelector('.kicker').textContent = '03 · 项目全流程';
  68. roles.querySelector('.kicker').textContent = '04 · 如何管理 AI 与团队';
  69. playbook.querySelector('.kicker').textContent = '05 · 岗位操作手册';
  70. start.querySelector('.kicker').textContent = '06 · 第一次如何开始';
  71. context.querySelector('.kicker').textContent = '07 · 模块上下文包';
  72. developer.querySelector('.kicker').textContent = '08 · 开发者的日常流程';
  73. manager.querySelector('.kicker').textContent = '09 · 管理、自检与复核';
  74. status.querySelector('.kicker').textContent = '10 · 状态与问题闭环';
  75. rollout.querySelector('.kicker').textContent = '11 · 推荐落地节奏';
  76. analysisBaselineCard.querySelector('h3').textContent = '冻结输入与存量分析基线';
  77. analysisBaselineCard.querySelector('p').textContent = '记录输入资料与现有代码的版本、分支/提交/构建号及适用范围;后续分析、规格和验收均可追溯到这一基线。首个开发基线在模块领取前随分支与 change 一并确认。';
  78. [hero, why, map, flow, roles, playbook, start, context, developer, manager, status, rollout, conclusion, footer]
  79. .forEach((node) => main.appendChild(node));
  80. });
  81. </script>
  82. </body>
  83. </html>