> For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.

# Lead Tracker — 页面展示

> **prototype\_version**: V3.1
> **last\_verified**: 2026-06-15
> **source\_screenshots**: `07-lead-tracker.png`

Lead Tracker 用来回答 owner / manager 的两个问题：Lead 有没有及时被联系？Lead 从 received 到 booked 漏在哪一步？实际执行跟进不在这个页面完成，而是通过 `Open Lead Tasks` 跳到 `/tasks?work=leads`。

***

## 通用控件

| 控件               | 当前实现                                       |
| ---------------- | ------------------------------------------ |
| 日期范围             | 全站 `DateRangeDropdown`；默认本周周一到今天           |
| Tab              | `Pipeline` / `Received`                    |
| Open Lead Tasks  | 跳转 `/tasks?work=leads&tab=today`           |
| Received search  | 按 phone / first name / last name 搜索        |
| Received filters | lead status、sort by last activity / newest |

***

## Pipeline Tab

Pipeline tab 由三块组成：

| 区域                     | 展示                                                          | 数据来源                              |
| ---------------------- | ----------------------------------------------------------- | --------------------------------- |
| Weekly summary         | 本周 Booked rate、vs last week、Speed to Lead median            | `GET /v3/leads/funnel`            |
| Lead Funnel            | Received → Contacted → Intro Booked                         | `contacts` + `calls`              |
| Biggest Leak This Week | 漏斗中掉得最多的阶段及建议                                               | 前端根据 funnel counts 派生             |
| 7D bars                | Received / Contacted / Intros Booked daily bars             | `GET /v3/leads/funnel` dailyTrend |
| Lead Response Cadence  | `under 15 min`, `15 min - 1 hr`, `1 - 2 hr`, `over 2 hr` 分布 | `GET /v3/leads/cadence`           |
| Lead Pipeline buckets  | 按 `lead_status` 聚合到 action-oriented buckets                 | `GET /v3/leads/pipeline`          |

### Funnel 口径

| 阶段           | 当前含义                                                   |
| ------------ | ------------------------------------------------------ |
| Received     | `contacts.lifecycle_stage='lead'` 且 `created_at` 落在窗口内 |
| Contacted    | 有至少一次 outbound call，且 call time 不早于 lead created time  |
| Intro Booked | `contacts.lead_status='booked'`                        |

注意：当前 `Contacted` 更准确地说是 “outbound attempted”。它不要求接通，也不区分 voicemail / no answer。

### Speed to Lead 口径

| 指标                    | 当前含义                                                                                                         |
| --------------------- | ------------------------------------------------------------------------------------------------------------ |
| Funnel summary median | 从 `contacts.created_at` 到第一通 outbound call 的中位分钟数，30-day sample                                              |
| Cadence buckets       | 从 `leads.received_at` 到第一通 outbound call 的 bucket 分布                                                         |
| SMS                   | 当前不计入                                                                                                        |
| Business hours        | `lead-cadence-chart.vue` 文案写了 business hours only，但 API 当前是 raw elapsed minutes，没有 business-hours adjustment |

***

## Received Tab

Received tab 展示的是 lead contact，而不是原始 `leads` email row。

| 元素                    | 说明                                              |
| --------------------- | ----------------------------------------------- |
| Name / phone          | `contacts.first_name`, `last_name`, `phone`     |
| Created date          | `contacts.created_at`                           |
| Attention icon        | `contacts.action_needed=true`                   |
| Summary text          | 优先 `action_needed_reason`，否则 `customer_summary` |
| Status badge          | `contacts.lead_status`                          |
| Purchase intent badge | `contacts.purchase_intent`                      |
| Call count            | `calls` 按 `contact_phone` 聚合                    |
| Last activity         | `contacts.last_activity_at`                     |
| Stale alert           | 5 天以上未更新 lead status                            |

***

## Schema 支持状态

| 信息                                | 状态  | Source                                                            |
| --------------------------------- | --- | ----------------------------------------------------------------- |
| Received leads list               | 已接线 | `contacts.lifecycle_stage='lead'`                                 |
| Lead status filters               | 已接线 | `contacts.lead_status`                                            |
| Incoming / malformed / duplicated | 已接线 | `leads`                                                           |
| Contacted / outbound attempted    | 已接线 | `calls.direction='Outbound'`                                      |
| Truly connected                   | 未区分 | 需要结合 call result / call state 再定义                                 |
| Booked intro                      | 已接线 | `contacts.lead_status='booked'`                                   |
| Speed to Lead by call             | 已接线 | `contacts.created_at` 或 `leads.received_at` → first outbound call |
| Speed to Lead by SMS              | 未接线 | 需要把 outbound SMS 纳入口径                                             |

***

## Page Review Notes

从 owner 视角，Lead 页面不只是“报表”，而是判断收入漏损在哪里。Oliver 做页面评审时，建议重点看：

| 问题           | 当前页面有的数据                                        | 可能缺的信息呈现                                             |
| ------------ | ----------------------------------------------- | ---------------------------------------------------- |
| Lead 是否被及时处理 | median speed、cadence buckets、not contacted leak | 需要区分 “attempted but no answer” vs “actually reached” |
| 为什么没 book    | `lead_status`、summary、action reason             | 未把 objections / rejection reasons 明确作为漏斗解释层展示        |
| 谁该行动         | Open Lead Tasks 跳转 tasks                        | 页面本身不显示 owner / dueAt / next best action             |
| 哪些 lead 最值钱  | purchase intent、goal、summary                    | 缺少 high-intent + stale 的 prioritization              |

***

## Cross-References

- Lead schema: [lead-tracker-schema.md](/product-design/v2/lead-tracker-feature/lead-tracker-schema.md)
- Lead calculation config: [lead-tracker-calculations.md](/product-design/v2/lead-tracker-feature/lead-tracker-calculations.md)
- Lead funnel status: [lead-funnel-status.md](/product-design/v2/lead-tracker-feature/lead-funnel-status.md)
- Tasks schema: [../tasks-feature/tasks-schema.md](/product-design/v2/tasks-feature/tasks-schema.md)
- Contacts schema: [../contacts-feature/contacts-schema.md](/product-design/v2/contacts-feature/contacts-schema.md)
