Phase Roadmap: 每个阶段完成后长什么样¶
创建日期:2026-02-13 前置文档:产品闭环分析 目标:具体描述每个 Phase 完成后的 Before/After,让团队成员能直观理解每个阶段的价值
总览:五个 Phase 的关系¶
graph LR
P1["Phase 1 ⚠️<br/>数据链路打通"] --> P15["Phase 1.5<br/>客户档案 + SMS"]
P15 --> P2["Phase 2<br/>老板体验升级"]
P1 --> P3["Phase 3<br/>Prompt 升级"]
P3 --> P2
P2 --> P4["Phase 4<br/>收入归因闭环"]
Phase 2 与 Phase 3 的关系
图中 Phase 3 → Phase 2 的箭头表示:Phase 2 的某些功能(如 Lead 温度标签中的 intent_level)依赖 Phase 3 的 Prompt 升级。但 Phase 2 的大部分功能(今日概要、Follow-up 队列、Staff 绩效)可以独立于 Phase 3 实现。两者可以部分并行开发。
| Phase | 一句话描述 | 核心价值 |
|---|---|---|
| Phase 1 ⚠️ | 让三个系统的数据互通 | 从"三个孤岛"变成"一条数据链" |
| Phase 1.5 | 建立客户档案 + SMS 持久化 | 从"事件驱动"变成"以人为中心" |
| Phase 2 | 让老板一登录就知道该做什么 | 从"看报表"变成"看行动项" |
| Phase 3 | 让 AI 分析更精准、更贴合业务场景 | 从"通用分析"变成"场景化分析" |
| Phase 4 | 让整个漏斗可量化、可追踪 | 从"猜效果"变成"看数字" |
Phase 1: 数据链路打通 ⚠️ Code Complete(待部署)¶
状态说明
Phase 1 的 7 个 Task 代码已全部写完,存在于各仓库的 feature branch 上。但尚未 merge 到 main,也未部署到 production。下一步是 code review → merge → deploy to test → validate → deploy to prod。
Before¶
Lead 表 (phone: "7328561597") Call 表 (phone: "+17328561597")
┌─────────────────────────┐ ┌──────────────────────────┐
│ Jane Smith │ │ 通话 #A281 │
│ phone: 7328561597 │ ?? │ from: +17328561597 │
│ outcome: (空) │◄─ ─ ─│ subcategory: intro_booking│
│ outcomeUpdatedBy: (空) │ │ outcome: success │
└─────────────────────────┘ │ leadId: (不存在) │
└──────────────────────────┘
AI Prompt 分析时:
"请分析这通电话的 transcript..."
(没有客户历史,AI 每次都是第一次"认识"这个客户)
老板体验:看到 Lead 列表和通话列表是两个独立页面,需要自己对照 phone 才知道"Jane 有没有被联系过"。Outcome 全靠手动更新。
After(Code Complete — 待 merge 和部署)¶
Lead 表 (phone: "+17328561597") Call 表 (phone: "+17328561597")
┌─────────────────────────┐ ┌──────────────────────────┐
│ Jane Smith │◄─────│ 通话 #A281 │
│ phone: +17328561597 │ E.164│ from: +17328561597 │
│ outcome: INTRO_BOOKED │ 匹配 │ subcategory: intro_booking│
│ outcomeUpdatedBy: system│ │ outcome: success │
│ lastContactTime: 2/13 │ │ leadId: jane#2026-02-07 │ ← 新字段
└─────────────────────────┘ └─────────────┬────────────┘
│
DynamoDB Streams 触发
│
┌──────────▼──────────┐
│ lead-outcome-inference│
│ intro_booking+success │
│ → INTRO_BOOKED │
└─────────────────────┘
AI Prompt 分析时:
"请分析这通电话的 transcript...
Customer History:
- Lead: Jane Smith (arrived 2/7, type: Web Lead)
- 2/8 14:30: Inbound, 3min, intro_booking, attempted (首次来电询价)
- 2/11 10:15: Outbound, 5min, intro_booking, success (成功预约)"
老板体验:Lead 列表自动显示通话记录,Outcome 自动从 AI 分析结果回写(INTRO_BOOKED 由系统设置),不需要手动更新。
Phase 1 具体改动清单¶
| 改动 | 仓库 | 文件 | 状态 |
|---|---|---|---|
| Phone 格式统一为 E.164 | lead-tracking | poller.ts |
✅ |
| Phone 去重(存储前查 GSI) | lead-tracking | poller.ts |
✅ |
| CUSTOMER_HISTORY 注入 prompt | callytics-infrastructure | handler.ts + customer-history.ts |
✅ |
| call-analysis 存储 leadId | callytics-infrastructure | handler.ts |
✅ |
| DynamoDB Streams → Outcome 推断 | callytics-infrastructure | lead-outcome-inference/ Lambda |
✅ |
| studio-api 类型兼容 | studio-api | types.ts + list.ts |
✅ |
| 历史数据 backfill 脚本 | lead-tracking | backfill-phones.ts |
✅ |
Phase 1.5: 数据基础增强(新增)¶
前置条件:Phase 1 部署完成 详细设计:PhoneBook 数据库 · SMS 持久化 远期参考:DynamoDB 迁移分析
为什么需要 Phase 1.5¶
Phase 1 打通了 Lead 和 Call 的数据链路,但系统仍然没有"客户"概念——只有"事件"(一次通话、一次表单提交)。Phase 2 的 Hot/Warm/Cold 标签如果基于 Lead 而不是 Customer 计算,同一个人的多个 Lead 会分别计算温度,这是错的。
此外,SMS 数据目前只有 10 分钟缓存,不持久化。客户时间线缺少短信维度。
Phase 1.5 任务¶
| 任务 | 仓库 | 说明 | 详细文档 |
|---|---|---|---|
| SMS 持久化 | studio-api + callytics-infra | 新建 DynamoDB 表存储 SMS,WebhookReceiver 增加写入逻辑 | SMS 持久化分析 |
| PhoneBook 客户档案 | studio-api + callytics-infra + lead-tracking | 以 E.164 phone 为主键的客户通讯录,统一客户身份 | PhoneBook 数据库 |
| CUSTOMER_HISTORY v2 | callytics-infra | 在 AI prompt 中注入 SMS 数据(Phase 1 只注入通话数据) | 待设计 |
Before → After¶
Before(Phase 1 完成后):Lead 和 Call 已关联,但系统认为"Lead = 客户",同一个人提交 2 次表单 = 2 个"客户"。SMS 数据 10 分钟后消失。
After(Phase 1.5 完成后):PhoneBook 表以电话号码为主键,一个号码 = 一个客户。多次表单提交合并到同一客户。SMS 永久存储,客户时间线完整。
Phase 2: 老板体验升级¶
Before(当前 Dashboard)¶
老板登录 Dashboard 后看到:
┌─────────────────────────────────────────────────────────┐
│ Lead Tracker [All ▼]│
├──────────┬────────┬────────┬──────────┬─────────────────┤
│ Name │ Phone │ Source │ Received │ Outcome │
├──────────┼────────┼────────┼──────────┼─────────────────┤
│ Jane S. │ 732... │ Web │ 2/7 │ (空) │
│ Tom W. │ 917... │ Online │ 2/8 │ INTRO_BOOKED │
│ Lisa M. │ 646... │ Web │ 2/9 │ (空) │
│ ...50+ rows... │
└─────────────────────────────────────────────────────────┘
老板的问题:
- "今天有多少通话?多少 booking?" → 需要自己数
- "谁还没被联系?" → 需要展开每个 Lead 看通话记录
- "Sarah 表现怎么样?" → 没有员工维度的数据
- "哪些 Lead 最有希望?" → 全部长一样,没有优先级
After(Phase 2 完成后的 Dashboard)¶
组件 1:今日概要卡片(登录第一眼看到)¶
┌─────────────────────────────────────────────────────────────────┐
│ 📊 Today's Summary Feb 13 │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 12 │ │ 3 │ │ 5 │ │ 34min │ │
│ │ Calls │ │ Bookings │ │ Pending │ │ Avg Resp │ │
│ │ Today │ │ Today │ │Follow-up │ │ Time │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ 🌟 Top Performer: Sarah (33% booking rate) │
│ ⚠️ 2 leads pending > 24h — action needed │
└─────────────────────────────────────────────────────────────────┘
数据来源:
| 指标 | 来源 | 计算方式 |
|---|---|---|
| Calls Today | call-analysis 表 | callStartTime 在今天的记录数 |
| Bookings Today | call-analysis 表 | subcategory=intro_booking + outcome=success 今天的数量 |
| Pending Follow-up | call-analysis 表 | follow_up_needed=yes 且尚未有后续通话的 Lead |
| Avg Response Time | Lead 表 + call-analysis 表 | firstCallTime - lead.receivedAt 的平均值 |
组件 2:Follow-up 任务队列¶
┌─────────────────────────────────────────────────────────────────┐
│ ✅ Follow-up Queue 5 pending │
├──────────┬────────────────┬──────────┬──────────────────────────┤
│ Lead │ Reason │ Since │ Action │
├──────────┼────────────────┼──────────┼──────────────────────────┤
│ 🔴 Jane S.│ CC not captured│ 26h ago │ [Call Now] [Mark Done] │
│ 🟡 Lisa M.│ Manager needed │ 4h ago │ [Call Now] [Mark Done] │
│ 🟡 Tom W. │ Complaint │ 2h ago │ [Call Now] [Mark Done] │
│ 🟢 Amy R. │ CC not captured│ 30min ago│ [Call Now] [Mark Done] │
│ 🟢 Bob K. │ Manager needed │ 15min ago│ [Call Now] [Mark Done] │
└──────────────────────────────────────────────────────────────────┘
🔴 = 超过 24h 🟡 = 4-24h 🟢 = < 4h
数据来源:AI 分析的 follow_up.needed = "yes" + follow_up.reason。SLA 倒计时基于 callStartTime 到现在的时间差。
组件 3:Lead 列表增强(Hot/Warm/Cold 标签)¶
┌──────────────────────────────────────────────────────────────────┐
│ Lead Tracker 🔥 3 Hot 🟡 8 Warm ❄️ 5 Cold │
├──────┬────────┬────────┬────────┬──────┬────────┬───────────────┤
│ Temp │ Name │ Phone │ Calls │ Days │ Last │ Outcome │
├──────┼────────┼────────┼────────┼──────┼────────┼───────────────┤
│ 🔥 │ Jane S.│ +1732..│ 2 calls│ 6d │ 2h ago │ — │
│ 🔥 │ Amy R. │ +1917..│ 1 call │ 2d │ 30min │ — │
│ 🔥 │ Bob K. │ +1646..│ 3 calls│ 4d │ 1d ago │ INTRO_BOOKED │
│ 🟡 │ Tom W. │ +1212..│ 1 call │ 8d │ 3d ago │ — │
│ ❄️ │ Lisa M.│ +1718..│ 0 calls│ 12d │ never │ — │
└──────────────────────────────────────────────────────────────────┘
温度计算规则(studio-api 侧计算):
| 温度 | 条件 |
|---|---|
| 🔥 Hot | Lead 到达 ≤ 3 天 或 最近 24h 内有通话 或 AI follow_up_needed=yes |
| 🟡 Warm | Lead 到达 4-7 天 且 有通话记录 且 outcome 尚未设置 |
| ❄️ Cold | Lead 到达 > 7 天 且 无通话 或 多次 attempted 无 success |
组件 4:Staff 绩效卡片¶
┌─────────────────────────────────────────────────────────────────┐
│ 👤 Staff Performance (This Week) │
│ │
│ Sarah │ Will │ Nadia │
│ ────────────── │ ────────────── │ ────────────── │
│ 12 calls │ 8 calls │ 6 calls │
│ 4 bookings │ 1 booking │ 2 bookings │
│ 33% rate ↑ │ 13% rate ↓ │ 33% rate → │
│ Strength: │ Weakness: │ Strength: │
│ 异议处理 │ CC capture │ 关系建立 │
└─────────────────────────────────────────────────────────────────┘
数据来源:
| 指标 | 计算方式 |
|---|---|
| Calls | call-analysis 中 staff_name = "Sarah" 的通话数 |
| Bookings | staff_name = "Sarah" + subcategory=intro_booking + outcome=success |
| Rate | Bookings / Calls (仅计算 revenue_impacting 类别的通话) |
| Strength/Weakness | 聚合 practical_coaching.scenario_identified,找出最常出现的正面/负面场景 |
Phase 2 实现清单¶
| 任务 | 仓库 | 改动 | 说明 |
|---|---|---|---|
| 新增聚合 API | studio-api | GET /v2/dashboard/summary |
今日概要数据 |
| 新增 follow-up API | studio-api | GET /v2/lead/follow-ups |
待跟进列表 + SLA |
| Lead 温度计算 | studio-api | GET /v2/lead/calls 增加 temperature 字段 |
基于规则计算 Hot/Warm/Cold |
| Staff 绩效聚合 | studio-api | GET /v2/staff/performance |
按员工聚合通话+booking |
| 今日概要组件 | studio-web | Dashboard 首页新组件 | 4 个 KPI 卡片 |
| Follow-up 队列 UI | studio-web | 新页面或 Dashboard tab | 列表 + SLA 颜色 |
| Lead 列表温度标签 | studio-web | 现有 Lead 列表增强 | 🔥🟡❄️ 标签 |
| Staff 绩效卡片 | studio-web | Dashboard 新组件 | 员工 KPI + 趋势 |
Phase 3:Prompt Taxonomy 升级¶
核心目标¶
让 AI 的分类体系与实际业务场景(7 种电话类型)更精确地对应。
当前 Prompt 分类 vs 7 种电话类型¶
graph LR
subgraph "背景知识:7 种电话类型"
T1["Lead Call<br/>潜在客户电话"]
T2["Follow-up Call<br/>跟进电话"]
T3["Service Call<br/>售后服务电话"]
T4["Referral Call<br/>转介绍电话"]
T5["Win-back Call<br/>召回电话"]
T6["Appointment Reminder<br/>预约提醒电话"]
T7["Retention Call<br/>留存关怀电话"]
end
subgraph "当前 Prompt 覆盖情况"
S1["✅ intro_booking<br/>membership_purchase_related"]
S2["❌ 无法区分<br/>混入 intro_booking"]
S3["✅ service/*<br/>member_support 等"]
S4["⚠️ other/referral_program<br/>被低估"]
S5["✅ reactivation_purchase"]
S6["⚠️ booking_confirmation<br/>混合了两种场景"]
S7["❌ 无覆盖<br/>没有主动关怀分类"]
end
T1 --> S1
T2 --> S2
T3 --> S3
T4 --> S4
T5 --> S5
T6 --> S6
T7 --> S7
Before:当前 AI 输出示例¶
场景:Sarah 第二次打给 Jane(上次询价未成功,这次跟进预约)
{
"customer_profile": {
"type": "prospective_client",
"confidence": 0.85
},
"primary_topic": {
"topic_type": "standard",
"category": "revenue_impacting",
"subcategory": "intro_booking",
"outcome": { "result": "success", "reasoning": "Customer booked intro class" }
},
"revenue_priority": "high",
"follow_up": { "needed": "no", "reason": [] }
}
问题:这和 Jane 第一次来电的分类完全一样 — 都是 intro_booking + success。老板无法区分:
- 是新 Lead 直接 booking(Sales 能力强)?
- 还是跟进了 3 次才 booking(Follow-up 流程有效)?
After:Phase 3 升级后的 AI 输出¶
同一场景(Sarah 第二次打给 Jane),升级后:
{
"customer_profile": {
"type": "prospective_client",
"confidence": 0.92,
"intent_level": "high"
},
"primary_topic": {
"topic_type": "standard",
"category": "revenue_impacting",
"subcategory": "intro_booking",
"outcome": { "result": "success", "reasoning": "Customer booked intro class on follow-up call" },
"call_sequence": "follow_up"
},
"revenue_priority": "high",
"follow_up": { "needed": "no", "reason": [] }
}
新增字段说明:
| 新字段 | 位置 | 值域 | 作用 |
|---|---|---|---|
intent_level |
customer_profile |
high / medium / low |
AI 根据对话评估客户购买意向,驱动 Hot/Warm/Cold 标签 |
call_sequence |
primary_topic |
first_contact / follow_up / retention |
AI 根据 CUSTOMER_HISTORY 判断这是第几次接触 |
为什么不新增 subcategory,而是加 call_sequence?
原方案考虑过新增 follow_up_call subcategory,但分析后发现:follow-up 不是"话题类型",而是"通话阶段"。同一个 intro_booking 话题可以发生在 firstcontact 也可以发生在 followup。拆成独立字段更灵活,也不需要修改现有的 subcategory 分类逻辑。
Taxonomy 变更对照表¶
新增的 subcategory¶
| 变更 | 类别 | 新 subcategory | 说明 |
|---|---|---|---|
| Referral 升级 | revenue_impacting |
referral_inquiry |
从 other/referral_program 移入,因为直接影响 Lead 数量和收入 |
| Retention 新增 | revenue_impacting |
retention_outreach |
员工主动联系不活跃会员的关怀电话(区别于 membership_cancel 客户主动取消) |
| Reminder 拆分 | service |
appointment_reminder |
从 booking_confirmation 中拆出。Reminder = 预约前提醒,Confirmation = 在线预约后确认 |
保持不变的 subcategory¶
| subcategory | 对应电话类型 | 不变原因 |
|---|---|---|
intro_booking |
Lead Call | ✅ 已经精确覆盖 |
membership_purchase_related |
Lead Call → 购买 | ✅ 已经精确覆盖 |
reactivation_purchase |
Win-back Call | ✅ 已经精确覆盖 |
booking_confirmation |
(保留,含义收窄) | ✅ 只保留"确认已在线预约"的场景 |
member_support 等 |
Service Call | ✅ service 类别下已有足够细分 |
Prompt 修改位置¶
standard-v1.0.0.txt 需要改的位置:
┌──────────────────────────────────────────────────────────────┐
│ 1. CUSTOMER TYPE DETECTION (§3, line ~165) │
│ 新增: intent_level 字段说明 + 判断规则 │
│ │
│ 2. PRIMARY CATEGORIZATION ENGINE (§4, line ~180) │
│ 新增: call_sequence 字段说明 │
│ 新增: 如何利用 CUSTOMER_HISTORY 判断 first/follow_up │
│ │
│ 3. TAXONOMY DEFINITIONS (§2, line ~950) │
│ revenue_impacting 新增: │
│ - referral_inquiry: 转介绍来电(从 other 移入) │
│ - retention_outreach: 主动关怀不活跃会员 │
│ service 新增: │
│ - appointment_reminder: 预约前提醒(从 booking_confirmation 拆出)│
│ │
│ 4. FIELD REQUIREMENTS (§3, line ~1158) │
│ 新增: intent_level 和 call_sequence 字段定义 │
└──────────────────────────────────────────────────────────────┘
下游联动改动¶
| 系统 | 文件 | 改动内容 |
|---|---|---|
| Zod Schema | callytics-infra/.../models.ts |
新增 3 个 subcategory enum 值 + 2 个新字段 |
| AI Mapping | callytics-infra/config/.../ai-mapping-v1.0.0.json |
新字段 → DynamoDB 列映射 |
| Outcome Mapper | callytics-infra/.../outcome-mapper.ts |
新增 referral_inquiry + success → 映射规则(待定) |
| studio-api | types.ts |
新增 intentLevel、callSequence 响应字段 |
| studio-web | Lead 列表 + 过滤器 | 新 subcategory 显示 + intent 标签 |
Prompt 版本管理
修改后应创建 standard-v2.0.0.txt(新版本),而不是修改 v1.0.0。配置仓库支持按 store 切换 prompt 版本,可以先在测试 store 验证再全量发布。
Phase 4:收入归因闭环¶
Before(Phase 2 完成后的状态)¶
系统能追踪到:Lead → Call → Booking
Jane Smith
├── 2/7 Lead 到达 (Web Lead)
├── 2/8 首次通话 (intro_booking, attempted — 询价未预约)
├── 2/11 跟进通话 (intro_booking, success — 预约成功)
│ └── Outcome: INTRO_BOOKED ← AI 自动设置
└── 2/12 ??? 到店了吗?
└── 2/12 ??? 买会员了吗?
└── ??? ??? 花了多少钱?
老板的问题:
- "Jane 预约了,但她来了吗?" → 不知道
- "来了之后买了吗?" → 不知道
- "这个月 Web Lead 渠道给我带来多少收入?" → 算不出来
- "Sarah 的客户成交率多少?" → 只能看到 booking 率,看不到最终成交率
After(Phase 4 完成后)¶
完整漏斗:Lead → Call → Booking → Show → Purchase¶
Jane Smith
├── 2/7 Lead 到达 (Web Lead) ── Response Time: 27h
├── 2/8 首次通话 (intro_booking, attempted) ── 首次联系
├── 2/11 跟进通话 (intro_booking, success) ── 预约成功
│ └── Outcome: INTRO_BOOKED
├── 2/12 [✅ 到店] ← 老板手动标记 ── Show
├── 2/12 [✅ 成交 $159] ← 老板手动标记 ── Purchase
│ └── Outcome: CLOSED
└── 完整旅程: 5 天, 2 通电话, 成交 $159
漏斗可视化(Dashboard 新组件)¶
┌─────────────────────────────────────────────────────────────────┐
│ 📈 This Week's Funnel │
│ │
│ Leads ████████████████████████████████████ 47 │
│ Contacted ████████████████████████████ 43 (91%) │
│ Booked ██████████████████ 18 (42%) │
│ Showed Up ██████████████ 12 (67%) │
│ Purchased ██████████ 8 (67%) │
│ │
│ Total Revenue: $4,800 Avg Deal: $600 │
│ Best Source: Web Lead (52% conversion) │
│ Best Staff: Sarah (4/12 = 33%) │
└─────────────────────────────────────────────────────────────────┘
Lead 详情页新增按钮¶
┌─────────────────────────────────────────────────────────────────┐
│ Jane Smith 🔥 Hot Lead │
│ Phone: +1 (732) 856-1597 Source: Web Lead │
│ Received: Feb 7, 2026 Response Time: 27 hours │
│ │
│ Timeline: │
│ ● 2/7 Lead arrived │
│ ● 2/8 Call #1: Inquired about intro class (attempted) │
│ ● 2/11 Call #2: Booked intro class (success) │
│ ○ 2/12 Appointment scheduled │
│ │
│ Quick Actions: │
│ [✅ Showed Up] [❌ No-Show] [💰 Purchased: $___] [📞 Call] │
│ │
│ Current Outcome: INTRO_BOOKED (auto) │
└─────────────────────────────────────────────────────────────────┘
新增指标¶
| 指标 | 计算方式 | 意义 |
|---|---|---|
| Response Time | Lead receivedAt → 首次通话 callStartTime |
响应速度直接影响转化率 |
| Show Rate | 手动标记"到店" / INTRO_BOOKED 数 |
预约到实际到店的转化 |
| Close Rate | 手动标记"成交" / 手动标记"到店" | 到店后的购买转化 |
| Revenue per Lead | 总成交金额 / 总 Lead 数 | 单 Lead 价值 |
| Lead Source ROI | 按 leadType 分组的转化率和收入 |
哪个渠道的 Lead 最值钱 |
| Staff Close Rate | 每个员工的 成交数 / 通话数 | 从通话到最终成交的完整效率 |
Phase 4 实现清单¶
| 任务 | 仓库 | 改动 | 说明 |
|---|---|---|---|
| Lead 手动标记"到店" | studio-api + studio-web | 新 API POST /v2/lead/:id/show + 按钮 |
老板点击标记 |
| Lead 手动标记"成交" | studio-api + studio-web | 新 API POST /v2/lead/:id/purchase + 金额输入 |
老板点击标记 + 输入金额 |
| Response Time 计算 | studio-api | Lead receivedAt vs 首次 call callStartTime |
在 Lead 列表 API 中返回 |
| 漏斗聚合 API | studio-api | GET /v2/dashboard/funnel |
按时间范围聚合漏斗数据 |
| Lead Source 分组 | studio-api | GET /v2/dashboard/lead-sources |
按 leadType 分组的转化指标 |
| 漏斗可视化组件 | studio-web | Dashboard 新图表 | 柱状漏斗图 |
| Lead 详情 Timeline | studio-web | Lead 展开后的时间线 UI | 完整旅程可视化 |
为什么 Phase 4 需要手动标记?
"到店"和"成交"数据目前没有自动化来源:
- OrangeTheory 的 POS/CRM 系统没有开放 API
- 到店签到系统(如 Mindbody)的 API 接入复杂且各门店不同
- 手动标记是过渡方案,每天花 5 分钟就能完成
未来如果接入 POS API(如 Club Ready、Mindbody),可以自动化这一步。
各 Phase 的 Before/After 对比总结¶
| 维度 | Phase 0 (原始) | Phase 1 ⚠️ | Phase 1.5 | Phase 2 | Phase 3 | Phase 4 |
|---|---|---|---|---|---|---|
| Lead-Call 关联 | 无 | ✅ E.164 + leadId | ✅ | ✅ | ✅ | ✅ |
| AI 知道客户历史 | 否 | ✅ CUSTOMER_HISTORY | ✅ + SMS | ✅ | ✅ | ✅ |
| Outcome 自动更新 | 手动 | ✅ DynamoDB Streams | ✅ | ✅ | ✅ | ✅ |
| 客户档案 | 无 | 无 | ✅ PhoneBook | ✅ | ✅ | ✅ |
| SMS 持久化 | 缓存 10 分钟 | 缓存 10 分钟 | ✅ 永久存储 | ✅ | ✅ | ✅ |
| 今日概要 | 无 | 无 | 无 | ✅ KPI 卡片 | ✅ | ✅ |
| Follow-up 队列 | 无 | 无 | 无 | ✅ SLA 倒计时 | ✅ | ✅ |
| Lead 温度 | 无 | 无 | 无 | ✅ Hot/Warm/Cold | ✅ 更精准(intent_level) | ✅ |
| Staff 绩效 | 无 | 无 | 无 | ✅ Booking Rate | ✅ | ✅ + Close Rate |
| 首次 vs 跟进 | 无法区分 | 无法区分 | 无法区分 | 无法区分 | ✅ call_sequence | ✅ |
| Referral 追踪 | buried in "other" | buried in "other" | buried in "other" | buried in "other" | ✅ revenue_impacting | ✅ |
| 到店追踪 | 无 | 无 | 无 | 无 | 无 | ✅ 手动标记 |
| 成交金额 | 无 | 无 | 无 | 无 | 无 | ✅ 手动录入 |
| 完整漏斗 | 无 | Lead→Call | Lead→Call | Lead→Call→Book | Lead→Call→Book | ✅ Lead→Call→Book→Show→$ |
| Lead Source ROI | 无 | 无 | 无 | 无 | 无 | ✅ 按渠道分析 |
老板视角:每个 Phase 回答了什么问题?¶
| 老板的问题 | Phase 1 | Phase 1.5 | Phase 2 | Phase 3 | Phase 4 |
|---|---|---|---|---|---|
| "今天多少通话/booking?" | 需要翻页数 | 需要翻页数 | ✅ 一眼看到 | ✅ | ✅ |
| "谁还没被联系?" | 需要逐个查 | 需要逐个查 | ✅ Follow-up 队列 | ✅ | ✅ |
| "哪个 Lead 最有希望?" | 不知道 | 不知道 | ✅ Hot/Warm/Cold | ✅ AI intent_level 更精准 | ✅ |
| "Sarah 表现怎么样?" | 不知道 | 不知道 | ✅ Booking Rate | ✅ | ✅ + Close Rate |
| "同一个人提交多次表单?" | 多条 Lead | ✅ PhoneBook 合并 | ✅ | ✅ | ✅ |
| "客户发过什么短信?" | 缓存 10 分钟 | ✅ 永久存储 | ✅ | ✅ | ✅ |
| "这是首次接触还是跟进?" | 不知道 | 不知道 | 不知道 | ✅ call_sequence | ✅ |
| "Referral 带来多少客户?" | 不知道 | 不知道 | 不知道 | ✅ revenue_impacting | ✅ + ROI |
| "预约的人来了吗?" | 不知道 | 不知道 | 不知道 | 不知道 | ✅ Show Rate |
| "这个月赚了多少?" | 不知道 | 不知道 | 不知道 | 不知道 | ✅ Revenue |
| "哪个渠道的 Lead 最值钱?" | 不知道 | 不知道 | 不知道 | 不知道 | ✅ Source ROI |