# 撰写需求文档 · 工作流(SOP) 目标:每次"写需求文档"都按统一流程执行,格式与标准需求文档模板一致。 ## 触发 用户在对话中提出:**"在 \<路径\> 下写一篇 \<主题\> 需求文档"** ## 步骤 ### 1. 定位目录 调用 `outline_resolve_path("<集合>/<目录>/<子目录>")` - 返回 `collectionId` + `parentDocumentId` + 解析出的完整路径 - 找不到时返回候选目录,**先与用户确认目标目录**再继续 ### 2. 获取模板 调用 `outline_doc_template()` - 返回标准需求文档模板(Markdown)与必备章节清单 - 章节:需求或目标 / 交付物 / 交付标准 / 交付时间 / 潜在风险点 / 解决的问题 / 工作思路 / 备注 / 当前状态 ### 3. 起草内容 按模板逐节填写,每节遵循填写指引: | 章节 | 填写要点 | |---|---| | 【需求或目标】 | 需求方确定,应明确**可验证的成效**(如"数据迁移成功且与原库一致") | | 【交付物】 | 必须**可验证、可复现**(如"文档需包含过程截图和最终运行结果") | | 【交付标准】 | 做成什么样算好(如"能输入账号密码,点击登录有反应") | | 【交付时间】 | 明确具体时间;用户未给时写"待定"并**提醒用户补充** | | 【潜在风险点】 | 哪里可能卡住(如"没做过登录功能,可能需要研究") | | 【解决的问题】 | 具体帮谁,解决了什么问题 | | 【工作思路】 | 执行方拆解;思路不清晰时主动询问需求方 | | 【备注】 | 可写可不写(参考文档链接、工具访问地址、账号权限说明) | | 【当前状态】 | 默认"待交付";交付后改"已交付" | ### 4. 创建 调用 `outline_create(collectionId, parentDocumentId, title, text)` - 标题命名:**\<主题\>-需求文档** - 审批弹窗展示**解析后的完整路径 + 标题 + 内容预览** - 用户确认后才真正写入;拒绝则终止 ### 5. 校验 - 用创建返回的链接核对位置与内容 - 需要时用 `outline_update_document` 补充/修改 ## 约定 - **排版约定**:条目类章节(【需求或目标】【交付物】【交付标准】【潜在风险点】【解决的问题】【工作思路】)如有多个条目,必须**换行并逐条编号(1、2、3、… 一点一行)**,不要挤成一段。 - 写入白名单(设置卡片可配置,逗号分隔,默认空):仅白名单内目录及其子级允许创建/更新/删除;未配置时全库只读,写操作直接拒绝。 - 需求对齐机制:每半天双方拉齐一次(复述目标 / 报告进度 / 描述阻塞 / 说明下一步),需求方与执行方均可发起 - 模板如与本项目默认不一致,修改插件 `src/tools.ts` 中的 `REQUIREMENT_DOC_TEMPLATE` 常量