核心诉求:我的店在增长还是在下降?30 秒内告诉我。
多店 Owner 管理 2-8+ 个店(Will 有 5-6 个不同行业的业务),注意力极度稀缺。不需要数据,需要趋势线。早上喝咖啡的 30 秒内判断:"有没有需要我介入的异常?" 没有 → 放下手机。Owner 不操作 Dashboard — 那是 Manager 的日常工具。Owner 的主要触点是 Email Digest,异常时才点进 Dashboard。
Owner 每天问的 5 个问题
- 昨天的 intro booking 和 new membership 怎么样?
- 有没有人要取消?团队处理好了吗?
- 员工在主动出击吗?(outbound call volume)
- Retaintive 帮我赚了多少钱?(Impacted Revenue)
- 跟上周/上月比,trend 是上还是下?
行业恐惧(来自 20+ 研究源)
- Lead 黑洞 — 80% 的 lead 从未被正确跟进 行业
- 看不见 = 失控 — 不在店里就不知道发生什么 行业
- Revenue 下滑 — OTF EBITDA 2019→2023 下降 50%+ 行业
- 91% 精品工作室不盈利 行业
- 工具太复杂 — MBO 被形容为 "clunky, half-baked" 行业
📱 Scanner(Will 型)
多行业经营(OTF + 餐饮 + 医美),每天早上扫一眼所有业务。对每个业务只花 30 秒。不想登录任何系统。
满意条件:Digest 本身就是完整产品
Dashboard 使用:几乎不用,除非周一看 Staff 或月底看 Revenue
🖥️ Digger(Alan 型)
8 个 OTF studio,深度使用数据工具。喜欢自己挖掘 insights,对比 store 表现,drill down 到 staff 和 call level。
满意条件:Digest 是入口,Dashboard 是主战场
Dashboard 使用:每天使用,频繁切换 store
💡 设计原则:同一入口,不同深度
两种 Owner 从同一封 Morning Digest 出发。Digest 给足 summary 满足 Scanner(Will),用 cliffhanger("员工 productivity 下降 12% →")引导 Digger(Alan)进入 Dashboard 深挖。Owner 进入的 Dashboard 和 Manager 是同一个 — 没有单独的 Owner Dashboard。区别在于入口和视角:Owner 从 digest 的 studio 汇总进入,Manager 每天直接打开按员工拆分看。
🍊 OTF Totowa — Thursday, May 1 Yesterday's Summary
| 场景 | 频率 | 主触点 | Digest 中? | Dashboard? | 状态 |
|---|---|---|---|---|---|
| O1 早晨速览 | 每天 | ✅ 核心 | 备选入口 | 已锁定 | |
| O2 周一复盘 | 每周一 | ✅ 周一加长版 | WoW 对比 | 已锁定 | |
| O3 月度 MTD | 日常可查 | Email + Dash | ✅ MTD 行 | MTD 详情 | 已锁定 |
| O4 多店对比 | 按需 | Email tabs | ✅ 分店展示 | Store 切换 | 已锁定 |
| O5 员工审查 | 每周 | Cliffhanger | ⚡ 钩子 | ✅ 主要 | 已锁定 |
| O6 Revenue | 日/周 | Email + Dash | ✅ 数字 | ✅ 趋势图 | 已锁定 |
| O7 Churn 问责 | 每天 | Email 行 | ✅ 汇总行 | Opt-in 告警 | 已锁定 |
| O8 异常干预 | 按需 | Cliffhanger | ⚡ 钩子 | ✅ Drill down | 需细化 |
| O9 ROI 验证 | 月/季 | Email + 导出 | ✅ 月报 | 图表 + PDF | 需细化 |
studio.retaintive.ai/dashboard)。不需要为 Owner 单独建任何页面。区别只在入口(Owner 从 Email Digest 进入,Manager 每天直接打开)和关注点(Owner 看 studio 汇总趋势,Manager 按 SA 拆分做管理)。点进去:
/dashboard?tab=daily-analytics= Manager 每天看的同一个 Analytics 页面
/dashboard → Weekly/Monthly Review= Manager M4/M6 的同一个视图,切换时间范围
Owner 看 studio 汇总 · Manager 切到按 SA 拆分
点进去:
/dashboard → 顶部 store switcher= 已有的 franchise_id 筛选器
点进去:
/dashboard?tab=staff-performance= Manager M1 每天看的同一个 Staff tab
含新增列:Tasks✓ / Coaching Flags / WOW
点进去:
/dashboard?tab=trends 或 /calls?id=xxx= 已有的 Trends tab + Call Detail
/dashboard?tab=daily-analytics → Impacted Revenue= 已有的 Analytics 页面,扩展日期范围
+ 月度 Email ROI summary + PDF 导出
这意味着:不需要为 Owner 单独开发任何 Dashboard 功能。Manager tab 里的所有 build(Staff tab +3列 / Coaching Highlights / Weekly·Monthly Review / Lead Response Cadence)完成后,Owner 自动获得所有功能。Owner 的开发工作量 = Digest Email 模板。
Will 定义的 Productivity KPI Will 原创 已锁定
Productivity = (Intro Booked + Membership Closed + Members Retained) ÷ Total Calls
"I would add those three up divided by total calls. That's my productivity for that person." — Will
这是 Owner 真正会盯的唯一员工指标。出现在 Staff tab 和周报 cliffhanger 中。
Impacted Revenue 已锁定
归因规则见上方锁定决策 #5。Owner 在 Digest 看当日数字,在 Dashboard 看趋势图和累计值。这是 Owner 验证 Retaintive ROI 的核心指标。
行业标准
转化率目标
(优秀)
💡 Low Utilization Calls = 双刃剑
Will: "When you call a member for low utilization, it's a double-edged sword. Sometimes they could cancel." 大店(1100 members)不做 low utilization 联系 — 容量已满,dormant members 反而是好事。小店(300 members)才需要。
Owner 场景的数据覆盖情况
Owner 所有 9 个场景的底层数据来自 Neon 数据库的 calls、tasks、leads、contacts 四张核心表。完整 schema(13 tables, 253 fields)详见 Front Desk tab → 数据架构要点。Owner 特别依赖的聚合维度:
- franchise_id → 多店 filter(O4 场景核心)
- tasks.close_result + assumed_value → Impacted Revenue 计算(O6/O9 场景)
- 按 calendar week/month 聚合 → WoW / MoM 对比(O2/O3 场景)
⚠️ 数据缺口(影响 Owner 场景)
• 去年同期数据 — 只有 6 个月数据,无法做 YoY(Will 想要但暂时做不到)
• Revenue 实际金额 — 在 MBO 系统中,我们用 avg_mrr 配置值近似
核心诉求:让我看到每个员工在做什么,我才能帮他们提升
Manager(像 Milly 这样的 studio manager)是 dashboard 最核心的日常用户。Owner 只是扫一眼 digest,但 Manager 每天都在用这个工具管团队。她需要的是按员工拆分的数据,不是 studio 整体汇总 — 整体汇总是 Owner 的视角。
她需要知道什么
- 谁在真正做事? — 她能感觉到,但需要数据来支撑 accountability 对话
- Lead 有没有被漏掉? — walk-in 签约的人在系统里还显示为未跟进 lead,制造假的"neglect"
- 谁需要 coaching?具体差在哪? — 要具体到某通电话的某个行为,不是笼统评分
- 能不能截图直接发给团队和 Owner? — Grab Snap 是她每天的操作
- 周报月报做完了吗? — 现在手动在 Google Sheets 里拉需要 2-3 小时
她担心什么
- 又多一个要学的工具 — 已经在 MBO + spreadsheet + Slack + email 之间跳来跳去
- 没有数据就没法问责 — "If it's recurring, I don't have any grounds for further action"
- 变成数据搬运工 — 导出 CSV → Excel 手动分析 → 截图 → 发群,周而复始
- 员工觉得被监控 — 按人拆分的数据必须定位为帮助成长,不是监控
💡 Retaintive 为 Manager 省掉的工作量
员工表现检查:手动观察 + 凭感觉 → Dashboard 按人拆分的数据,一眼看到谁需要帮助
Lead 跟进问责:口头问 SA + spreadsheet 追踪 → Lead Tracker 自动标记 stale + 响应速度分布
Coaching:旁听通话 + 笼统反馈 → AI 自动 flag 具体通话 + 具体行为证据
周报/月报:Google Sheets 手动拉数据 2-3 小时 → Grab Snap 截图 5 分钟搞定
向 Owner 升级问题:口头描述 + 缺上下文 → Grab Snap 附带完整 contact timeline
2. Objection Handling — 价格/时间/承诺异议处理
3. Retention Technique — 有没有提供替代方案?
4. Rapport Building — 沟通质量和客户体验
5. Information Accuracy — 政策/价格/课程信息是否正确
为什么用 %:排班天数不同,原始数量有误导性
趋势:按 SA × 类别,rolling 4 周窗口。Flag rate 下降 = coaching 起效
💡 设计原则:每个数据都必须能带出行动
如果 Manager 在 dashboard 上看到问题但什么也做不了,这个数据就不应该放在屏幕上。每一项指标都要对应一个明确的下一步 — coaching 对话、team huddle、升级给 Owner。
studio.retaintive.ai 实际路由。/dashboardtab=daily-analytics — Performance Overview / Types / Sankey✅ 已有 Trends tab
tab=trends — 7天趋势图 × 7个指标✅ 已有 Staff tab
tab=staff-performance — per-SA 卡片: Intro/Sales/Cancel🔧 扩展 Staff tab 新增 3 列: Tasks✓ / Coaching Flags / WOW → M1
🆕 新增 Coaching Highlights 模块放 Dashboard 首页 → M5
🆕 新视图 Weekly / Monthly Review (同一个视图,切换时间范围) → M4 M6
Owner 和 Manager 看同一套数据 — studio 汇总 + 按 SA 拆分 toggle
/lead-tracker✅ 已有 Date picker + Status/Outcome 筛选 + View 切换
🆕 新增 Lead Response Cadence 分布图 (Mock-up 2) → M2
🆕 新增 Stale Contact 黄色提示条 (Mock-up 4) → M2
注: Response Time 列已存在,speed-to-lead 原始数据可用
/calls✅ 已有 Right panel: Transcript + audio player + staff 可编辑
✅ 已有 Call Detail 已包含 Coaching 反馈(所有通话都有)
🔧 优化 筛选 + 降噪:只在 coaching-worthy 通话上突出显示反馈 → M5
Manager 从 Coaching Highlights 点进来查看被 flag 的具体通话
/tasks (仅 test 站)✅ test已有 AI Summary + Suggested Action + Contact detail + Comm Log
⬜ Manager 不直接用此页 — SA/Front Desk 专用
Manager 在 Staff tab 看 task 完成率汇总(规则 #2)
M7 问题升级:跨页面操作 — Manager 在任意页面发现问题 → Grab Snap(已有按钮)→ 附文字发 Owner。涉及 Contact timeline (Call Detail) + 趋势 (Trends) + Task (Staff tab)。无需新 build。
| STAFF | CALLS | IN / OUT | INTROS | SAVES | TASKS ✓ | COACHING FLAGS | WOW |
|---|---|---|---|---|---|---|---|
NK Nadia K. Front Desk |
58 | 21 / 37 | 14 | 3 / 5 | 92% | 18% | ▲ |
RW Ryan W. Front Desk |
42 | 18 / 24 | 9 | 1 / 2 | 71% | 28% | ▼ |
KL Kyle L. Front Desk |
19 | 6 / 13 | 4 | 1 / 1 | 88% | 8% | ▲ |
已有列:Total Calls, In/Out, Intros Booked, Cancel Saves — 生产 Staff tab 里已经有了。
Contact 级别合并的实现方式
- 合并键:
contact_phone是所有通话 + 短信的统一 foreign key - Contact 时间线:一个 contact 的所有事件(通话、短信、未接通的 outbound 尝试),按时间排序
- Task 生成:基于 contact journey 状态触发。例如:"这个人问了两次价格但没预约" → 自动生成跟进 task
- CDR 数据:每次 outbound 尝试都被记录,即使没有录音(timestamp + destination + disposition)。短信也被记录。Speed-to-lead 可以追踪所有尝试,不只是被录音的通话
Coaching 评分逻辑见 Section 2 的 Coaching 模型 Spec。Stale 检测逻辑见锁定规则 #8。
⚠️ staff_name 识别准确度是关键依赖
按人拆分的视图(场景 M1、M2、M5)依赖 staff_name 准确度。改进措施已在进行中。即使只有 70-80% 准确,Manager 也能看到 pattern。识别错误的通话可以在 UI 里手动重新分配。
Studio 级别的 speed-to-lead cadence 不依赖 staff_name — 它用 CDR 数据,所有 attempt 都被记录了。按人拆分的 cadence 需要 staff attribution,但 studio 级别的 cadence 可以直接上线。
核心诉求:告诉我现在该打给谁,别让我想
Front Desk SA 是 Retaintive 的日常执行者。她的工作节奏被课程时间表切成碎片 — 课前有 30-60 分钟可以打电话,课中忙到不行(check-in、迎新、接电话),课间只有 15-30 分钟空隙。在这些窗口里她需要快速决定:现在打给谁?这个人是什么情况?打完怎么记录?
她需要什么
- "今天我该打给谁?" — 排好优先级的 action list,不用自己判断先后
- 打电话前 3 秒看完上下文 — 这个人是谁、上次聊了什么、AI 建议怎么说
- 一键关闭 task — 选结果 → 完事,不要填表
- 别 overwhelm 我 — Will: "don\u2019t overwhelm the front desk with useless tasks"
她担心什么
- "AI 会不会取代我?" — OTF 试过移除前台,失败了
- "又多一个工具" — 已经在 MBO + 电话 + spreadsheet 之间跳
- "一直打电话打到烦" — 行业员工反馈最多的抱怨
- 被盯着 — 数据被 Manager 用来问责而不是帮助
- Sales pressure — 每 membership $20-50 提成,但基本工资低
💡 Front Desk 涉及的页面
Task 页面是 SA 的主战场,也是本文档的重点。其他页面:
Call Table / Messages:现有页面,v1 不做改动。SA 偶尔查看通话记录和短信。
Call 详情页 → View Analysis:SA 查看 AI coaching 反馈的地方(见场景 F6)。v1 coaching 反馈对所有 SA 可见(没有 seat 系统无法区分),等加了 seat 系统后可按个人过滤。
Lead Tracker / Dashboard:SA 不主动使用,这是 Manager 的工具。
💡 Front Desk 和 Manager 的核心区别
Manager 看 pattern(谁需要帮助、哪里有问题)。Front Desk 做 action(打这个电话、关这个 task)。Manager 的工具是 Dashboard,Front Desk 的工具是 Task 页面。所有给 Front Desk 的信息都必须直接指向下一个动作 — 如果看完之后不知道该做什么,就不应该放在屏幕上。
核心设计原则:从上往下打就行
Task 页面不是一个列表工具 — 它是 SA 的工作台。打开就知道现在该做什么,点一下就看到背景,打完电话一点就记录完毕。整个流程:看 → 点 → 打 → 关,每步不超过 3 秒。
影响:Task 页面是团队共享视图 — 所有人看到同一个列表,无法区分"我的 task"和"别人的 task"。
工程约束:
• 不做 "My Tasks" 过滤
• 不做个人 stats 展示(outbound 数、完成率)
• Close Task 保留手动输入姓名("Who are you?" 弹窗)
• AI coaching 不放在 Task 页面(coaching 是个人的,但页面是共享的)
未来:如果加了 seat 系统,以上限制可以解除。
WHERE status = 'OPEN'
AND (
due_at <= NOW() -- 已到期(含 overdue 但未降级的)
OR (type_category = 'lead_outreach' AND created_at >= TODAY_START) -- 今天新进的 lead
OR priority = 'HIGH' -- 手动标记紧急的
)
AND days_overdue < backlog_threshold -- 超过阈值的不显示(见 Backlog)
排序规则(从上到下):
① type_category = 'lead_outreach' → 按 leads.received_at ASC(最早进来的 lead 先打)
② type_category = 'cancellation_risk' → 按 due_at ASC
③ type_category = 'lead_follow_up' → 按 due_at ASC
④ type_category = 'retention' → 按 due_at ASC
⑤ 其他 → 按 due_at ASC
视觉:tab 上显示数字 badge(今日总数)。这是 SA 打开页面后第一眼看到的 — "今天有 12 个要处理"。
WHERE status = 'OPEN'
AND due_at > NOW()
AND due_at <= NOW() + INTERVAL '7 days'
AND priority != 'HIGH' -- HIGH 的已经在 Today 里了
AND NOT (type_category = 'lead_outreach' AND created_at >= TODAY_START) -- 今天的新 lead 已在 Today
互斥规则:如果一个 task 符合 Today 的条件,它不会出现在 Upcoming。Today 优先。
用途:SA 今天的 task 打完了,可以提前做明天/后天的。或者 Manager 想看接下来几天的工作量。
排序:按 due_at ASC(最近到期的排前面)。
WHERE status = 'OPEN'
AND due_at < NOW()
AND (
(type_category IN ('lead_outreach','lead_follow_up') AND days_overdue >= 7)
OR (type_category = 'cancellation_risk' AND days_overdue >= 14)
OR (type_category IN ('retention','win_back','renewal','upgrade') AND days_overdue >= 14)
)
Backlog 降级阈值(建议值,需确认):
• Lead 类 task → 7 天未处理 → 进 Backlog
• Retention / Cancel 类 → 14 天未处理 → 进 Backlog
• Win Back → 14 天未处理 → 进 Backlog
为什么这样做:Lead 超过 7 天没联系,转化概率已经很低(行业数据:72 小时后响应率下降 90%),继续放在 Today 只会挤掉更有价值的 task。但不删除 — 放在 Backlog 让 Manager 决定是否批量处理或关闭。
Manager 视角:Backlog 数量反映在 Manager Dashboard 上 — "本周有 23 个 task 进入 backlog",Manager 可以决定是批量关闭还是重新分配。
回到 Today:SA 或 Manager 可以手动将 Backlog task 设为 priority = HIGH,task 会自动回到 Today tab。这是从 Backlog 中"抢救"仍有价值的 task 的方式。
• 红色 badge "NEW LEAD" →
type_category = 'lead_outreach'• 联系人姓名 →
contacts.name (JOIN on contact_phone)• 电话号码 →
tasks.contact_phone• 一句话摘要 →
leads.inquiry_summary 或 contacts.customer_summary• AI 建议 →
calls.suggested_actions(如果有历史通话)或默认 lead 话术• 📖 Actions 按钮 → 点击展开 Suggested Action Playbook(见优化 4)
• "3rd attempt" → COUNT of closed tasks for same contact_phone(接触次数)
• "Due today" →
tasks.due_at 和当前日期对比:today = 橙色,overdue = 红色 "1 day overdue"• 上次通话摘要 →
calls.executive_summary WHERE contact_phone = X ORDER BY call_date DESC LIMIT 1• AI 建议 →
calls.suggested_actions 从最近一通电话• 📖 Actions 按钮 → Playbook(见优化 4)
Pipeline badge(可选):New → Attempted → Connected → Booked 显示在姓名旁边
• Cancel 原因 →
calls.objections(从通话中提取的异议)• AI 挽留建议 →
calls.suggested_actions• 📖 Actions 按钮 → 展开挽留 Playbook,含分步话术和替代方案(见优化 4 + Mockup 3)
• MBO 提醒 → 固定文案,提醒 SA 打电话前查 MBO(会员时长、上课记录不在 Retaintive)
字段映射:
• Badge:
type_category = 'booked_not_converted'• 上课信息摘要 →
contacts.customer_summary• AI 跟进建议 →
calls.suggested_actions(如果有之前通话)或默认跟进话术• 📖 Actions 按钮 → Playbook(见优化 4)
| 选了什么 | 系统自动做 | 新 task 的 due_at |
| No Answer | 生成 LEAD FOLLOW UP task | NOW() + 1 day(明天再打) |
| Left Voicemail | 生成 LEAD FOLLOW UP task | NOW() + 2 days(给时间回电) |
| Callback Later | 弹出日期选择器 → 生成 task | SA 手动选日期(默认 NOW() + 1 day) |
| Not Interested | 关闭,不续生 | — |
| Wrong Number | 关闭,不续生 | — |
| Already Member | 关闭,不续生 | — |
| Converted / 其他正面 | 关闭,不续生 | — |
• 可选备注文本框 — SA 可以留一句话补充
• 点 Done → task 关闭,页面自动回到 task list
• 整个流程目标:< 5 秒(选结果 → 填名字 → Done)
方案:每个 task card 上增加一个 "Suggested Actions" 按钮。点击后展开一个面板,显示基于这个客户的完整行动指南 — 不是一句话,而是分步骤的 playbook。像一个有经验的 Manager 在旁边指导。
基于
contacts.customer_summary + 通话历史生成。例如:"Lisa 是 8 个月会员,上过 47 节课,最近 2 周没来上课。上次通话提到晚上时间不合适。"② 建议步骤(Step-by-Step Actions)
根据 task type_category 和客户情况,AI 生成 3-5 个有序步骤。例如 cancellation_risk:
Step 1: 先表达理解("I understand, schedules can be tough")
Step 2: 提到她的成就("You've come to 47 classes — that's amazing")
Step 3: 提供替代方案(freeze / 换时间段 / 降级计划)
Step 4: 如果她坚持取消,问具体原因以便后续改进
③ 可用的替代方案(Available Options)
列出 SA 可以提供的选项 — freeze X 个月、换到早班、降级到 basic plan 等。这些是 OTF 通用知识,不需要从数据中来。
④ 话术示例(Example Scripts)
给出 1-2 个可以直接用的话术示例。基于分析过的成功挽留通话提炼。
⑤ 避免的雷区(Things to Avoid)
例如:"不要说 'I understand you want to cancel' — 用 'Let's see what options we have' 替代"
| Task 类型 | Playbook 重点 | AI 数据来源 |
| Lead Outreach | Opening 话术、问 fitness goals、推荐 intro class | leads.inquiry_summary + OTF 通用知识 |
| Lead Follow Up | Reference 上次对话、解决 objections、推进到 booking | calls.executive_summary + calls.objections + calls.suggested_actions |
| Cancellation Risk | 挽留话术、替代方案(freeze/降级/换时间)、成就提醒 | calls.objections + contacts.customer_summary + OTF 保留策略 |
| Booked Not Converted | 问体验感受、解答顾虑、提到优惠/推荐相同教练 | contacts.customer_summary + intro class 数据 |
| Retention / Win Back | 续费提醒、回归优惠、个性化 check-in | contacts.customer_summary + calls history |
• SA 反馈:Playbook 底部有 "Helpful / Not relevant" 按钮,帮助 AI 迭代优化
• OTF 行业知识:通用的 OTF 政策(freeze 政策、升降级规则、促销活动)作为 base knowledge,不需要每次从数据中推导
• Task card 上仍保留一句话 AI 建议(给老手快速参考),Playbook 是展开后的完整版
• 没有 seat 系统的影响:无。Playbook 内容是基于 contact + task 生成的,不依赖谁在看
• 不是实时 coaching:这是打电话前的准备工具,不是通话中的实时指导
💡 这些 mockup 基于实际代码数据
字段名、type_category 值、close_result 选项都来自生产环境 Vue Query 缓存。可以直接对照代码实现。
① Tab 从 All/Ongoing/Due Soon/Overdue → Today/Upcoming/Backlog(见优化 1 的过滤逻辑)
② 每个 card 有颜色左边框(按 type_category)+ AI 建议直接显示在 card 上
③ 每个 card 右侧有绿色 📖 Actions 按钮 → 点击展开 Playbook(见优化 4)
④ Cancel Risk card 底部有 MBO 提醒(固定文案)
⑤ Follow Up card 显示"第 X 次联系"badge + 通话/短信计数
选 "Left voicemail" 后:创建 follow-up task,due_at = 后天
选 "Callback later" 后:弹出日期选择器,SA 选日期
选 "Not interested / Wrong number / Already member" 后:直接关闭,不续生
① 新增 6 个选项:No answer / Left voicemail / Not interested / Callback later / Wrong number / Already member
② 按类别分组:Positive / Neutral-Negative(NEW) / Existing neutral
③ 选择后显示自动后续动作提示(蓝色区域)
④ 底部显示每个选项的系统联动逻辑
关键数据:当前 79 个已关闭 task 中,76 个是系统自动关闭,仅 3 个手动关闭。说明现有选项和实际通话结果不匹配 — SA 选不到合适的 → 不关 task → 堆积。
Don't pressure — if she's decided, end positively so she may come back.
Task 页面的数据来源(基于实际代码)
- Task 字段:
task_id,contact_phone,task_type(follow_up / lead_outreach),type_category(retention / cancellation_risk / lead_outreach / lead_follow_up / win_back / renewal / upgrade / booked_not_converted),status(pending / closed),priority(high / medium / low),due_at,source_type - Contact 字段:
contact_first_name,contact_last_name,contact_lifecycle_stage(lead / member),contact_summary,contact_dnc,contact_acquired_at,last_activity_at,lead_status(new / attempted / connected / converted / trialed / neglected — 注:neglected 为 legacy 值,新系统用 Stale Contact 提示替代,不自动标记),contact_purchase_intent,contact_goal - Activity 字段:
call_count,sms_count,first_attempted_at(speed-to-lead),first_connected_at - AI 建议:
suggested_actions— JSON 数组,每项包含{action, reason, priority, priorityReason} - 关闭字段:
close_type(manual_closed / auto_closed),close_result(converted / attempted / other / cancel_saved / issue_resolved / do_not_contact),close_note,closed_by_staff_name,closed_at - API Summary:服务端返回
summary对象包含 pending_count, overdue_count, due_soon_count, ongoing_count, closed_count, manual_closed_count, auto_closed_count, type_category_counts - 分页:Vue Query infinite query,每页 limit=20,offset 翻页
💡 关键发现:76/79 的关闭任务是系统自动关闭的
manual_closed_count = 3, auto_closed_count = 76。SA 几乎不手动关闭 task。这说明当前 Close Task 流程有问题 — 要么 SA 不知道怎么关,要么选项不匹配实际结果,要么流程太麻烦。新增 6 个常用结果选项可以显著提高手动关闭率。
⚠️ 需要确认的依赖
Backlog 降级阈值:Lead 7 天、Cancel/Retention 14 天是建议值。需要 Oliver 和 Manager 确认具体天数。
Callback Later 日期选择器:是用日历控件(更精确)还是快捷按钮(明天 / 后天 / 下周一 / 自定义)?建议用快捷按钮 + 自定义选项,减少 SA 操作步骤。
Task 分配逻辑:见上方「全局限制:没有 Seat 系统」模块。所有人看同一个列表,先到先做。