# L2 需求管理 ## PM 目录 收到新的 L2 需求后创建: ```text management/ └─ PM-<大需求编号>-<需求名称>/ ├─ README.md ├─ STATUS.md ├─ 技术侧需求分析.md ├─ source/ │ ├─ README.md │ ├─ v1/ │ └─ v2/ ├─ code/ │ └─ MANIFEST.md └─ tasks/ └─ ST-001-<业务模块>/ ├─ 01.需求分析.md ├─ 02.技术实现方案.md ├─ 03.冒烟与逻辑验证.md ├─ 04.技术实现记录.md ├─ 05.代码Review报告.md └─ 06.验收与交付报告.md ``` 测试、上线和上线验证完成后,在大需求根目录新增一份 `归档记录.md`;不移动整个目录。 PM 编号由用户决定。尚未提供编号时,可以使用: ```text PM-待确认-<需求名称> ``` 作为需求分析期间的临时目录,并将 PM 编号列为 G1 需求评审的必确认项。用户确定编号后,在进入技术方案阶段前重命名为正式目录,并检查外部链接。Agent 不得自行生成永久 PM 编号。 大需求 `README.md` 负责总览和子任务索引。使用相对链接,并维护大需求与每个子任务之间的双向关联。 ## 原始需求版本 将每次收到的需求保存为完整、不可变的版本快照: ```text source/v1/ source/v2/ source/v3/ ``` 不得覆盖或修改原始文件。在 `source/README.md` 中记录版本、接收时间、来源、主要变化和当前/废止状态。对话中的临时补充在进入正式版本前,应作为补充需求单独记录。 收到新版本后: 1. 比较新旧版本; 2. 识别受影响的模块、需求、方案、用例和实现; 3. 重开失效阶段; 4. 更新状态历史; 5. 已通过门禁失效时重新确认。 除非变更说明明确,不得假设新版本自动解决了旧版本中的矛盾。 ## 代码分析副本 用户在 `code/` 下维护分析用代码副本,默认基准分支为 `master`,项目另有配置时以项目为准。Agent 可以执行只读 Git 检查和安全的基准分支同步,但不得执行 `git add`、`git commit`、`git push`。 更新流程: ```text 检查仓库状态 → 确认基准分支和本地无业务修改 → 使用只允许安全快进的方式获取更新 → 记录工程、分支、最新 Commit 和更新时间 → 更新 MANIFEST → 重新判断既有分析是否过期 ``` Agent 不得在副本中实现需求。允许使用 `git status`、`git diff`、`git log` 和安全同步命令调查;发现脏工作区、错误分支、历史分叉或无法安全快进时停止并报告,不得强制重置或擅自解决分叉。 维护 `code/MANIFEST.md`: | 工程 | 本地目录 | 远端仓库 | 基准分支 | 当前 Commit | 更新时间 | |---|---|---|---|---|---| 真正的需求开发在独立的项目开发工作区中完成。 ## 需求矛盾与歧义 需求前后冲突、版本描述不一致、语义歧义或关键条件缺失时,禁止猜测。 在相关 `01.需求分析.md` 中记录: | 编号 | 描述位置 A | 描述 A | 描述位置 B | 描述 B | 影响范围 | 状态 | 确认结论 | |---|---|---|---|---|---|---|---| 使用 `RC-001` 等稳定编号。展示两处描述,说明受影响模块和功能,列出可能理解但不代替用户选择,并请求确认。 确认前: - 标记为 `待确认`; - 不设计或实现受影响的业务决策; - 安全时可以继续不受影响的工作; - 无法继续时将子任务标记为待确认或阻塞。 确认后记录结论、确认人、时间、来源和受影响文档,并同步更新。 ## 状态历史 以 `STATUS.md` 作为当前状态和历史记录的唯一事实来源。阶段和状态分开维护。 阶段: ```text 需求接入 → 需求分析 → 技术方案设计 → 冒烟用例设计 → 技术实现 → Code Review → 逻辑验证 → 测试 → 发布 → 归档 ``` 状态: ```text 未开始 / 进行中 / 待确认 / 已阻塞 / 待评审 / 已完成 / 已跳过 / 已取消 ``` 记录: - 大需求状态摘要; - 每个子任务的当前阶段和状态; - G1/G2/G3 状态; - 阻塞事项; - 只追加的变更历史,包括时间、对象、原/新状态、原因、操作者和证据链接。 不得删除或改写历史来掩盖返工。旧记录有误时追加更正。验证或测试失败时,重新打开实现阶段并记录回退。 门禁记录必须包含确认的原始需求版本、文档及文档版本、用户提供的代码版本标识、确认时间、来源和范围。文档中的“当前状态”字段只作为展示,发生冲突时以 `STATUS.md` 为准。 当前状态表: | 子任务 | 业务模块 | 当前阶段 | 当前状态 | 阻塞项 | 最后更新 | |---|---|---|---|---|---| 历史表: | 时间 | 对象 | 原阶段/状态 | 新阶段/状态 | 原因 | 操作者 | 证据 | |---|---|---|---|---|---|---|