跳转至

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 新增 intentLevelcallSequence 响应字段
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