Skip to content

1.1 需求拆解与验收条件 ​

AI CODING · STAGE 1 · REQUIREMENTS

先把四段用户路径写进需求文件。页面、状态、数据和验收没有对齐前,不发编码任务。

时间 40–60 分钟改动 docs/requirements.md切片 4
开始写需求文件 →
本节只改一份文件
docs/requirements.md不改业务代码不改 package / config

需求文件先写什么 ​

Starter 没有 docs/requirements.md。创建它,记录阶段 1 的页面、状态、数据和验收结果。后面的 architecture、component contract 和 test 都以这份文件为准。

首页保存当前阶段,按阶段过滤推荐;详情页根据 URL 中的推荐 ID 查找数据。查不到时显示“没有找到这条推荐”。

收藏、浏览历史、local persistence、API、database 和 AI 解释不写入本阶段需求。

固定阶段契约 ​

四个 ID 和名称原样写进 docs/requirements.md:

ID名称短名称
pregnancy孕期孕期
baby-0-6宝宝 0–6 月0–6 月
baby-6-12宝宝 6–12 月6–12 月
toddler-1-3宝宝 1–3 岁1–3 岁

不要创建四个 contract 之外的阶段别名。后续 StageId 会从这组 canonical data 推导。

拆成四个垂直切片 ​

切片输入行为可观察结果
阶段选择4 个固定阶段点击切换选中态和列表一起变化
推荐列表阶段 ID按 stageIds 过滤卡片数量与内容正确
推荐详情推荐 ID携带 ID 跳转,详情页按 ID 查找展示推荐依据和注意事项
无效详情不存在的 ID查找失败显示明确空状态

默认阶段固定为 baby-6-12。首次打开首页应有两条推荐;切到 pregnancy 后只保留“产检资料收纳清单”。

验收要写成可观察结果 ​

下面左侧无法直接验收,右侧可以:

不要这样写改成这样
支持阶段化推荐首次打开默认选中“6–12 月”,显示 2 条推荐
支持切换阶段点击“孕期”后,选中态变化,列表只显示“产检资料收纳清单”
完成详情页打开“南瓜泥入门”,页面出现“推荐依据”和“注意事项”
做好异常处理URL 使用不存在的 ID 时显示“没有找到这条推荐”

“体验流畅”“结构合理”“功能正常”都不能单独放进验收。Reviewer 无法根据这些词判断通过还是退回。

docs/requirements.md 完整样例
markdown
# 阶段 1 需求简报

## 目标

使用 Mock 数据完成阶段选择、推荐列表、推荐详情和无效详情空状态。

## 阶段契约

- `pregnancy`:孕期
- `baby-0-6`:宝宝 0–6 月
- `baby-6-12`:宝宝 6–12 月
- `toddler-1-3`:宝宝 1–3 岁

## 验收

1. 默认阶段为 `baby-6-12`,显示 2 条推荐。
2. 切换阶段后,列表只显示包含该阶段 ID 的推荐。
3. 点击卡片进入详情,展示推荐依据和注意事项。
4. 推荐 ID 不存在时显示“没有找到这条推荐”。
5. `npm run test:web` 和 `npm run build:web` 均通过。

## 阶段 1 不做

- 收藏和浏览历史
- 本地持久化
- 后端 API 和数据库
- AI 解释

可以调整措辞,不能更换 ID、默认阶段或四条用户行为。后续 test 会直接使用这些值。

需求怎样落到检查 ​

需求自动检查人工检查
四个 canonical stagestages.test.ts:合法 ID、未知值、名称阶段选择器显示四个短名称
baby-6-12 有两条推荐recommendations.test.ts:筛选结果为 2首次打开首页
推荐详情按 ID 查找recommendations.test.ts:找到南瓜泥、未知 ID 返回空打开详情并修改 URL
component event 与页面导航unit test 不覆盖切换阶段、打开卡片
H5 能生成npm run build:web不验证业务行为

这张表也解释了为什么要同时保留 test、build 和四条浏览器路径:三者检查的故障面不同。

把任务交给 AI ​

先让 AI 复述,别让它直接写文件:

text
先不要写业务代码。

请按“页面、状态、数据、验收”四栏复述阶段 1 需求。
确认后,在 learner/week-01 创建 docs/requirements.md。

文件必须包含:
- pregnancy、baby-0-6、baby-6-12、toddler-1-3 的 ID、名称和短名称
- 阶段选择、推荐列表、推荐详情、无效详情四个切片
- 默认两条、孕期一条、成功详情、无效详情空状态四条验收
- npm run test:web 与 npm run build:web 两条周检查
- 阶段 1 不做项

不要创建阶段别名,不要修改其他文件。
先返回准备写入的内容,等我确认。

Review 复述时只查四项:

  • 页面职责有没有混进 component 或 domain。
  • 四个阶段 ID 是否完整。
  • 四条验收是否可直接观察。
  • 是否夹带收藏、API 或 AI 回复。

有一项不对,先改任务。不要在错误需求上继续生成代码。

提交需求文件 ​

AI 写入后检查 working tree 和 cached diff:

bash
git status --short
git add docs/requirements.md
git diff --cached -- docs/requirements.md

只应看到 docs/requirements.md。Diff 中逐项核对四个阶段、四个切片、四条验收、周检查和不做项,然后提交:

bash
git commit -m "docs: add week one requirements"

这时还没有业务代码。Starter 的 passWithNoTests 或一次成功 build 只能说明工具链能启动。

1.4 会按下面四条路径验收实现:

  1. 默认 baby-6-12,显示 2 条推荐。
  2. 切到 pregnancy,只显示“产检资料收纳清单”。
  3. 打开存在的推荐,显示“推荐依据”和“注意事项”。
  4. 打开不存在的推荐 ID,显示“没有找到这条推荐”。

需求 commit 准备好后,进入 1.2 技术选型与项目结构。

晨悦 AI 实践手册