Add under-anything knowledge dashboard

This commit is contained in:
qiaoxinjiu
2026-05-27 15:40:32 +08:00
commit e31a75d2bb
565 changed files with 143063 additions and 0 deletions

View File

@@ -0,0 +1,240 @@
1|# 子系统 04 — 多渠道触达引擎 (`outreach`) v1.0
2|
3|## 子系统概述
4|
5|| 维度 | 说明 |
6|| --- | --- |
7|| 代号 | `outreach` |
8|| 核心职责 | 渠道路由决策、渠道去重、IM/EDM/APP Push/TEL 渠道调度执行、触达历史管理 |
9|| 数据所有权 | `channel_route_decisions`, `channel_dedup_records`, `im_interaction_records`, `im_flow_tags`, `edm_message_events`, `edm_user_behavior_profiles`, `app_touch_events`, `tel_call_records` |
10|| 启动依赖 | identity / planning / quota均为软依赖 |
11|| 外部系统依赖 | JOYHUBIM 通道、ESPEDM、FCM/APNsAPP Push、电话系统TEL |
12|
13|---
14|
15|## 1. 模块划分
16|
17|```
18|┌─────────────────────────────────────────────────────────────┐
19|│ outreach 子系统 │
20|│ │
21|│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
22|│ │ M1: 渠道路由 │ │ M2: 渠道去重 │ │ M3: IM 执行 │ │
23|│ │ + 优先级 │→│ │→│ 引擎 │ │
24|│ └──────────────┘ └──────────────┘ └──────┬───────┘ │
25|│ │ │
26|│ ┌──────────────┐ ┌──────────────┐ ┌──────┴───────┐ │
27|│ │ M4: EDM 执行 │ │ M5: APP Push │ │ M6: TEL 执行 │ │
28|│ │ 引擎 │ │ 引擎 │ │ 引擎 │ │
29|│ └──────────────┘ └──────────────┘ └──────────────┘ │
30|│ │
31|│ ┌──────────────┐ ┌──────────────┐ │
32|│ │ M7: 触达历史 │ │ M8: 对外 API │ │
33|│ │ 服务 │ │ Gateway │ │
34|│ └──────────────┘ └──────────────┘ │
35|│ │
36|└─────────────────────────────────────────────────────────────┘
37|```
38|
39|| # | 模块 | 职责 |
40|| --- | --- | --- |
41|| M1 | 渠道路由+优先级 | 按用户状态路由到最优渠道APP活跃→IM优先 / 未注册→EDM优先 / 高价值无响应→TEL / C类→IM免评卡片 |
42|| M2 | 渠道去重 | 同一计划同一用户不重复走多渠道路由;工单中暂停自动触达;已提交待核验暂停催评 |
43|| M3 | IM 执行引擎 | IM 推送、用户分层A未参与/B参与过/C长期测评人、回评/测评/免评卡片推送、催评、提交核验、返款通知 |
44|| M4 | EDM 执行引擎 | EDM 发送、送达/打开/点击追踪、行为画像、节奏控制、退订/硬退信处理 |
45|| M5 | APP Push 引擎 | APP 推送、触发源管理(绑定玩具/不活跃/计划到期/Listing紧急/活动)、响应追踪 |
46|| M6 | TEL 执行引擎 | 电话任务生成、拨打前准备(用户画像+风险检查+历史沟通)、通话记录、重试策略 |
47|| M7 | 触达历史服务 | 统一触达历史查询(跨渠道聚合)、供 quota频控、identity上下文卡调用 |
48|| M8 | 对外 API Gateway | 统一对外 API |
49|
50|---
51|
52|## 2. 各模块内外说明
53|
54|### 2.1 M1: 渠道路由+优先级
55|
56|| 维度 | 说明 |
57|| --- | --- |
58|| **对内** | 接收 planning 的已批准计划按用户状态矩阵决定渠道APP活跃+已绑定→IM首选APP低活跃→EDM补充+APP Push召回未注册→EDM首选→引导注册后转IM高价值+多次无响应→TELC类累计≥12→IM免评卡片+KOC/KOL协同 |
59|| **对外接口** | `POST /api/outreach/route` — 输入计划+用户,返回路由决策 |
60|| **数据写入** | `channel_route_decisions` |
61|| **依赖** | `GET /api/identity/context/{person_id}` — 用户状态 |
62|
63|### 2.2 M2: 渠道去重
64|
65|| 维度 | 说明 |
66|| --- | --- |
67|| **对内** | 执行去重规则(同一计划同一用户首选渠道、工单中暂停、已提交评价暂停、退订某渠道永久排除、强关联风险全暂停、弱关联降频+提示) |
68|| **对外接口** | `GET /api/outreach/dedup-check?person_id=&plan_id=` |
69|| **数据写入** | `channel_dedup_records` |
70|| **依赖** | `GET /api/tickets?person_id=&status=open`support`GET /api/risk/check/{person_id}`risk |
71|
72|### 2.3 M3: IM 执行引擎
73|
74|| 维度 | 说明 |
75|| --- | --- |
76|| **对内** | 用户分层逻辑A未参与/B参与过但<12/C≥12长期测评人分层推送策略A推回评卡片/B先催评再二次转化/C仅免评提交后的核验与流转订单号核实→登记→补全信息→返款→二次转化标签管理9 种核心标签如「xx产品已回评用户」「xx产品测评待返款用户」等 |
77|| **对外接口** | `POST /api/outreach/im/send` — 发送 IM 消息 |
78|| **数据写入** | `im_interaction_records`, `im_flow_tags` |
79|| **依赖** | JOYHUBIM 通道);`GET /api/quota/check/{person_id}` |
80|| **待确认** | IM 是 WhatsApp 还是自研 IM通道对接方式 |
81|
82|### 2.4 M4: EDM 执行引擎
83|
84|| 维度 | 说明 |
85|| --- | --- |
86|| **对内** | 推送前检查(身份→风险→退订→资格→国家);行为筛选(打开/点击/回复/频率);节奏判断(适合触达/需降频/不适合发送后追踪送达→打开→点击→回复→退订转化路径下载注册APP→转IM / 直接回复邮件→生成客服工单 / 未响应→再触达队列) |
87|| **对外接口** | `POST /api/outreach/edm/send` — 发送 EDM |
88|| **数据写入** | `edm_message_events`, `edm_user_behavior_profiles` |
89|| **依赖** | ESP 邮件服务 |
90|| **待确认** | EDM 模板在哪里管理?模板变量(用户名/产品名/链接)如何填充? |
91|
92|### 2.5 M5: APP Push 引擎
93|
94|| 维度 | 说明 |
95|| --- | --- |
96|| **对内** | 5 种触发源(绑定新玩具/不活跃/计划到期/Listing紧急/活动);推送前过滤(身份+风险+频控+标签);响应追踪(点击打开→落地页 / 忽略→短期不重复推 / 卸载→转EDM候选池APP 内动作分流(提交回评/测评→IM核验 / 联系客服→工单 / 浏览→更新活跃标签) |
97|| **对外接口** | `POST /api/outreach/app/push` — 发送 APP Push |
98|| **数据写入** | `app_touch_events` |
99|| **依赖** | FCM/APNs |
100|| **待确认** | 是否复用 JOYHUB 现有 Push 通道? |
101|
102|### 2.6 M6: TEL 执行引擎
103|
104|| 维度 | 说明 |
105|| --- | --- |
106|| **对内** | 7 种触发场景(答应配合超时/高价值跟进/复杂售后/多次无响应/紧急Listing/Amazon来电/外呼任务);拨打前准备 5 步(查用户完整画像→查风险→查历史沟通→准备话术→生成电话工单);通话结果 5 种(售后问题解决→引导回评 / 直接配合→登记答应配合 / 拒绝→记录 / 疑似诈骗→转风险 / 未接通→重试);重试策略(<3次重拨 / ≥3次降级EDM或关闭 |
107|| **对外接口** | `POST /api/outreach/tel/task` — 创建 TEL 任务 |
108|| **数据写入** | `tel_call_records` |
109|| **依赖** | 电话系统(外呼/来电) |
110|
111|### 2.7 M7: 触达历史服务
112|
113|| 维度 | 说明 |
114|| --- | --- |
115|| **对内** | 跨渠道聚合触达历史IM/EDM/APP/TEL提供统一查询接口供 quota频控和 identity上下文卡消费 |
116|| **对外接口** | `GET /api/outreach/history/{person_id}` |
117|| **数据写入** | 只读聚合 |
118|
119|---
120|
121|## 3. 对外 API 契约(草案)
122|
123|| 接口 | 方法 | 输入 | 输出 | 消费者 |
124|| --- | --- | --- | --- | --- |
125|| 触达历史 | `GET /api/outreach/history/{person_id}` | person_id | `{im[], edm[], app[], tel[]}` | quota频控, identity上下文卡 |
126|| 执行触达 | `POST /api/outreach/send` | `{plan_id, person_ids[], channel, content}` | `{task_id, status}` | planning |
127|| 渠道路由决策 | `POST /api/outreach/route` | `{person_id, plan_id}` | `{recommended_channel, alternatives[]}` | planning |
128|| IM 消息发送 | `POST /api/outreach/im/send` | `{person_id, msg_type, content}` | `{message_id}` | 内部 |
129|
130|---
131|
132|## 4. 数据对象
133|
134|| 对象 | 核心字段 | 说明 |
135|| --- | --- | --- |
136|| `channel_route_decisions` | decision_id, person_id, plan_id, selected_channel, reason, decided_at | 渠道路由决策 |
137|| `channel_dedup_records` | dedup_id, person_id, plan_id, channel, status(BLOCKED/ALLOWED), block_reason | 渠道去重记录 |
138|| `im_interaction_records` | interaction_id, person_id, msg_type(PUSH_CARD/REVIEW_CARD/EXEMPTION_CARD/REMINDER/REFUND_NOTICE), direction(OUTBOUND/INBOUND), content, status, created_at | IM 交互记录 |
139|| `im_flow_tags` | tag_id, person_id, tag_type, tag_value, tagged_at | IM 流程标签(如 xx产品待返款等 |
140|| `edm_message_events` | event_id, person_id, email, event_type(SENT/DELIVERED/OPENED/CLICKED/REPLIED/UNSUBSCRIBED/HARD_BOUNCED), occurred_at | EDM 事件 |
141|| `edm_user_behavior_profiles` | profile_id, person_id, email, last_opened_at, total_opens, consecutive_no_open, last_replied_at, monthly_received, status | EDM 用户行为画像 |
142|| `app_touch_events` | event_id, person_id, trigger_type, push_status, response, occurred_at | APP Push 事件 |
143|| `tel_call_records` | call_id, person_id, ticket_id, direction(OUTBOUND/INBOUND), call_status, duration, outcome, retry_count, recorded_at | TEL 通话记录 |
144|
145|---
146|
147|## 5. 业务澄清问题清单 — outreach
148|
149|### 5.1 渠道优先级路由4 项)
150|
151|| # | 问题 | 优先级 |
152|| --- | --- | --- |
153|| O-01 | 路由规则是否可配置?(例如针对某个站点用户调整 IM > EDM 的优先级)配置界面在 outreach 内还是在独立配置管理? | **P0** |
154|| O-02 | 「APP 低活跃」的判定标准是什么N 天未打开N 天未点击推送?)阈值是否可配置? | P1 |
155|| O-03 | 高优先级渠道发送失败(退信/未送达)后,是否自动降级到下一渠道?降级是否有冷却时间? | P1 |
156|| O-04 | C 类用户累计≥12只推免评——如果免评计划也没有是完全不推还是推品牌/活动内容? | P2 |
157|
158|### 5.2 IM 通道4 项)
159|
160|| # | 问题 | 优先级 |
161|| --- | --- | --- |
162|| O-05 | IM 使用的具体平台是什么WhatsApp Business API / 自研 JOYHUB IM / Messenger不同平台的 API 能力和限制? | **P0** |
163|| O-06 | IM 的「分层」是系统自动判断还是人工可干预?(一个 B 类用户会不会被错误标记为 C 类?如何修正?) | **P0** |
164|| O-07 | IM 推送中「测评卡片」的具体形式是什么?(带按钮的消息模板?需要用户填表单?)模板在哪里管理? | P1 |
165|| O-08 | IM 中的「订单号核实」——核实的数据源是什么比对内部订单表Amazon 订单 API核实失败的转人工流程 | P1 |
166|
167|### 5.3 EDM 通道4 项)
168|
169|| # | 问题 | 优先级 |
170|| --- | --- | --- |
171|| O-09 | 当前使用的邮件服务是什么SendGrid/Mailchimp/SES/自建?)有没有现成 API 和 Webhook 追踪? | **P0** |
172|| O-10 | EDM 模板(邮件内容、样式、多语言)在哪里管理?属于 outreach 还是独立内容管理子系统? | P1 |
173|| O-11 | 「EDM 行为画像」中的「最近 3/5 次 0 打开」——3 次和 5 次是两个独立指标还是二选一?各自对应什么策略? | P1 |
174|| O-12 | EDM 发送量和频控——单日最大发送量有限制吗ESP 的每日限额?) | P1 |
175|
176|### 5.4 APP Push3 项)
177|
178|| # | 问题 | 优先级 |
179|| --- | --- | --- |
180|| O-13 | APP Push 是否复用 JOYHUB 的现有推送通道?还是需要独立接入 FCMAndroid和 APNsiOS | **P0** |
181|| O-14 | APP Push 和 IM 消息的分工——文档第 11.2 节给了对照表,但边界是否绝对?(例如"计划到期提醒"是否可能同时走 APP Push 和 IM | P1 |
182|| O-15 | APP 落地页——推送点击后跳转到哪个页面APP 内的测评页IM 对话页?)落地页由哪个团队/子系统负责? | P2 |
183|
184|### 5.5 TEL 通道3 项)
185|
186|| # | 问题 | 优先级 |
187|| --- | --- | --- |
188|| O-16 | 电话系统使用什么方案?(自建 SIP PBX / Twilio / 其他云呼叫中心?)是否已有通话记录? | **P0** |
189|| O-17 | 「拨打前准备」第 2 步「查风险:强关联命中→暂停拨打→先复核」——复核由谁来做?(风险人员?客服组长?)复核时长预期? | P1 |
190|| O-18 | 电话中「尽量确认」的字段(购买平台、订单号、产品型号、购买时间、问题类型、凭证)如果用户不愿意/无法提供——哪些是必须确认的?哪些可以跳过? | P1 |
191|
### 5.6 消息内容与合规4 项)
| # | 问题 | 优先级 |
| --- | --- | --- |
| O-19 | 消息内容是否需要审核IM 推送文案、EDM 邮件内容、APP Push——上线前是否需要审核审核流程 | P1 |
| O-20 | EDM 合规要求——是否遵守 CAN-SPAM Act美国、GDPR欧洲、CASL加拿大退订机制是否满足法律要求 | P1 |
| O-21 | IM 平台的合规限制——WhatsApp 等平台禁止垃圾消息和特定类型内容(如测评引导)——是否有合规风险? | P1 |
| O-22 | 消息发送的时区感知——美国用户、英国用户、德国用户的推送时间是否需要本地化?(用户当地时间的白天而非半夜) | P1 |
### 5.7 消息策略与实验3 项)
| # | 问题 | 优先级 |
| --- | --- | --- |
| O-23 | 是否需要 A/B 测试能力?(同一计划的两组用户收到不同文案/不同发送时间——对比转化率?) | P2 |
| O-24 | 消息打开率/点击率/转化率的追踪和报表?是否需要自动优化发送策略(高打开率的文案模板优先使用)? | P2 |
| O-25 | 用户反馈「消息太频繁/内容不相关」——是否有投诉/退订统计和预警?(投诉率超过 X% 暂停该类型推送?) | P1 |
### 5.8 IM 通道补充3 项)
| # | 问题 | 优先级 |
| --- | --- | --- |
| O-26 | IM 消息的「已读」状态是否能获取WhatsApp 的蓝色双勾——能否用于判断用户是否看到消息?) | P1 |
| O-27 | IM 用户提交的「评论截图/链接」——如何自动验证截图的真实性?(防止用户 PS 假截图?是否需要 OCR 识别截图内容?) | P1 |
| O-28 | IM 中的返款通知——返款是系统自动触发还是人工触发?返款状态如何回写到 outreach | P1 |
### 5.9 EDM 通道补充3 项)
| # | 问题 | 优先级 |
| --- | --- | --- |
| O-29 | EDM 的「硬退信」和「投诉」是否自动同步到 identity 的风险标记?(硬退信用户是否需要进入风险观察?) | P1 |
| O-30 | EDM 引导用户下载 APP——是否在邮件中嵌入归因链接deferred deep link以追踪转化来源 | P2 |
| O-31 | EDM 的发送域名和 IP 预热策略?(新域名/IP 直接大批量发送会被 ESP 判定为垃圾邮件——需要渐进式预热?) | P2 |
### 5.10 TEL 通道补充3 项)
| # | 问题 | 优先级 |
| --- | --- | --- |
| O-32 | 电话录音是否需要存储?存储多久?谁有权调取录音?(涉及合规和隐私) | P1 |
| O-33 | 不同国家的电话合规要求——美国需提前告知录音、德国的 GDPR 限制——如何处理? | P1 |
| O-34 | TEL 任务的优先级和分配——多个外呼任务同时存在时,客服按什么顺序拨打?(先打高价值用户?先打答应配合超时的?) | P1 |
### 5.11 实施层面4 项)
| # | 问题 | 优先级 |
| --- | --- | --- |
| O-35 | 各外部通道的 rate limit 和计费模式WhatsApp 按消息数计费EDM 按发送量计费?)是否需要成本控制? | P1 |
| O-36 | 消息发送是同步还是异步?(用户点「发送」后立即返回还是后台队列处理?失败重试策略?) | P1 |
| O-37 | 多渠道消息的发送顺序保证?(「先发 IM 提醒→24h 后无回复再发 EDM」——这种时序依赖如何实现定时任务延迟队列 | P2 |
| O-38 | 异常场景——如果某渠道 100% 发送失败ESP 宕机/WhatsApp API 限流)——是否自动切换备用渠道? | P2 |