跳转到内容

Phase 2: 设计

目标:用 AI 从需求文档产出完整的系统设计方案——数据模型、API、架构图、UI 原型。

预计时间:1-1.5 小时

前置:Phase 1 的需求文档(6 层分析 + MoSCoW 清单 + 用户故事)

工具:Claude Code(主力)、v0.dev(UI 原型)

设计阶段改方案,成本约等于 0——改几行文档就行。开发阶段改方案,可能要重写半个系统。

AI 写代码很快,但如果数据模型设计错了,改起来比重写还痛苦。所以:先让 AI 帮你做设计,审核通过了再写代码。

环节你做AI 做
数据模型审核实体关系生成 Schema
API 设计确认端点合理性生成 RESTful 规范
架构图判断复杂度是否匹配生成 Mermaid 代码
UI 原型确认交互逻辑生成可交互组件
技术选型最终决策对比分析

数据模型设计分两步:

  1. 概念模型:先确定有哪些实体(表)、它们之间是什么关系——不涉及具体字段
  2. 物理模型:确定每个实体的字段、类型、约束、索引

为什么分两步?因为 AI 直接出物理模型容易”一上来就细节”,漏掉关键关系。先在概念层面达成共识,再往下走。

Step 1:概念模型

基于以下需求分析,请设计数据库的概念模型。
## 核心功能(Must)
1. 创建和管理项目
2. 创建、分配、更新任务
3. 看板视图(按状态分列)
4. 按成员查看任务
5. 基础权限(管理员 vs 普通成员)
## 要求
- 只列出实体名称和关系,不需要具体字段
- 用 "一对多" "多对多" 标注关系类型
- 画出 Mermaid ER 图
- 说明每个实体的职责(一句话)

审核概念模型时重点看

  • 实体是否遗漏?(常见遗漏:项目成员关系表、任务状态变更记录)
  • 关系类型对不对?(一个用户能属于多个项目 → 多对多,需要中间表)
  • 是否过度设计?(10 人工具不需要”组织""部门”等实体)

Step 2:物理模型

概念模型已确认,请生成完整的物理模型。
## 要求
- 使用 Go + GORM 的 struct 格式
- 每个字段标注 gorm tag(类型、约束、索引)
- 每个字段加中文注释说明用途
- 特别注意:
- 枚举字段用 string 还是 int?说明理由
- 哪些字段需要索引?说明查询场景
- 软删除还是硬删除?说明理由
- created_at / updated_at 用 GORM 自动管理

对照 代码审查清单 的数据模型部分:

  • 主键用什么?自增 ID vs UUID?
  • 外键关系正确吗?级联删除还是 SET NULL?
  • 常用查询字段有索引吗?
  • 敏感字段(密码)存储方式对吗?
  • 状态字段(任务状态)有没有定义明确的枚举值?
  • Mermaid ER 图(概念模型)
  • Go struct 定义(物理模型)

数据模型定好后,设计 API。核心原则:

  • 围绕资源设计:URL 是名词(/projects/tasks),不是动词
  • 先列端点,再定义格式:别一上来就写 JSON,先确认需要哪些端点
  • 考虑前端怎么用:看板页面需要一次拿到哪些数据?

Prompt

基于以下数据模型和用户故事,设计 RESTful API。
[粘贴 Step 2 的数据模型]
## 要求
1. 先列出所有端点(Method + URL + 说明),分模块组织
2. 对每个端点定义:
- 请求参数(Path / Query / Body)
- 成功响应(JSON 示例)
- 错误响应(状态码 + 消息)
3. 列表接口必须支持分页(cursor-based 或 offset)
4. 需要认证的接口标注 🔒
5. 关注点:
- 看板页面需要哪些数据?是一个接口还是多个?
- 任务状态变更是 PATCH 还是专门的 action 端点?
- 批量操作需要吗?(如批量移动任务)

对照 配方手册的 API 设计速查表

  • 分页方式选对了吗?(offset 简单但有跳页问题,cursor 适合无限滚动)
  • 需要限流吗?(10 人内部工具,大概率不需要)
  • 错误响应格式统一吗?
  • 有没有 N+1 查询风险?(看板页面一次要查项目 + 所有任务 + 任务分配人)
  • API 端点列表
  • 关键端点的请求/响应 JSON 示例

用 AI 生成 Mermaid 代码,可以直接在 Markdown 中渲染。重点是让 AI 理解你的实际规模,不要画出比你系统复杂 10 倍的架构图。

Prompt

请为项目管理工具生成两张架构图(Mermaid 格式):
## 图 1:系统架构图
- 技术栈:React 前端 + Go/Gin 后端 + PostgreSQL
- 10 人内部使用,单机部署
- 不需要 Redis、消息队列、微服务
- 标注每一层的职责
## 图 2:核心数据流图
以"用户在看板上拖拽任务到下一个状态"为例,画出完整的数据流:
- 前端操作 → API 请求 → 后端处理 → 数据库变更 → 响应 → 前端更新
  • 架构是否和实际规模匹配?(10 人工具不需要 Load Balancer)
  • 数据流是否完整?(有没有漏掉认证检查、权限校验)
  • 是否可以直接给开发用?(图中的技术选择和你的一致吗)
  • 系统架构 Mermaid 图
  • 核心数据流 Mermaid 图

在写前端代码之前,先让 AI 生成原型。不需要精美——关键是把页面结构和交互逻辑确定下来。

两种路径:

  • 快速路径:让 AI 用文字描述页面布局,你脑补
  • 可视路径:让 AI 生成 React 组件 / 用 v0.dev 生成可交互原型

方式 A:Claude Code 生成 React 原型

请为项目管理工具生成看板页面的 React 组件原型。
## 页面结构
- 顶部:项目名称 + 成员头像列表 + 筛选按钮
- 主体:3-4 列看板(待办 / 进行中 / 测试中 / 已完成)
- 每列:任务卡片列表(标题、分配人、截止日期、优先级标签)
- 任务卡片可拖拽到其他列
## 要求
- 使用 React + Tailwind CSS
- 不需要真实数据,用 mock data
- 不需要拖拽功能,只需要静态布局
- 生成一个独立的 HTML 文件,可以直接在浏览器打开预览

方式 B:v0.dev(如果有访问权限)

直接在 v0.dev 输入:

A project management kanban board with columns for Todo, In Progress, Testing, Done.
Each card shows task title, assignee avatar, due date, and priority tag.
Clean, minimal design. Light theme.

需要原型的关键页面

  1. 看板页面(核心页面)
  2. 项目列表页
  3. 任务详情弹窗/页面
  4. 成员管理页面(管理员)

不需要每个页面都做精美原型。看板页面做一个可视原型,其他页面文字描述就够。

  • 页面信息层级对吗?(最重要的信息是否最显眼)
  • 用户操作路径是否顺畅?(创建任务 → 分配 → 拖拽状态,几步完成?)
  • 有没有遗漏的页面状态?(空状态、加载状态、错误状态)
  • 看板页面可视原型(HTML 或截图)
  • 其他页面的文字描述

技术选型不是选”最好的”技术,而是选最适合你约束条件的。用 ADR(Architecture Decision Record)格式记录选型理由,方便以后回溯”当时为什么选这个”。

Prompt

请为项目管理工具做技术选型,输出 ADR 格式。
## 约束条件
- 1 人开发(AI 辅助),1 个月 MVP
- 10 人内部使用,不需要公网访问
- 数据敏感,需要自部署
- 开发者熟悉 Go 和 React(或者都不熟悉,AI 辅助学习)
## 需要决策的点
1. 后端框架:Go/Gin vs Node/Express vs Python/FastAPI
2. 前端框架:React vs Vue vs 纯 HTML
3. 数据库:PostgreSQL vs SQLite vs MySQL
4. 部署方式:Docker Compose vs 直接跑 vs 云服务
5. 认证方式:JWT vs Session vs 简单密码
## ADR 格式
每个决策点写:
- **选择**:选了什么
- **理由**:为什么选这个(不超过 3 条)
- **代价**:选这个放弃了什么
- **替代方案**:考虑过但没选的,为什么不选
  • 选型是否和约束匹配?(一个月 MVP 不适合用不熟悉的技术栈)
  • AI 有没有推荐过度复杂的方案?(Kubernetes 部署 10 人工具)
  • 是否考虑了 AI 辅助的因素?(AI 对某些技术栈的支持更好)

一份 ADR 技术选型文档


陷阱症状对策
数据模型漏索引AI 生成的 struct 没有 gorm 索引标注明确要求在 Prompt 中加索引
API 忘记分页列表接口返回所有数据在 Prompt 中要求”列表必须分页”
架构过度复杂10 人工具画出了微服务架构在 Prompt 中写明用户规模和部署方式
跳过原型直接开发做出来的 UI 和预期不一样至少做看板页面的原型
技术选型跟风AI 推荐 Next.js + Prisma(因为流行)回到约束条件:1 人 1 个月

基于 Phase 1 的需求文档,产出以下设计文档:

  1. ✅ 概念模型 ER 图 + 物理模型 Go struct(2.1)
  2. ✅ API 端点列表 + 关键接口的 JSON 示例(2.2)
  3. ✅ 系统架构 Mermaid 图(2.3)
  4. ✅ 看板页面可视原型(2.4)
  5. ✅ ADR 技术选型文档(2.5)

提示:这 5 份文档加起来就是你的”设计包”,Phase 3 开发时直接喂给 AI。