L10. 编写工业级 Spec (下):定义数据的灵魂
Vibe Coding 宣言:数据结构是程序的骨架。骨架歪了,长出来的肉也是歪的。
0. 为什么这一课至关重要? (Why It Matters)
- 不再对不齐:前端要
userId,后端给id;前端要时间戳,后端给日期字符串。这种扯皮能耗掉你一半的开发时间。 - 异常才是常态:用户永远不会按你想的那样操作。如果不定义好异常处理,你的系统上线第一天就会崩溃。
- AI 的精准导航:如果你告诉 Claude “这就存个用户表”,它会随便给你写。如果你告诉它字段类型、约束条件,它就是你的高级 DBA。
1. 目标 (Goal)
学会定义 数据字典 (Data Dictionary),编写清晰的 API 接口文档,并预判 异常流程 (Edge Cases)。
2. 核心概念/装备/指令 (The Core)
2.1 数据字典 (The Schema)
每一个数据表,都要有明确的定义:
- 字段名:
user_id(下划线还是驼峰?统一规范!) - 类型:
Integer,String,Boolean - 约束:
Unique,Not Null,Default
2.2 API 文档 (The Protocol)
前后端对话的协议:
- Endpoint:
/api/v1/products - Method:
GET/POST - Request: 需要传什么参数?
- Response: 返回什么数据结构?
2.3 异常情况 (The Edge)
- Happy Path: 一切顺利的情况。
- Unhappy Path: 网络断了、参数错了、没权限了、数据库挂了。
3. 实战演练 (Action)
Step 1: 定义数据结构
告诉 Claude:
markdown
# Context
比价系统核心模块。
# Task
请设计 `Product` (商品) 和 `PriceHistory` (价格历史) 的数据库表结构。
使用 Markdown 表格形式,包含字段名、类型、是否必填、备注。Step 2: 设计 API 接口
让 Claude 生成接口文档:
markdown
# Task
请设计[查询商品价格]的 API 接口。
包含:URL, Method, Request Body (JSON), Response Body (JSON)。
同时列出可能的 Error Codes (如 404 商品不存在, 500 服务器错误)。Step 3: 拷问异常
这一步最重要。问 Claude:
markdown
# Task
针对[爬虫抓取]环节,请列出至少 5 种可能的异常情况 (Edge Cases),并给出处理建议。
例如:目标网站改版了怎么办?IP 被封了怎么办?4. 常见问题 (FAQ - Vibe Style)
Q: 数据库选 SQL 还是 NoSQL? A: 新手无脑选 SQL (SQLite/Postgres)。 结构化数据最不容易出错。除非你要存海量日志,否则别碰 MongoDB。
Q: API 文档要写多细? A: 细到字段级别。 尤其是字段类型(字符串 "123" 和数字 123 是不一样的!)。
Q: 异常情况想不全怎么办? A: 让 AI 想! 它见过的 Bug 比你吃过的饭还多。
5. 验收标准 (Definition of Done)
- Spec 文档里增加了“数据库设计”章节。
- Spec 文档里增加了“API 接口定义”章节。
- 有一个“异常处理清单”,列出了至少 3 个核心风险点。
Next Mission: L11. 制定 Roadmap:不打无准备之仗