# PRD — Unified Shop Operations Hub
> **Product Slug:** auto-repair-shop-ai
> **Version:** v1（初始生成）
> **Generated:** 2026-05-15 09:32
> **Source:** auto-repair-shop-ai__scored-demand__20260515-0907.md
> **Score:** 33/40（历史第2名）
> **Decision:** BUILD

---

## 1. Problem & User

**目标用户：** 全美 160,000+ 独立汽修店的店主和前台服务顾问（单店、1–10名员工）。80% 仍依赖 Excel、纸质表格或口头沟通管理日常运营。

**核心痛点（来自用户真实反馈）：**
- 估价慢：手写或口头报价，客户等待时间长，导致丢单
- 零件追踪乱：多供应商订单散落在电话/邮件/纸条，缺件时手忙脚乱
- 客户催问烦：维修状态靠电话询问，每天被打断 10+ 次
- 核心件（Core Charge）退回遗漏：每次遗漏损失 $30–$200

**为什么现有方案不够：** Shopmonkey、Tekmetric、Mitchell1 功能强大但价格高（$200–$500/月），对独立小店来说学习成本高、迁移风险大。市场缺少一个轻量、无需迁移现有系统、5分钟上手的前台工作流工具。

---

## 2. Target Outcome & KPIs

| KPI | 目标（上线90天）|
|-----|----------------|
| 注册店铺数 | 200+ |
| 7日留存率 | ≥ 55% |
| 免费→付费转化率 | ≥ 15% |
| 平均首次创建工单时间 | ≤ 5 分钟 |
| 用户主动推荐率（NPS） | ≥ 40 |

---

## 3. MVP Scope（IN）

**核心工作流：工单创建 → 零件追踪 → 客户自动通知**

- 创建客户档案（姓名/电话/车辆）
- 创建维修工单（工单号、估价条目、总价）
- 多供应商零件状态追踪（已下单/已到货/缺货）
- 一键发送 SMS/邮件客户状态更新（模板化）
- 核心件（Core Charge）退回提醒与状态跟踪
- 单一 Dashboard：所有进行中工单 + 零件状态总览
- Stripe 订阅计费（$39/月，14天免费试用）

---

## 4. Out of Scope（V1 不做）

- 会计/发票系统集成
- 技师排班与工位管理
- 供应商 API 直连（用手动录入替代）
- 数字检查报告（Digital Inspection）
- 多店管理
- 移动端 Native App（响应式 Web 即可）
- 劳工手册/ALLDATA 集成

---

## 5. User Flow（Happy Path）

**注册后 5 分钟内的 Aha Moment：**

```
注册 → 输入店名+电话
  ↓（30秒）
创建第一个客户档案（姓名/电话/车型）
  ↓（1分钟）
新建工单 → 添加估价条目（如："换刹车片 $180 + 工时 $120"）
  ↓（1分钟）
录入零件需求 → 标记已向供应商 NAPA 下单
  ↓（30秒）
点击"发送状态更新" → 客户收到 SMS："您的车辆正在维修，零件已下单，预计明日取车"
  ↓
Aha Moment 触发！店主第一次体验到"一键搞定客户催问"
```

**付费墙触发时机：** 第 6 个工单创建时，弹出付费引导："您已免费使用 5 次，升级解锁无限工单 + 自动短信通知"

**自动化转化序列（触碰付费墙后）：**
- Day 0：付费墙弹窗 + Stripe Checkout
- Day 1：邮件："发现您还没升级，这是上周 5 位店主的实际反馈..."
- Day 3：邮件："错过核心件退回，平均每月损失 $340——这是如何自动提醒的"
- Day 7：最终邮件 + 10% 折扣码

---

## 6. Functional Requirements（P0 Only）

### 6.1 Onboarding（零人工介入）
- 注册后自动进入引导流程：填写店名 → 创建首个客户 → 创建首个工单
- 引导完成前不显示复杂功能，降低认知负担

### 6.2 工单管理
- CRUD：创建、编辑、完成、归档工单
- 工单包含：客户信息、车辆信息、估价条目列表、工单总价、状态（待审核/进行中/等待零件/完成）
- 估价条目：描述、数量、单价、是否含核心件

### 6.3 零件状态追踪
- 每个零件条目可标记：已下单（标注供应商）/ 已到货 / 缺货
- 核心件标记：勾选后自动创建"Core Return 任务"，含预设 7 天截止日期
- 逾期 Core Return 任务在 Dashboard 红色高亮显示

### 6.4 客户通知
- SMS 模板库（3条预设）：下单确认、零件到货、车辆完工
- 手动触发发送（V1 不做自动推送）
- 发送记录保存在工单时间线
- SMS 使用 Twilio；邮件使用 Resend

### 6.5 付费墙与计费
- 免费版：5个工单上限
- 付费版：$39/月，无限工单 + 短信（含 200条/月，超出 $0.05/条）
- Stripe Checkout + Webhook 处理订阅状态

---

## 7. Data Model（最小化）

```
shops          { id, name, phone, email, stripe_customer_id, plan, trial_ends_at }
customers      { id, shop_id, name, phone, email }
vehicles       { id, customer_id, make, model, year, vin }
jobs           { id, shop_id, customer_id, vehicle_id, status, notes, created_at }
job_lines      { id, job_id, description, qty, unit_price, is_core_charge }
parts_orders   { id, job_id, job_line_id, supplier, status, ordered_at, arrived_at, core_due_at, core_returned_at }
notifications  { id, job_id, channel(sms/email), template, sent_at, status }
```

---

## 8. API / Integration Notes

| 服务 | 用途 | 备注 |
|------|------|------|
| Twilio | SMS 发送 | 使用 Messaging API，每条约 $0.0079 |
| Resend | 邮件发送 | 免费层 3000封/月够 MVP |
| Stripe | 订阅计费 | Checkout + Webhooks（subscription.updated） |
| Supabase | Auth + DB + Storage | Row-level security 按 shop_id 隔离 |

无需供应商直连 API——零件状态由前台手动录入。

---

## 9. Acceptance Criteria

- [ ] 店主注册并完成引导流程，耗时 ≤ 5 分钟
- [ ] 创建工单并添加 3 条估价条目，总价自动计算正确
- [ ] 标记零件为"已下单"，供应商名称保存并展示在 Dashboard
- [ ] 标记含核心件的零件，自动创建 7 天后到期的 Core Return 任务
- [ ] 点击"发送状态更新"，客户手机 30 秒内收到 SMS
- [ ] 创建第 6 个工单时，触发付费墙弹窗
- [ ] 完成 Stripe 付费后，工单上限解除，无需手动操作
- [ ] 逾期 Core Return 任务在 Dashboard 显示红色标识

---

## 10. Delivery Plan

### Milestone 1 — 核心数据层 + Auth（第1–7天）
**文件：**
- `app/api/auth/[...supabase]/route.ts` — Supabase Auth 配置
- `lib/db/schema.sql` — shops, customers, vehicles, jobs, job_lines 表
- `app/api/jobs/route.ts` — POST /api/jobs（创建工单）
- `app/api/jobs/[id]/route.ts` — GET/PATCH/DELETE
- `app/dashboard/page.tsx` — 工单列表 Dashboard

**Exit Criteria：**
- POST /api/jobs 返回 201 含 job_id
- GET /api/jobs 返回当前 shop 的工单列表（RLS 隔离验证）
- Dashboard 展示工单状态，按 created_at 降序排列

### Milestone 2 — 零件追踪 + 客户通知（第8–14天）
**文件：**
- `lib/db/schema.sql` — 新增 parts_orders, notifications 表
- `app/api/parts/route.ts` — CRUD 零件订单状态
- `app/api/notify/route.ts` — POST /api/notify（触发 SMS/邮件）
- `lib/sms.ts` — Twilio 封装
- `lib/email.ts` — Resend 封装
- `app/dashboard/jobs/[id]/page.tsx` — 工单详情 + 零件状态 + 通知历史

**Exit Criteria：**
- PATCH /api/parts/:id 更新状态，Dashboard 实时反映
- 含核心件零件标记后，parts_orders.core_due_at 自动设置为 +7天
- POST /api/notify 在 30 秒内触发 Twilio SMS，notifications 表记录 sent_at

### Milestone 3 — 计费 + 付费墙 + Onboarding（第15–20天）
**文件：**
- `app/api/stripe/checkout/route.ts` — 创建 Checkout Session
- `app/api/stripe/webhook/route.ts` — 处理 subscription.updated
- `app/onboarding/page.tsx` — 三步引导流程
- `middleware.ts` — 工单数量检查，第6次创建时重定向付费页

**Exit Criteria：**
- 免费用户创建第 6 个工单时，中间层拦截并返回 402，前端展示付费弹窗
- Stripe Webhook 收到 payment_succeeded，shops.plan 更新为 'pro'，无需重启
- 新用户注册后进入引导页，完成三步后自动跳转 Dashboard

---

## 11. Risks & Mitigations

| 风险 | 可能性 | 应对 |
|------|--------|------|
| Twilio 费用超预期 | 低 | 设置月度发送上限（200条/月），超出提示付费 |
| 用户不愿意手动录入零件状态 | 中 | 界面设计为 1-click 状态切换，加入键盘快捷键 |
| 竞品价格战（Shopmonkey 降价） | 低 | 定位"无需迁移的叠加层"，不是替代品 |
| Core Return 提醒被忽略 | 中 | 逾期任务 Dashboard 顶部红色 Banner，同时发邮件提醒店主 |

---

## 12. Chargeability Rationale（PLG 五层漏斗）

**为什么用户愿意付费：** 独立汽修店每月平均处理 80–120 个工单，每通"零件到了吗"的客户电话浪费 3–5 分钟，一天 10 通就是 30–50 分钟。$39/月 = 每天 $1.30，不到一通电话的人力成本。同时，一次遗漏核心件退回的损失（$30–$200）就超过一个月订阅费。

**免费版（让用户"上瘾"）：**
- 5个工单完整体验核心功能（创建工单 + 零件追踪 + 发送 SMS）
- 真实感受到"客户不再催电话"的价值

**付费版（扩大价值）：**
- 无限工单
- 自动化通知序列（零件到货自动推送）
- Core Return 逾期邮件告警
- 导出工单报表（PDF）

**付费墙触发时机：** 第 6 个工单创建时——此时用户已体验完整价值循环，转化意愿最强。

---

## 核心测试场景

> 此章节描述一个真实用户完整使用产品核心功能的路径，用于指导小质执行验收测试。

- **用户身份：** 德克萨斯州独立 HVAC 管道汽修店老板，3名员工，目前用 Excel 追踪工单
- **触发动作：** 一辆 2019 年 Toyota Camry 进店，需要换刹车片 + 检查传动轴（含核心件）
- **操作路径：**
  1. 登录系统 → 点击"新建工单"
  2. 搜索或新建客户（姓名/电话）→ 添加车辆信息
  3. 添加估价条目：刹车片（$120）、工时（$80）、传动轴总成（$340，勾选"含核心件"）
  4. 向供应商 NAPA 下传动轴零件 → 在系统中标记"已下单，供应商：NAPA"
  5. 点击"发送状态更新" → 选择模板"您的车辆已开始维修，零件正在等待"→ 发送 SMS
  6. 第二天零件到货 → 标记为"已到货" → 发送"零件已到，今日完工"SMS
  7. 工单完工 → 标记"已完成"
  8. 系统自动创建 Core Return 任务，截止日期：7天后（2026-05-22）
- **期望结果：**
  - 全程操作 ≤ 8 分钟，无需看文档
  - 客户收到 2 条 SMS，内容准确无乱码
  - Dashboard 的 Core Return 看板显示该任务，逾期前以橙色标注
  - 工单时间线完整记录所有操作和通知记录
- **验收标准：** 此场景完整跑通 = 功能上线成功

