Go 后端需求分析
在技术设计或编码前使用,适用于涉及后端功能、API、异步任务、存储变更或服务集成的需求。
适用时机
-
用户说"分析一下这个需求" / "帮我梳理需求" / "requirement analysis"
-
开始技术设计或编码前,需求尚未明确
-
用户描述的是业务目标,尚未转化为后端实现边界
-
任何涉及 API 设计、数据存储、异步任务或服务集成的新功能
输入
按优先级获取需求内容:
-
对话上下文:用户在消息中描述了需求,直接使用
-
用户提供路径:用户指定了 PRD / 需求文档路径,直接读取
-
自动发现:在当前工作目录中查找最近修改的需求文档
ls -t $(find . -maxdepth 3 ( -name "prd" -o -name "requirement" -o -name "需求" ) -name "*.md" 2>/dev/null) 2>/dev/null | head -5
若自动发现到多个候选文件,列出并让用户确认。若未找到任何文件,提示用户描述需求或提供文档路径。
目标
-
用后端术语重新描述业务请求
-
区分已确认事实、假设和未知项
-
产出可实施的验收标准
-
尽早暴露后端特有风险
工作流程
第一步:理解请求
提取以下信息:
-
业务目标
-
用户或上游系统的动作
-
预期输出
-
用户已明确的约束
如果用户描述模糊,做最小安全假设并标注为「假设」。
EARS 结构化:将需求改写为结构化句式,消除歧义:
句式 适用场景 示例
When [事件], the system shall [行为] 事件触发型 When 用户提交订单,系统应扣减库存
While [状态], the system shall [行为] 持续状态型 While 支付待处理,系统应禁止取消
If [条件], then the system shall [行为] 条件分支型 If 超出配额,系统应返回 429 并附 retry-after
The system shall [行为] 无条件约束 系统应对 PII 字段静态加密
每条核心需求至少用一种 EARS 句式表达。
第二步:拆解后端维度
始终分析以下维度:
-
领域实体与状态转换
-
API 或消息契约
-
读写路径
-
数据校验规则
-
权限与租户隔离边界
-
一致性与幂等性要求
-
失败处理与重试策略
-
可观测性预期
-
性能与容量预期
-
发布与回滚约束
现状验证(必做)
在产出需求文档之前,验证以下三项可行性:
数据可用性
-
所需数据是否已存在于系统中?
-
是否需要新增采集或迁移?历史数据如何处理?
接口可行性
-
依赖的上下游接口是否已存在?
-
契约是否稳定(版本、字段、SLA)?是否需要协调外部团队?
依赖就绪度
-
所需基础设施(队列、缓存、存储)是否已就绪?
-
依赖服务的当前状态(稳定 / 开发中 / 计划中)?
第三步:输出需求文档
使用以下结构:
需求分析
核心结论
结论:[一句话说明需求是否可行、主要约束、推荐的 MVP 范围]
关键风险:[最高优先级的 1-3 个风险]
建议行动:[下一步最重要的决策或确认项]
需求追溯表
| Req# | 需求描述 | 优先级 | 来源/假设 | 验收标准编号 |
|---|---|---|---|---|
| R1 | Must | 用户明确 | AC1, AC2 | |
| R2 | Should | 假设 | AC3 |
目标
范围内
范围外
参与方与依赖
领域模型
API 或事件契约
业务规则
非功能需求
验收标准
| AC# | 场景 | 前置条件 | 操作 | 预期结果 | 可验证 |
|---|---|---|---|---|---|
| AC1 | ✅/⚠️/❌ |
可验证标注:✅ 数据和接口已就绪 | ⚠️ 需前置工作 | ❌ 当前不可验证(列入待确认项)
风险与待确认项
第四步:定义验收标准
好的验收标准应具备:
-
可观测性(能被测试或监控验证)
-
后端可验证(不依赖前端)
-
边界感知(覆盖边界条件)
-
失败感知(覆盖失败路径)
必须包含以下路径:
-
正常路径
-
无效输入路径
-
重复请求路径
-
依赖失败路径
-
权限失败路径
Go 后端关注清单
-
是否有明确的请求边界和处理入口?
-
DTO 是否与领域对象分离?
-
状态转换是否明确?
-
写操作是否需要幂等性?
-
最终一致性是否可接受?
-
超时、重试和取消规则是否已定义?
-
是否需要审计日志或指标?
-
是否有 SLO 或延迟目标要求?
输出规则
-
不要过早进入包结构或表结构设计。
-
不要写具体的 IDL 定义、数据库 schema 或代码片段——需求层只描述"需要哪些参数、什么类型、互斥关系",具体字段编号、annotation、Go struct 留给技术设计阶段。
-
不隐藏未知项,明确列出。
-
如果需求过大,拆分为阶段:MVP、加固、规模化。
-
优先给出精确的验收标准,而非实现建议。
-
核心结论必须置顶,包含可操作的决策建议。
-
需求追溯表必须在核心结论之后,确保每条需求可追溯至验收标准。
参考资料
- 快速问题清单参见 references/checklist.md
交接
需求分析完成后,在对话末尾告知用户可选的后续步骤,等待用户明确指示后再继续,不得自动进入下一阶段:
-
/go-backend-technical-design — 组件与接口设计
-
/go-backend-architecture — 跨服务或长期架构决策(可选)