Task 生成、更新与关闭机制

Historical research / Superseded(2026-07-15):本文保留旧场景和历史问题,不再定义 Task lifecycle、SLA、Outcome 或 AI authority。现行规范见 Task System Design

Contact Analysis(Pipeline 2 / contacts-analyzer)按业务目标识别客户当前场景,判定是否需要跟进。分类准则:这次跟进要达成什么业务目的?


第一部分:生成机制

一、触发方式

Follow-up Task 由 Contact Analysis(Pipeline 2) 生成。Per-Call AI(Pipeline 1)不生成 Task,但可以通过设置 follow_up_needed=yes 触发 Pipeline 2 运行。

触发方式说明频率
Cron 触发每日凌晨 06:00 UTC 自动运行,扫描过去 24h 有活动的客户,综合分析所有通话 + SMS + Contacts 数据每日 1 次
Per-Call AI 触发Per-Call AI(Pipeline 1)分析单通通话后设置 follow_up_needed=yes,直接触发 Pipeline 2 运行每通通话后(条件触发)
On-Demand Refresh员工在 Tasks 页面点击 "Refresh AI" 按钮,立即对当前门店执行一次 Contact Analysis手动触发,1 小时冷却

为什么 Per-Call AI 不直接生成 Task? 单通通话的信息量不足以做出可靠的跟进判定。Contact Analysis 综合该客户的全部通话历史、SMS、Contacts 数据,才能准确判断是否需要跟进、跟进什么。Per-Call AI 的角色是实时信号检测——发现需要跟进的信号后触发 Pipeline 2 做综合判定。

On-Demand Refresh

员工在两次 Cron 之间打了多通电话,想要 AI 立即根据最新通话数据更新任务列表,而不必等到次日凌晨。

项目规则
触发方式点击 Tasks 页面的 "Refresh AI" 按钮
分析范围与 Cron 触发相同(4 表全量数据)
冷却时间同一门店 1 小时内只能触发一次
处理方式SQS 异步,前端每 2 秒轮询,最多等 15 秒

架构详情见 AI 插入点行业调研


二、AI 输出与 Task 字段映射

Contact Analysis 的输出直接映射为 Follow-up Task 的关键字段:

AI 输出字段→ Task 字段说明
actionNeededtrue 时生成 Task;false 时不生成
suggestedActions[].actionsuggestedActions[].action一句话行动建议,显示在任务卡片第 3 行
suggestedActions[].reasonsuggestedActions[].reasonAI 为什么建议这个操作,供管理者参考
suggestedActions[].prioritypriorityHigh / Medium / Low,决定截止时间窗口(取最高优先级)
业务目标分类typeCategoryAI 根据场景判定标签(如 LEAD OUTREACH、CANCELLATION RISK 等)

字段定义详见 Task 字段设计typeCategory 枚举值见 Task 字段设计 §二


三、优先级判定规则

3.1 三级优先级与业务目标映射

优先级含义对应业务目标
🔴 HighRevenue at risk — 营收面临风险投诉挽留、支付恢复、避免流失
🟡 MediumOpportunity exists — 存在转化机会促进成交、促进升级、冻结恢复、挽回客户
🔘 LowRoutine follow-up — 常规跟进风险已消除的后续监测(如投诉已解决的满意度确认、成功回归后的活跃度跟踪)

逻辑:已有营收可能流失 → High;潜在营收可以争取 → Medium;无明确风险或机会的例行跟进 → Low。

3.2 AI 判定因素

判定因素HighMediumLow
收入风险会员有取消意向、投诉未解决、支付失败
漏斗位置试课后未成交(离签约最近)触达后未预约、爽约待重约留了语音信箱、"下周再聊"
时间窗口黄金窗口内(爽约当天、试课后 24h)窗口还有余量(1-3 天)无明确窗口压力
客户信号客户主动询价、明确表达兴趣有过互动但意向不明无回应、需要再次触达

3.3 优先级 → 截止时间窗口

优先级截止窗口(默认值)示例
High任务生成时间 + 4 小时上午 10:00 生成 → due by 下午 2:00
Medium任务生成时间 + 24 小时上午 10:00 生成 → due by 明天上午 10:00
Low任务生成时间 + 72 小时上午 10:00 生成 → due by 3 天后上午 10:00

以上为系统默认值,店铺管理者可在设置中按优先级分别自定义。截止时间需排除静默时间(夜间 9 PM ~ 8 AM)。

截止时间、排序等完整规则见 Tasks Overview §4.1


四、业务场景

4.1 新 Lead 首次联系(LEAD OUTREACH)

新 Lead 到达系统,需要在 SLA 窗口内首次联系。由 lead-tracking Lambda 在 Lead 到达时直接创建,不经过 Contact Analysis。

客户场景actionNeeded时间要求行动策略建议
新 Lead 到达(网页表单/电话咨询/walk-in)5 分钟 SLA立即联系,介绍会籍方案,安排参观或试课

判定依据:系统事件驱动 — 新 Lead 进入系统时由 lead-tracking Lambda 自动创建,source_type='lead'

4.2 Lead 持续跟进(LEAD FOLLOW-UP)

Lead 首次联系后未转化,需要持续跟进推动进入下一步。

客户场景actionNeeded时间要求行动策略建议
接通但未预约首次沟通后 24h 内发送感兴趣的信息,针对顾虑回应
有兴趣但未决定Day 3 → Day 7 → Day 14持续推进,话术根据客户类型调整
提醒未接通2-4h 换时段换时段重试
条件性拒绝(Bad Timing)客户提到的时间点前 1 周条件变化时重新联系

判定依据:Contact Analysis 综合通话历史判定。leadStatusnew / attempted / connected 且未进入 terminal 状态时持续生成。

4.3 预约后促进成交(BOOKED NOT CONVERTED)

Lead 已预约试课但未完成签约,需要跟进推动转化。

客户场景actionNeeded时间要求行动策略建议
已预约但爽约爽约当天友好询问原因,重新安排时间
到店但未试课离店后 2-4h消除试课顾虑,提供灵活安排
试课但未成交试课后 2-4h(短信)→ 24h(电话)回顾体验亮点,解决顾虑,限时优惠

判定依据:Contact Analysis 判定。leadStatusbooked / showed / trialed,已过预约时间,且未 converted

4.4 促进升级(UPGRADE)

现有会员有升级机会,需要推动升级以提升客单价。

客户场景actionNeeded时间要求行动策略建议
会员表达升级意向但未行动沟通后 24-48h发送升级方案对比,强调增量价值
员工推荐升级但客户犹豫Day 3 → Day 7提供限时升级优惠或试用体验
消课率高的活跃会员识别后 1 周内主动推荐进阶课程或升级套餐

判定依据:通话分析直接判定(会员表达升级意向但未行动、员工推荐升级但客户犹豫);系统数据判定(消课率高的活跃会员)。

4.5 投诉挽留(COMPLAINT RETENTION)

客户投诉(主动表达不满),需要跟进直到投诉闭环。

客户场景actionNeeded时间要求行动策略建议
问题未解决按紧急度:数小时 → 每天直到问题解决
问题已解决解决后 48h 内确认满意度,化危为机
投诉升级处理后 24h 内高优先级,管理者介入

判定依据:通话分析直接判定 — 从通话内容中的问题描述、解决确认、情绪升级等信号分析得出。

4.6 支付恢复(PAYMENT RECOVERY)

会员支付失败(卡过期、余额不足等),自动重试未成功,需要人工催回更新支付方式。

客户场景actionNeeded时间要求行动策略建议
信用卡过期失败后 48h 内首次电话告知支付失败,引导更新支付方式
扣款失败(余额不足等)自动重试失败后 48h友好提醒,避免因支付问题导致账户中断

判定依据:系统数据判定 — 由支付网关返回的失败状态 + 自动重试结果驱动。

4.7 避免流失(CANCELLATION RISK)

客户出现流失信号,需要主动干预留住客户。

客户场景actionNeeded时间要求行动策略建议
会员表达取消意向24h 内了解原因,提供挽留方案
提供了方案(调课/换教练等)1-2 周后确认方案是否落实、客户是否恢复活跃
客户说"再想想"1 周 → 2 周不强压,定期温和跟进

判定依据:通话分析直接判定(表达取消意向、提供了方案、客户说"再想想")。

4.8 冻结恢复(FREEZE RECOVERY)

会员冻结即将到期或已到期,需要主动联系确认回归并重新激活出勤习惯。

客户场景actionNeeded时间要求行动策略建议
冻结即将到期到期前 2 周确认回归意向,帮忙预约第一节课
冻结已到期未出勤到期后 3-5 天欢迎回来,了解阻碍原因,安排课程

判定依据:系统数据判定 — 由冻结到期日 + 出勤记录驱动。

4.9 挽回客户(WIN-BACK)

前会员主动联系或表达回归意向,需要推动重新签约。

客户场景actionNeeded时间要求行动策略建议
前会员主动咨询回归当天 → 24h安排参观,介绍当前会籍方案和回归优惠
前会员回复 SMS 表达兴趣24-48h趁热打铁,预约到店时间

判定依据:通话分析直接判定(前会员主动联系);SMS 内容分析(回复表达兴趣)。

4.10 活动推广(EVENT PROMOTION)

推动会员报名挑战赛或活动,产生一次性收入。

客户场景actionNeeded时间要求行动策略建议
活动报名窗口开放报名截止前 1-2 周电话/SMS 推荐适合的活动,强调往期参与体验
会员曾参加过类似活动报名开放后 3 天内优先联系老参与者,利用熟悉感推动报名

判定依据:系统数据判定 — 由活动日历 + 会员历史参与记录驱动。

4.11 特别推广(SPECIAL PROMOTION)

推广客户洽谈或已有推广合作需跟进扩展。

客户场景actionNeeded时间要求行动策略建议
企业 HR 咨询团购24h 内安排会议,介绍推广方案和折扣
已有推广合作需扩展季度回顾后 1 周跟进新增员工意向,维护合作关系

判定依据:通话/SMS 分析判定(企业咨询);系统数据判定(推广合作到期或季度回顾)。

4.12 终态(不生成跟进任务)

以下场景 AI 判定 actionNeeded = false,不生成 Follow-up Task。

客户场景actionNeeded说明
已成交
明确拒绝(Not Interested)标记为绝对拒绝,停止一切跟进
确认到店
客户满意、无异常

判定依据:通话分析直接判定 — 均可从通话内容直接分析。


第二部分:更新与关闭机制

五、员工手动更新

员工可以通过 UI 调整任务的截止时间(dueAt),状态会实时重算:

操作触发方式效果
Adjust(调整截止时间)点击任务卡片的 "Adjust" 按钮,选择新日期/时间,填写原因dueAt 更新,状态自动重算(ongoing / due soon / overdue),变更记录写入 dueAtChangelog

状态重算规则

dueAt 被调整后,任务状态根据新的截止时间实时重算:

条件状态
dueAt < NOW()overdue
Lead Outreach:dueAt - NOW() < 2 mindue soon
Follow-up:dueAt - NOW() < 1 hourdue soon
其他ongoing

dueAtChangelog 记录每次调整的 from、to、reason、changedBy、changedAt,供管理者审计。

注意:员工调整与 AI 重建的冲突问题(待确认)

Contact Analysis(Pipeline 2)下次运行时会 auto-close 旧 task 并创建新 task。当前实现中,新 task 的所有字段(dueAt、priority 等)均来自 AI 新一轮分析,员工之前的调整(如客户说"下周二再打"导致的 dueAt 变更)不会被带到新 task 里。P2 虽然会读旧 task(用于避免重复创建),但不会读取 dueAtChangelog 中的员工调整记录。

这意味着员工的手动调整可能在 P2 下次运行后丢失。需要与后端确认是否应该:(1)让 AI prompt 包含旧 task 的 dueAtChangelog,使 AI 在分析时考虑员工已做的安排;(2)新 task 在代码层面继承旧 task 中员工手动调整过的 dueAt。


六、关闭方式

Follow-up Task 有两种关闭方式:AI 自动关闭和员工手动关闭。

6.1 AI 自动关闭(closeType = auto_closed)

触发系统触发时机机制
Contact Analysis(Pipeline 2)Cron / Per-Call AI 触发 / On-Demand Refresh每次运行时先 auto-close 该客户的旧 contact_analysis 类 task,再根据最新分析决定是否创建新 task

AI 自动关闭的典型场景:

触发场景说明
客户主动来电/来 SMS 且目标已达成客户已主动完成了任务目标对应的动作
客户明确拒绝(Not Interested)AI 判定为绝对拒绝,停止一切跟进
客户通过其他渠道已完成行动如客户自行线上预约、已到店等,AI 从后续通话中推断

6.2 员工手动关闭(closeType = manual_closed)

员工点击 [Close Task] 按钮,选择一个 businessResult 即可关闭任务。

autoCloseResult 枚举和 businessResult 枚举详见 Tasks 字段设计;营收归因详见 任务与营收归因;关闭流程详见 Tasks Overview §4.2