目标
输出必须至少包含:
- 页面清单
- 每个页面职责
- 关键操作流
- 状态机最终版
- 权限矩阵最终版
- 页面低保真线框说明
- 交接物
强制规则
- 不要停在抽象需求总结
- 不要只给“建议”,要给默认定版口径
- 对状态流转和权限边界,优先给唯一规则,不给模糊表达
- 页面低保真线框可以用文字线框说明,但必须覆盖关键页面
- 必须明确本版搜索是否纳入 MVP;默认纳入,并写死匹配范围
- 必须明确列表/时间线/最近跟进的默认排序规则,不留“实现自定”
- 必须明确 Dashboard 是否允许静态 mock;默认不允许,必须由 leads + followups 动态聚合
- 必须明确“新增跟进并同步改状态”是否属于本版复合操作;默认属于,并写清提交后必须同步更新哪些字段
- 必须指定单一真源:状态机、可选状态、字段合同最终以 API 合同为准,前端和 QA 不能各自改口径
最小输出结构
- 一句话场景
- MVP 边界(做 / 不做)
- 页面清单
- 每个页面职责
- 关键操作流
- 状态机最终版
- 权限矩阵最终版
- 页面低保真线框说明
- 交接物
必须定版的关键口径
输出中必须单独定版并写死:
- 搜索是否属于 MVP,以及 keyword 默认匹配 name / company / phone
- 列表默认排序:created_at desc
- 跟进时间线默认排序:created_at desc
- recent_leads / recent_followups 默认排序:created_at desc
- Dashboard 必须由 leads + followups 动态聚合,不允许独立静态 dashboard mock
- “新增跟进 + 可选同步改状态”属于本版关键复合操作
- today_* 统计口径统一使用北京时间(UTC+8)
- 产品侧如需展示字段,只能给“字段摘要”,不得另起一套 final contract;final contract 最终只认 API 合同
- 产品侧 API 清单必须包含:GET /mock/meta/options、PATCH /api/leads/:id/status、POST /api/leads/:id/followups
- 对 POST /api/leads/:id/followups,产品侧必须明确 payload 至少包含 content、sync_status、next_status
- 当 sync_status=true 时,产品侧必须明确为“同一接口内原子化完成跟进记录创建 + Lead 状态回写”;不要写成前端再发第二次状态更新请求
- 产品侧描述最近跟进字段时,只允许 latest_follow_up_at / latest_follow_up_summary;禁止残留 last_followup_* 历史命名
- 产品侧必须明确 sales 权限口径:列表页 owner 越权按 current_user_id 强制收口;详情/状态更新/跟进提交对非本人 lead 一律 403
- 产品侧必须明确详情接口主线:本版只认 GET /api/leads/:id 一次返回 lead + followups,不再衍生第二个详情 followups 接口
常见坑
- 页面清单有了,但状态机没定死
- 操作流有了,但权限矩阵没钉死
- 只有页面名,没有页面职责
- 只有草图,没有可交接口径
验证方式
输出里至少要能直接回答:
- 最小页面有哪些
- 状态怎么流转
- 谁能看、谁能改、谁能验收
- builder 下一步拿什么开工