Appearance
场景三:晨悦·生活小程序 · 后端与数据库
用 AI Coding 把生活小程序前端的 Mock 换成真 API:契约 → 表 → 可跑接口 → 最小部署。切片可换,契约纪律不变。
AI CODING · 场景三 · 后端闭环
前端字段名是合同。先冻 REST 示例,再生成路由与表;用 curl 说话,不接受「接口写好了」。
时间 1~2 天切片接口 3 个只读起库 SQLite 可起步
本节要点
- 与「今天吃什么」前端对齐的三只读合同 + 字段对照表
- 冻契约 → 内存 API → 表/seed → 部署的节奏
- (加分)前端改接真 API 的给 AI 的 Prompt
这个场景解决什么
场景二用 Mock 演示「今天吃什么」主路径。本场景让同一字段从数据库经 API 回到前端(或至少用 curl 验通)。
产品 In/Out 与样本 S1~S3(教学可裁到只读列表)见 晨悦生活 · 正式 PRD 短版;本页只冻接口合同,不扩 CPS / 转盘。
备选做法
「接口写好了」口头交差;字段悄悄改名;seed 靠 truncate;SQL 堆在路由里。 推荐做法
curl 对齐合同:字段可对照 Mock;seed 幂等;映射在 service。 选型说明: 场景三验收语言是 curl 输出,不是感觉。前后端同义词一漂,联调会空转整晚;幂等 seed 和薄路由,是为了让 AI 改一处时你还看得清。
跟做顺序
- API 设计 × AI — 冻合同 → 内存实现 → curl
- 数据库表设计 × AI — 表 + 幂等 seed → API 改读库
- 部署上线 — Compose / 既有脚本 + 健康检查
协作节奏:
text
冻契约(本页)→ 内存 API → curl
→ 表与 seed → 再 curl
→ (加分)前端改请求层接真 API
→ Compose / 部署场景二主路径没点通,先别进这里。
与前端对齐的合同(示例)
给人扫读可以看字段对照表;给 AI 实现 / curl 验收时,贴下面这段合同原文。
给 AI · REST 合同实现 Prompt与 curl 验收共用这一份;字段名不要另起同义词
text
GET /api/meal-scenes
→ [{ "id": "solo", "label": "一人食" }, ...]
GET /api/dishes?scene=solo
→ [{ "id": "dish-tomato-egg", "title": "...", "summary": "...", "sceneId": "solo" }, ...]
GET /api/dishes/dish-tomato-egg
→ {
"id": "dish-tomato-egg",
"title": "...",
"summary": "...",
"body": "...",
"reason": "...",
"tip": "...",
"sceneId": "solo"
}
错误体:{ "error": { "code": "not_found", "message": "dish not found" } }
状态码:成功 200;未知 id → 404;非法 scene → 422 或 400(二选一,写死后别变)字段对照表(必贴写进给 AI 的 Prompt)
| 前端 Mock | API JSON | 库列(示例) |
|---|---|---|
MealSceneId / mealScenes[].id | id | meal_scenes.id |
mealScenes[].name | label | meal_scenes.label |
sceneIds: MealSceneId[](筛选用) | 列表项 sceneId(单值) | dishes.scene_id |
reason / tip | 同名 | 同名列 |
| (详情加长文) | body | body |
前端用数组过滤、后端存单 scene_id 完全可以,但转换必须写在 service 一层,禁止两边各猜一套同义词(rationale / hint 等)。
分层约定(写进给 AI 的 Prompt)
text
api 路由(薄) → service(业务 + 字段映射) → repository/model(表)
禁止:路由文件里堆 SQL前后端联调(加分)
curl 全绿后再做。一次只改前端请求边界,不重写页面。
给 AI · Prompt · 前端改接真 API
text
【目标】首页列表与详情改为请求上述三个 GET;失败时展示可读错误。
【允许】请求封装 / data 适配层 / 少量页面接线
【禁止】改组件契约、改 domain 纯函数签名、改后端
【映射】列表响应 sceneId → 若页面仍要 sceneIds 过滤,在适配层组装
【验收】
- 断后端时有错误态
- 后端恢复后主路径四步仍通
- 非法 id 仍有空态
【请你】先指出将改的文件与适配函数名,确认后再改。完成标准
- [ ] 本地能起后端;健康检查或 OpenAPI 可开
- [ ] 三只读接口 curl 通,字段与合同一致
- [ ] 建表/迁移可重复执行;seed 可重复
- [ ] README 有启动与验收命令
- [ ] (加分)前端改接真 API 后主路径仍通
建议日程(两晚)
晚 1:冻契约 → 内存 API → curl 全绿。
晚 2:表 + seed → API 接库 →(可选)前端联调 → Compose 最小部署。
每晚只合并「验收过的 diff」,不要周末开一个万能对话通关。
先打开:API 设计 × AI。