Files
Fulfilled-Knowledge/05_需求文档/20260517_USER评价业务闭环_第三步_数据流与中间对象设计_v3.md
2026-05-26 15:08:20 +08:00

1031 lines
44 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# USER 评价业务闭环 — 第三步:数据流与中间对象设计 v3
## 文件信息
- 文件名称:`20260517_USER评价业务闭环_第三步_数据流与中间对象设计_v3.md`
- 项目路径:`C:\XCODE\USER`
- 当前版本:`v3`
- 最近更新:`2026-05-17`
- 上游文档:
- [工作基线 v1.2](20260517_USER评价业务闭环主流程与后续工作基线_v1.2.md) — 业务规则与额度口径
- [共用能力图与渠道专属流程 v2.2](20260517_USER评价业务闭环_共用能力图与渠道专属流程_v2.2.md) — 每个节点的 查/写/状态/提醒/拦截
- 前置版本:
- `数据流与中间对象需求_v1`Codex六层架构骨架
- `数据流与中间对象设计_v1.1`Codex字段字典最全版
- `第三步_数据流与中间表设计_v1`(字段级展开 + 流转时序)
- `第三步_数据流与中间表设计_v2`(吸收 Codex 优点的合并版)
- 合并策略:以 Codex v1.1 为主骨架(保留其完整字段字典和免评对象),补入 v2 的流转时序表、写入顺序图和快照策略。
- 文件目的:作为第三步最终主稿,后续数据库物理设计、接口设计和页面点击读写设计均以此为准。
---
## 1. 第三步的目标
第三步不再回答"流程怎么走",而是回答:
1. 现有系统里已经有哪些数据可以复用。
2. 为什么仅靠现有 `users / amazon_orders / review_plans / push_tasks / support_tickets / fraud_events` 不够。
3. 必须新增哪些中间对象。
4. 哪些是正式事务表,哪些只是快照,哪些可以先做成视图。
5. 从需求形成到结果回流,数据怎样一层一层往下走。
---
## 2. 本步先给出的结论
### 2.1 不能再只围绕单一账号建模
后续所有关键判断都应围绕 **真实人**,而不是只看 JOYHUB ID / 邮箱 / 电话 / Amazon 账号 / 单次订单。JOYHUB 用户只是身份线索之一,真实人才是额度、历史、风险、跨渠道去重和客服上下文的主对象。
### 2.2 现有表能承载业务记录,但承载不了跨流程判断
既有表更接近"某一模块自己的账",但前两步已确认的新需求需要额外的中间层:真实人跨账号归并、每次互动重判、人群入选/排除解释、额度预占与跨渠道去重、客服上下文、评价提交与展示拆分、退款比对。
### 2.3 第三步最重要的是把对象分层
本文件把数据对象分为六层:
```
源数据层 → 主实体层 → 桥接层 → 事件层 → 快照与决策层 → 结果回流层
```
---
## 3. 数据设计原则
| 原则 | 说明 |
| --- | --- |
| 先识别真实人,再做额度与风险 | 否则 4/4/12 规则都会被多账号绕开 |
| 事件与快照分离 | 事件是原始事实,快照是某个时点的判断结果 |
| 当前态与历史态分离 | 当前视图可重算,历史决策必须留痕 |
| 计划、渠道、客服、风险状态分离 | 不能压成一个字段 |
| 用户提交与平台展示分离 | 真实提交计额度Amazon 展示计计划完成 |
| 能解释"为什么" | 入选、排除、拦截、转人工都要能追溯 |
| 先复用现有对象,再补最小中间层 | 不为了建模漂亮重造全部旧表 |
| 对敏感数据分层处理 | 原值、标准化值、哈希/指纹、脱敏展示值应区分 |
---
# 第一部分:现有数据源分析
## 4. 现有数据源盘点
| 数据源 | 当前可用内容 | 主要缺口 |
| --- | --- | --- |
| 现有 ERP 用户管理 | 用户 ID、用户名、注册时间、最近活跃、国家、性别、邮箱、绑定产品数、标签 | 仍是账号视角,不是真实人视角 |
| APP / 用户数据库 | JOYHUB ID、邮箱、设备号、设备型号/类型、系统版本、APP版本、绑定玩具、活跃与点击行为 | 需要设备变更轨迹和与订单/客服联动 |
| Amazon 订单 | 订单号、ASIN、站点、购买时间、订单状态、Profile ID、收件人姓名、收件地址等 | 需要标准化姓名/地址和收件人指纹 |
| Amazon 评价/Listing | ASIN、评分、评价数、差评数、评价缺口、展示结果 | 用户真实提交与平台展示要拆成两条事实 |
| 推送系统 | Push 计划、素材、任务、打开、点击、回复、投诉、退订 | IM/EDM/APP 语义不同,不能只用一套粗糙 push 结果 |
| 客服/TEL | 工单、通话、售后、答应配合、问题处理 | 需要和上下文卡、风险复检、跟进状态联动 |
| 黑名单/诈骗资料 | 黑名单、诈骗事件、双重退款、强弱关联 | 需要把风险信号与确认案件拆开 |
| OA 返款/Amazon 退款 | 内部返款与 Amazon 退款 | 缺统一比对对象 |
| JOYCOLLAB | KOC/KOL、内容、Code、点击、订单、转化、佣金 | 需要和 USER 计划/ASIN 结果打通 |
### 4.1 Amazon 订单字段明细(结合表头.xlsx
| 字段 | 主要用途 | 涉密 |
| --- | --- | --- |
| 订单号 | 订单核验、真实人关联、退款比对 | 是 |
| 订单状态 | 判断是否撤销、退款、退货、换货 | - |
| 买家姓名 / 买家邮箱 | 身份关联 | 是 |
| 收件人 / 电话 | 真实人归并、风险判断 | 是 |
| 地址 / 城市 / 州 / 邮编 | 收件人归并、同址异名识别 | 是 |
| ASIN / MSKU / SKU / 品名 / 标题 | 产品匹配、计划归属 | - |
| 订购日期 / 发货时间 / 结算时间 | 时序判断 | - |
| 数量 / 单价 / 订单总金额 / 销售额 | 交易画像 | 是 |
| 是否退款 / 退款总金额 | 双重退款检测 | 是 |
| 请求评论状态 | 评价缺口判断 | - |
| 店铺 / 国家 / 销售渠道 | 站点匹配 | - |
| Order Item ID | 订单行级关联 | - |
### 4.2 订单侧必须补的派生字段
| 字段 | 说明 |
| --- | --- |
| `recipient_name_normalized` | 标准化后的收件人姓名 |
| `recipient_address_normalized` | 标准化后的地址 |
| `recipient_fingerprint` | 由标准化姓名+地址生成的稳定指纹 |
| `address_fingerprint` | 仅地址指纹,用于识别同址异名 |
---
## 5. 全局数据流
```mermaid
flowchart LR
subgraph S["源数据层"]
S1["现有ERP用户/标签/身份"]
S2["APP/设备/行为"]
S3["Amazon订单/评价/Listing"]
S4["IM/EDM/APP Push/TEL"]
S5["客服/工单/售后"]
S6["黑名单/OA返款/Amazon退款"]
S7["JOYCOLLAB"]
end
subgraph M["主实体与桥接层"]
M1["真实人 person_profiles"]
M2["身份关联 person_identity_links"]
M3["订单/ASIN/计划/工单"]
M4["订单关联/路由/去重"]
end
subgraph D["快照与决策层"]
D1["画像快照 person_feature_snapshots"]
D2["上下文卡 contact_context_snapshots"]
D3["额度台账/预占"]
D4["风险信号/风险案件"]
D5["人群快照/排除快照"]
D6["互动复检/路由决策"]
end
subgraph E["事件层"]
E1["渠道事件"]
E2["客服/TEL事件"]
E3["退款事件"]
E4["评价提交事件"]
E5["免评执行事件"]
end
subgraph R["结果回流层"]
R1["评价展示核验"]
R2["退款比对结果"]
R3["免评结果"]
R4["ASIN健康/计划完成"]
R5["绩效/审计/下一轮需求"]
end
S1 & S2 & S3 --> M1
S1 & S2 & S3 --> M2
M1 & M2 & M3 --> D1
M1 & M2 & M3 --> D2
D1 --> D5
D3 & D4 --> D5
D5 --> D6
D6 --> E1
S4 --> E1
S5 --> E2
S6 --> E3
E1 & E2 --> E4
S7 --> E5
E3 --> R2
E4 --> R1
E5 --> R3
R1 & R2 & R3 --> R4
R4 --> R5
R5 --> M3
```
---
# 第二部分:数据对象分层总表
## 6. 对象分层总表
| 分层 | 对象 | 说明 |
| --- | --- | --- |
| 源数据 | `users``devices``amazon_orders``asin_listings``push_tasks``support_tickets``fraud_events`、JOYCOLLAB 数据 | 现有或外部事实来源 |
| 主实体 | `person_profiles``request_tickets``review_plans``exemption_plans``risk_cases``blacklist_entities` | 核心业务主体 |
| 桥接 | `person_identity_links``user_order_links``plan_task_links``channel_route_decisions``channel_dedup_records` | 跨主体关系 |
| 事件 | `im_interaction_records``im_flow_tags``edm_message_events``app_touch_events``tel_call_records``review_submission_records``amazon_refund_records``oa_refund_records``support_assignment_logs` | 不可丢失的事实 |
| 快照/决策 | `person_feature_snapshots``contact_context_snapshots``person_quota_ledgers``quota_reservations``audience_snapshots``audience_exclusions``interaction_recheck_records``edm_user_behavior_profiles``channel_route_decisions``channel_dedup_records` | 为某次决策保留当时依据 |
| 结果/回流 | `review_display_checks``refund_match_results``exemption_result_snapshots``listing_health_snapshots``support_performance_snapshots` | 结果与复盘 |
| 治理 | `interaction_audit_logs``manual_review_tasks``export_logs``audit_logs` | 审计、复核、导出 |
---
## 7. 现有对象如何处理
### 7.1 可以直接复用
| 现有对象 | 处理 |
| --- | --- |
| `request_tickets` | 保留,继续作为需求入口 |
| `amazon_orders` | 保留,补标准化姓名/地址与收件人指纹 |
| `asin_listings` | 保留,继续作为 ASIN/Listing 主档 |
| `support_tickets` | 保留,拆出跟进、分派和风险状态辅助表 |
| `fraud_events` | 保留,上游增加 `risk_signals`,下游衔接 `risk_cases/blacklist_entities` |
| `audit_logs` | 保留 |
### 7.2 需要扩展
| 现有对象 | 需要补的能力 |
| --- | --- |
| `users` | 不再承担真实人主档,只保留 JOYHUB 账号层信息 |
| `devices` | 补设备型号、系统版本、APP版本、首次/最近出现、设备变化 |
| `review_plans` | 增加计划族或与 `exemption_plans` 分离 |
| `push_tasks` | 被更细的渠道事件表补充 |
| `support_tickets` | 增加与上下文卡、答应配合、风险复核、TEL 记录的关联 |
### 7.3 必须新增
| 对象 | 原因 |
| --- | --- |
| `person_profiles` | 真实人主档 |
| `person_identity_links` | 多线索归并 |
| `person_feature_snapshots` | 画像解释 |
| `contact_context_snapshots` | 客服一屏上下文 |
| `person_quota_ledgers` | 4/4/12 统一额度 |
| `quota_reservations` | 并发占用与预警 |
| `audience_snapshots` | 人群生成留痕 |
| `audience_exclusions` | 排除原因留痕 |
| `channel_route_decisions` | 渠道路由解释 |
| `channel_dedup_records` | 跨渠道去重 |
| `interaction_recheck_records` | 每次有效互动重新判断留痕 |
| `refund_match_results` | 双重退款识别 |
| `review_display_checks` | 评价展示拆分 |
---
# 第三部分P0/P1/P2 优先级
## 8. P0没有它们主流程就不可靠
| 对象 | 类型 | 关键用途 |
| --- | --- | --- |
| `person_profiles` | 主实体 | 真实人主档 |
| `person_identity_links` | 桥接 | 账号、邮箱、电话、设备、Profile、收件人归并 |
| `person_feature_snapshots` | 快照 | 画像依据 |
| `contact_context_snapshots` | 快照 | 客服上下文卡 |
| `person_quota_ledgers` | 台账 | 4/4/12 统一额度 |
| `quota_reservations` | 台账 | 计划并发占用 |
| `risk_signals` | 事件 | 风险原始信号 |
| `risk_cases` | 主实体 | 风险案件 |
| `blacklist_entities` | 主实体 | 确认拦截对象 |
| `audience_snapshots` | 快照 | 某次人群生成结果 |
| `audience_exclusions` | 快照 | 排除原因 |
| `channel_route_decisions` | 决策 | 渠道路由 |
| `channel_dedup_records` | 决策 | 跨渠道去重 |
| `interaction_recheck_records` | 决策 | 每次有效互动重判 |
## 9. P1主流程可走但没有它们会粗糙且难复盘
| 对象 | 类型 | 关键用途 |
| --- | --- | --- |
| `im_interaction_records` | 事件 | IM 细节 |
| `im_flow_tags` | 事件/派生 | IM 流程流转 |
| `edm_message_events` | 事件 | EDM 打开/点击/回复/退订 |
| `edm_user_behavior_profiles` | 快照 | EDM 画像 |
| `app_touch_events` | 事件 | APP Push 触达 |
| `tel_call_records` | 事件 | 电话全记录 |
| `support_followups` | 事务 | 答应配合跟进 |
| `support_assignment_logs` | 事件 | 分配与升级 |
| `review_submission_records` | 事件 | 用户真实提交评价 |
| `review_display_checks` | 结果 | Amazon 展示核验 |
| `exemption_plans` | 主实体 | 免评计划 |
| `exemption_plan_tasks` | 事务 | 免评任务 |
| `creator_content_records` | 事件 | KOC/KOL 内容 |
| `exemption_result_snapshots` | 结果 | 免评结果 |
| `amazon_refund_records` | 事件 | Amazon 退款 |
| `oa_refund_records` | 事件 | OA 返款 |
| `refund_match_results` | 结果 | 双重退款比对 |
## 10. P2管理、效率与治理增强
| 对象 | 类型 | 关键用途 |
| --- | --- | --- |
| `attendance_records` | 事务 | 出勤 |
| `shift_schedules` | 事务 | 排班 |
| `support_goal_records` | 事务 | 目标 |
| `support_performance_snapshots` | 快照 | 绩效 |
| `manual_review_tasks` | 事务 | 人工复核 |
| `interaction_audit_logs` | 审计 | 高敏动作审计 |
---
# 第四部分:完整字段字典
## 11. 真实人与身份层
### 11.1 `person_profiles`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `person_id` | PK | 真实人唯一标识 |
| `created_at` | datetime | 首次识别时间 |
| `updated_at` | datetime | 最近归并更新时间 |
| `merge_confidence` | enum | 高/中/低 |
| `status` | enum | 正常/观察中/已确认风险 |
| `primary_country` | string | 当前主要国家 |
| `primary_language` | string | 当前主要语言 |
| `latest_active_at` | datetime | 最近活跃时间 |
| `lifetime_review_submitted_count` | int | 累计真实提交评价数(跨账号合并) |
| `current_risk_level` | enum | 当前风险等级 |
### 11.2 `person_identity_links`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `link_id` | PK | 关联记录 ID |
| `person_id` | FK → person_profiles | 所属真实人 |
| `identity_type` | enum | JOYHUB_ID / EMAIL / PHONE / DEVICE / AMAZON_PROFILE / NAME_ADDRESS / PAYMENT / ORDER |
| `identity_value_hash` | string | 匹配索引 |
| `identity_value_encrypted` | string | 仅在必要时保存的加密原值 |
| `link_strength` | enum | 强/弱 |
| `confidence_score` | decimal | 归并置信度 |
| `evidence_summary` | text | 命中依据摘要 |
| `first_seen_at` | datetime | 首次发现时间 |
| `last_seen_at` | datetime | 最近确认时间 |
| `source_type` | enum | AMAZON_ORDER / JOYHUB / MANUAL / TEL / EMAIL / CS_TICKET |
| `is_active` | bool | 是否仍有效 |
### 11.3 归并口径
| 场景 | 数据处理 |
| --- | --- |
| 标准化后姓名+地址完全一致 | 直接归并到同一真实人link_strength=STRONG |
| 地址一致但姓名不同 | 记录弱关联,不直接合并 |
| 多个线索交叉命中 | 形成候选归并,记录证据和置信度 |
| 只有单个弱线索 | 不做直接归并,只写风险信号 |
### 11.4 `contact_context_snapshots`
| 字段组 | 字段 | 来源 |
| --- | --- | --- |
| 快照元数据 | `snapshot_id``person_id``snapshot_at``trigger_event` | 系统 |
| 当前身份 | `joyhub_ids[]``emails[]``phones[]``devices[]``amazon_profile_ids[]` | 身份关联 |
| 归并摘要 | `standardized_name_address``linked_person_count``merge_confidence` | 真实人/身份关联 |
| 历史交易 | `total_orders``last_order_at``total_refunds``total_oa_refunds``target_asin_purchases[]` | 订单/返款 |
| 历史服务 | `total_tickets``last_ticket_at``total_calls``last_call_at``open_promises[]` | 工单/电话 |
| 历史风险 | `blacklist_hits``strong_associations``weak_associations``fraud_cases``double_refund_flags` | 风险层 |
| 当前设备 | `device_count``latest_device_model``app_version``recent_device_change` | APP/设备 |
| 触达历史 | `im_recent[]``edm_recent[]``app_recent[]``tel_recent[]` | 渠道事件 |
---
## 12. 画像、额度与人群层
### 12.1 `person_feature_snapshots`
| 字段组 | 代表字段 |
| --- | --- |
| 快照元数据 | `feature_snapshot_id``person_id``snapshot_at``feature_version` |
| 基础画像 | `country``marketplace``language``gender``age_band``registered_at` |
| 产品关系 | `bound_toy_count``bound_categories[]``target_product_relation` |
| 交易画像 | `total_orders``last_order_at``purchase_frequency``bought_target_asin` |
| 行为画像 | `activity_score``open_rate``click_rate``reply_rate``review_rate``cooperation_rate` |
| 触达画像 | `im_reachable``edm_reachable``app_reachable``tel_reachable``last_touch_at` |
| 风险画像 | `risk_level``blacklist_hit``strong_link_count``weak_link_count``refund_anomaly_flag` |
| 计划画像 | `joined_plan_types[]``last_plan_result``lifetime_review_submitted_count` |
### 12.2 三类画像用途
| 用途 | 说明 | 示例 |
| --- | --- | --- |
| **硬过滤** | 决定能不能进入人群池 | 黑名单、退订、强关联、超额、站点不符 |
| **匹配条件** | 决定适不适合当前计划 | 国家、性别、年龄段、绑定玩具、是否买过目标 ASIN |
| **排序权重** | 决定优先触达谁 | 活跃度、历史配合率、最近互动、打开/点击行为 |
### 12.3 `person_quota_ledgers`
> **HANDOFF用户运营核心控制规则。** "4+4+12"全部按真实人统计,跨所有关联账号合并计算。一个人不管有几个 JOYHUB ID、几个 Amazon 账号——只要归并到同一个真实人,都受同一套额度控制。
>
> 示例:真实人关联 3 个 JOYHUB IDA/B/CA 上提交 5 个 + B 上提交 4 个 + C 上提交 3 个 = 累计 12**全部账号停回评/测评,后续仅免评。**
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `ledger_id` | PK | 台账记录 ID |
| `person_id` | FK → person_profiles | 真实人 |
| `period_key` | string | 自然月,如 `2026-05` |
| `quota_type` | enum | MONTHLY_REVIEW / MONTHLY_EXEMPTION / LIFETIME_REVIEW |
| `quota_limit` | int | 4 / 4 / 12 |
| `used` | int | 已完成 |
| `in_progress` | int | 进行中 |
| `reserved` | int | 已预占 |
| `available` | int | 剩余可用 = limit - used - in_progress - reserved |
| `updated_at` | datetime | 最近更新 |
### 12.4 `quota_reservations`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `reservation_id` | PK | 预占记录 |
| `person_id` | FK | 真实人 |
| `plan_id` | FK | 关联计划 |
| `quota_type` | enum | 测评/免评 |
| `reserved_count` | int | 预占数量 |
| `reserved_at` | datetime | 预占时间 |
| `expires_at` | datetime | 过期释放时间 |
| `status` | enum | 已预占/已使用/已释放/已过期 |
### 12.5 `audience_snapshots`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `snapshot_id` | PK | 人群快照 ID |
| `plan_id` | FK | 计划 |
| `batch_id` | string | 生成人群批次 |
| `person_id` | FK | 真实人 |
| `match_score` | decimal | 匹配得分 |
| `match_reasons` | JSON | 命中画像条件 |
| `quota_status` | enum | 充足/预警/超限 |
| `risk_status` | enum | 正常/弱风险/强风险 |
| `priority_rank` | int | 触达优先级 |
| `feature_snapshot_id` | FK | 当时引用的画像快照 |
| `snapshot_at` | datetime | 快照时间 |
### 12.6 `audience_exclusions`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `exclusion_id` | PK | 排除记录 |
| `plan_id` | FK | 计划 |
| `batch_id` | string | 批次 |
| `person_id` | FK | 真实人 |
| `exclusion_reason` | enum | BLACKLIST / UNSUBSCRIBED / QUOTA_EXCEEDED / FREQ_EXCEEDED / OPEN_TICKET / WRONG_COUNTRY / STRONG_RISK |
| `excluded_at` | datetime | 排除时间 |
### 12.7 为什么一定需要这些中间表
| 对象 | 如果没有会怎样 |
| --- | --- |
| `person_feature_snapshots` | 无法解释当时的画像依据 |
| `audience_snapshots` | 无法复盘某次计划到底选中了谁 |
| `audience_exclusions` | 无法解释为什么用户没被选中 |
| `person_quota_ledgers` | 4/4/12 规则无法跨账号统一计算 |
| `quota_reservations` | 多个计划并发时会重复占用同一人额度 |
---
## 13. 路由与互动复检层
### 13.1 `channel_route_decisions`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `route_decision_id` | PK | 路由决策 ID |
| `plan_id` | FK | 计划 |
| `batch_id` | string | 人群批次 |
| `person_id` | FK | 真实人 |
| `candidate_channels` | JSON | 候选渠道 |
| `selected_channel` | enum | 实际选中渠道 |
| `excluded_channels` | JSON | 被排除渠道及原因 |
| `decision_factors` | JSON | 活跃、绑定、可达性、工单、额度、风险 |
| `decided_at` | datetime | 决策时间 |
### 13.2 `channel_dedup_records`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `dedup_id` | PK | 去重记录 |
| `person_id` | FK | 真实人 |
| `plan_id` | FK | 计划 |
| `selected_channel` | enum | 保留渠道 |
| `suppressed_channels` | JSON | 被抑制渠道 |
| `reason` | text | 去重原因 |
| `created_at` | datetime | 去重时间 |
### 13.3 `interaction_recheck_records`
每次有效互动后,记录本次重新做过哪些检查、结果是什么、为何继续或拦截。这是"每次互动重判"的落地证据。
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `recheck_id` | PK | 复检记录 |
| `interaction_type` | enum | IM / EDM / APP / TEL / CS / REFUND |
| `interaction_id` | string | 触发互动 |
| `person_id` | FK | 真实人 |
| `context_snapshot_id` | FK | 上下文快照 |
| `quota_snapshot_ref` | string | 额度快照引用 |
| `risk_case_id` | FK | 关联风险案件 |
| `identity_result` | enum | 正常/新增关联/冲突 |
| `history_result` | enum | 无变化/有更新 |
| `quota_result` | enum | 充足/预警/超限 |
| `risk_result` | enum | 正常/弱风险/强风险 |
| `final_action` | enum | 继续/降级/转人工/暂停 |
| `checked_at` | datetime | 复检时间 |
---
## 14. 风险层
### 14.1 `risk_signals`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `signal_id` | PK | 风险信号 ID |
| `person_id` | FK | 真实人 |
| `signal_type` | enum | STRONG_HIT / WEAK_HIT / DOUBLE_REFUND / DEVICE_ANOMALY / ADDRESS_ANOMALY / BLACKLIST_HIT |
| `hit_dimensions` | JSON | 命中维度 |
| `source_event_id` | string | 触发事件 |
| `created_at` | datetime | 产生时间 |
| `resolved_at` | datetime | 解除时间 |
| `resolution` | enum | 确认风险/误报/观察中 |
### 14.2 `risk_cases`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `case_id` | PK | 风险案件 |
| `person_id` | FK | 真实人 |
| `source_type` | enum | CS_TICKET / TEL_CALL / PUSH_RESPONSE / REFUND / MANUAL |
| `source_id` | string | 来源对象 |
| `status` | enum | 待复核/复核中/确认诈骗/排除/已同步黑名单 |
| `reviewer_id` | FK | 复核人 |
| `reviewed_at` | datetime | 复核时间 |
| `sync_status` | enum | 未同步/同步中/已同步/同步失败 |
### 14.3 `blacklist_entities`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `blacklist_entity_id` | PK | 黑名单实体 |
| `entity_type` | enum | 邮箱/电话/设备/Profile/收款信息/真实人 |
| `entity_hash` | string | 匹配索引 |
| `risk_level` | enum | 风险等级 |
| `source_case_id` | FK | 来源案件 |
| `synced_at` | datetime | 同步时间 |
| `status` | enum | 生效/失效/待复核 |
### 14.4 `manual_review_tasks`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `task_id` | PK | 人工复核任务 |
| `person_id` | FK | 真实人 |
| `source_type` | enum | 风险/额度/渠道/退款 |
| `source_id` | string | 来源对象 |
| `task_reason` | text | 复核原因 |
| `status` | enum | 待处理/处理中/已完成/已关闭 |
| `owner_id` | FK | 负责人 |
| `created_at` | datetime | 创建时间 |
---
## 15. 渠道事件层
### 15.1 `im_interaction_records`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `im_record_id` | PK | IM 记录 |
| `person_id` | FK | 真实人 |
| `joyhub_id` | FK | JOYHUB 账号 |
| `plan_id` | FK | 关联计划 |
| `action_type` | enum | PUSH_CARD / USER_SUBMIT / USER_REPLY / REMINDER / NOTIFICATION |
| `card_type` | enum | REVIEW_CARD / EVALUATION_CARD / EXEMPTION_CARD / REMINDER_CARD |
| `user_submitted_data` | JSON | 订单号/返款账号/截图链接(涉密加密存储) |
| `order_validation_result` | enum | 通过/非测评单/非公司产品/格式错误/已撤销/已退款 |
| `tag_changes` | JSON | 本次产生的标签变化 |
| `created_at` | datetime | 事件时间 |
### 15.2 `im_flow_tags`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `flow_tag_id` | PK | 流程标签记录 |
| `person_id` | FK | 真实人 |
| `tag_code` | string | 流程标签 |
| `source_im_record_id` | FK | 来源 IM 事件 |
| `effective_from` | datetime | 生效时间 |
| `effective_to` | datetime | 失效时间 |
### 15.3 `edm_message_events`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `edm_event_id` | PK | EDM 事件 |
| `person_id` | FK | 真实人 |
| `email_hash` | string | 邮箱索引 |
| `campaign_id` | FK | 邮件任务 |
| `event_type` | enum | SENT / DELIVERED / OPENED / CLICKED / REPLIED / BOUNCED / UNSUBSCRIBED / COMPLAINED |
| `event_at` | datetime | 事件时间 |
| `click_target` | string | 点击目标 |
### 15.4 `edm_user_behavior_profiles`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `profile_id` | PK | EDM 行为画像 |
| `person_id` | FK | 真实人 |
| `latest_open_at` | datetime | 最近打开 |
| `latest_reply_at` | datetime | 最近回复 |
| `open_count_total` | int | 累计打开次数 |
| `zero_open_last_3` | bool | 最近 3 次 0 打开 |
| `zero_open_last_5` | bool | 最近 5 次 0 打开 |
| `clicked_review_link_without_reply_hours` | int | 点击评论链接但未回复时长 |
| `monthly_receive_count` | int | 当月收信次数 |
| `mail_type_counts` | JSON | 各邮件类型发送次数 |
| `mailbox_domain` | string | 邮箱后缀 |
| `is_unsubscribed` | bool | 是否退订 |
| `has_hard_bounce` | bool | 是否硬退信 |
| `snapshot_at` | datetime | 快照时间 |
### 15.5 `app_touch_events`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `app_event_id` | PK | APP 事件 |
| `person_id` | FK | 真实人 |
| `joyhub_id` | FK | JOYHUB 账号 |
| `push_type` | enum | PUSH / IN_APP / BANNER / POPUP |
| `event_type` | enum | SENT / DISPLAYED / CLICKED / DISMISSED / UNINSTALLED |
| `landing_page` | string | 落地页 |
| `event_at` | datetime | 事件时间 |
### 15.6 `tel_call_records`
| 字段 | 类型 | 说明 | 涉密 |
| --- | --- | --- | --- |
| `tel_record_id` | PK | 电话记录 | - |
| `person_id` | FK | 真实人 | - |
| `ticket_id` | FK | 关联工单 | - |
| `call_direction` | enum | INBOUND/OUTBOUND | - |
| `call_source` | enum | AMAZON_PAGE/MANUAL/PLAN_TASK/FOLLOWUP | - |
| `phone_hash` | string | 电话索引 | 是 |
| `call_at` | datetime | 通话时间 | - |
| `duration_seconds` | int | 通话时长 | - |
| `call_result` | enum | CONNECTED/NO_ANSWER/WRONG_NUMBER/DECLINED | - |
| `has_after_sale_issue` | bool | 是否有售后 | - |
| `issue_type` | enum | 问题类型 | - |
| `issue_description` | text | 问题描述 | - |
| `solution` | text | 处理方案 | - |
| `is_resolved` | bool | 是否解决 | - |
| `is_satisfied` | bool | 是否满意 | - |
| `invited_review` | bool | 是否邀请回评/测评 | - |
| `user_accepted` | bool | 是否接受 | - |
| `agent_id` | FK | 客服 | - |
---
## 16. 客服层
### 16.1 `support_tickets`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `ticket_id` | PK | 工单 |
| `person_id` | FK | 真实人 |
| `ticket_type` | enum | 差评跟进/测评跟进/回评跟进/紧急Listing/电话/售后/诈骗样品/KOL进度 |
| `source` | enum | AMAZON_OP/BRAND_OP/SYSTEM_AUTO/PUSH_ESCALATION/USER_REPLY/TEL_INBOUND |
| `source_id` | string | 来源对象 |
| `ticket_status` | enum | 待分配/已分配/处理中/等待用户/等待内部/已解决/疑似诈骗/已关闭 |
| `assigned_team` | FK | 客服组 |
| `assigned_agent` | FK | 客服 |
| `created_at` | datetime | 创建时间 |
| `first_response_at` | datetime | 首次回复 |
| `resolved_at` | datetime | 解决时间 |
| `closed_at` | datetime | 关闭时间 |
| `context_snapshot_id` | FK | 创建时上下文快照 |
### 16.2 `support_followups`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `followup_id` | PK | 跟进 |
| `ticket_id` | FK | 工单 |
| `person_id` | FK | 真实人 |
| `followup_status` | enum | 已答应配合/待分配/待提醒/等待提交/已提交评价/已提交反馈/超时/需再次联系/已关闭 |
| `promised_at` | datetime | 承诺时间 |
| `reminder_count` | int | 已提醒次数 |
| `last_reminder_at` | datetime | 最近提醒 |
| `deadline_at` | datetime | 截止时间 |
| `submitted_at` | datetime | 实际提交 |
| `submission_type` | enum | 评价/反馈 |
### 16.3 `support_assignment_logs`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `assignment_log_id` | PK | 分配日志 |
| `ticket_id` | FK | 工单 |
| `from_owner_id` | FK | 原负责人 |
| `to_owner_id` | FK | 新负责人 |
| `assign_type` | enum | 自动分配/组长分派/转派/升级 |
| `reason` | text | 原因 |
| `created_at` | datetime | 分配时间 |
### 16.4 `plan_task_links`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `link_id` | PK | 桥接 ID |
| `plan_id` | FK | 计划 |
| `task_type` | enum | IM_TASK/EDM_TASK/APP_TASK/TEL_TASK/CS_TASK/KOC_TASK |
| `task_id` | string | 各渠道任务 ID |
| `created_at` | datetime | 创建时间 |
---
## 17. 评价与退款结果层
### 17.1 `review_submission_records`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `submission_id` | PK | 提交记录 |
| `person_id` | FK | 真实人 |
| `plan_id` | FK | 计划 |
| `channel` | enum | IM/EDM/APP/TEL/CS |
| `source_event_id` | string | 来源事件 |
| `submitted_at` | datetime | 提交时间 |
| `submission_evidence` | JSON | 截图/链接 |
| `order_number_hash` | string | 订单索引 |
| `quota_counted` | bool | 是否已计入 12提交时即为true |
### 17.2 `review_display_checks`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `check_id` | PK | 核验记录 |
| `submission_id` | FK | 提交记录 |
| `asin` | string | ASIN |
| `check_at` | datetime | 核验时间 |
| `is_displayed` | bool | 是否展示 |
| `is_verifiable` | bool | 是否可核验 |
| `display_status` | enum | 展示确认/未展示/待核验 |
| `plan_completed` | bool | 是否计入计划完成展示确认后才为true |
### 17.3 `amazon_refund_records` / `oa_refund_records` / `refund_match_results`
| 对象 | 关键字段 |
| --- | --- |
| `amazon_refund_records` | `refund_id``order_number_hash``asin``refund_amount``refund_at``refund_reason` |
| `oa_refund_records` | `oa_refund_id``person_id``order_number_hash``refund_amount``refund_at` |
| `refund_match_results` | `match_id``order_number_hash``amazon_refund_id``oa_refund_id``match_status``amount_diff``matched_at` |
---
## 18. 免评结果层
### 18.1 `exemption_plans`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `exemption_plan_id` | PK | 免评计划 |
| `source_request_id` | FK | 来源需求 |
| `asin` | string | ASIN |
| `marketplace` | string | 站点 |
| `goal_type` | enum | 内容发布/引流/带货/权重 |
| `target_metrics` | JSON | 目标点击、Code、订单、销量、权重 |
| `status` | enum | 草稿/待审批/执行中/已完成/已关闭 |
### 18.2 `exemption_plan_tasks`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `task_id` | PK | 免评任务 |
| `exemption_plan_id` | FK | 免评计划 |
| `task_type` | enum | KOC/KOL/IM/EDM/APP/内容协同 |
| `owner_id` | FK | 负责人 |
| `status` | enum | 待执行/执行中/已完成/异常 |
| `created_at` | datetime | 创建时间 |
### 18.3 `creator_content_records`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `creator_content_id` | PK | 内容记录 |
| `exemption_task_id` | FK | 免评任务 |
| `creator_id` | string | KOC/KOL |
| `content_url` | string | 内容链接 |
| `published_at` | datetime | 发布时间 |
| `code_usage_count` | int | Code 使用量 |
| `click_count` | int | 点击量 |
| `order_count` | int | 带货订单 |
| `sales_amount` | decimal | 销售额 |
### 18.4 `exemption_result_snapshots`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `snapshot_id` | PK | 免评结果快照 |
| `exemption_plan_id` | FK | 免评计划 |
| `snapshot_at` | datetime | 快照时间 |
| `content_published_count` | int | 内容发布数 |
| `click_count` | int | 点击 |
| `code_usage_count` | int | Code 使用 |
| `order_count` | int | 订单 |
| `sales_amount` | decimal | 销售额 |
| `weight_change_summary` | text | 权重变化摘要 |
---
## 19. 客服管理支撑层
| 对象 | 关键字段 |
| --- | --- |
| `attendance_records` | `record_id``agent_id``date``scheduled_hours``actual_hours``status` |
| `shift_schedules` | `shift_id``team_id``agent_id``date``shift_start``shift_end``max_tickets` |
| `support_goal_records` | `goal_id``agent_id``period_key``goal_type``target_value``current_value` |
| `support_performance_snapshots` | `snapshot_id``agent_id``period_key``tickets_handled``messages_sent``first_response_avg_sec``rso_orders``rdo_orders``reviews_obtained``review_completion_rate``monthly_target``monthly_completed` |
---
## 20. 逻辑关系总图
```mermaid
erDiagram
PERSON_PROFILES ||--o{ PERSON_IDENTITY_LINKS : "归并"
PERSON_PROFILES ||--o{ PERSON_FEATURE_SNAPSHOTS : "画像"
PERSON_PROFILES ||--o{ CONTACT_CONTEXT_SNAPSHOTS : "上下文"
PERSON_PROFILES ||--o{ PERSON_QUOTA_LEDGERS : "额度台账"
PERSON_PROFILES ||--o{ QUOTA_RESERVATIONS : "额度预占"
PERSON_PROFILES ||--o{ RISK_SIGNALS : "风险信号"
PERSON_PROFILES ||--o{ RISK_CASES : "风险案件"
PERSON_PROFILES ||--o{ AUDIENCE_SNAPSHOTS : "人群入选"
PERSON_PROFILES ||--o{ AUDIENCE_EXCLUSIONS : "人群排除"
PERSON_PROFILES ||--o{ CHANNEL_ROUTE_DECISIONS : "路由"
PERSON_PROFILES ||--o{ CHANNEL_DEDUP_RECORDS : "去重"
PERSON_PROFILES ||--o{ INTERACTION_RECHECK_RECORDS : "互动复检"
PERSON_PROFILES ||--o{ IM_INTERACTION_RECORDS : "IM"
PERSON_PROFILES ||--o{ IM_FLOW_TAGS : "IM标签"
PERSON_PROFILES ||--o{ EDM_MESSAGE_EVENTS : "EDM"
PERSON_PROFILES ||--o{ EDM_USER_BEHAVIOR_PROFILES : "EDM画像"
PERSON_PROFILES ||--o{ APP_TOUCH_EVENTS : "APP"
PERSON_PROFILES ||--o{ TEL_CALL_RECORDS : "TEL"
PERSON_PROFILES ||--o{ SUPPORT_TICKETS : "工单"
PERSON_PROFILES ||--o{ SUPPORT_FOLLOWUPS : "跟进"
PERSON_PROFILES ||--o{ REVIEW_SUBMISSION_RECORDS : "评价提交"
PERSON_PROFILES ||--o{ MANUAL_REVIEW_TASKS : "人工复核"
REVIEW_SUBMISSION_RECORDS ||--o{ REVIEW_DISPLAY_CHECKS : "展示核验"
SUPPORT_TICKETS ||--o{ SUPPORT_ASSIGNMENT_LOGS : "分配"
RISK_CASES ||--o{ BLACKLIST_ENTITIES : "同步"
AMAZON_REFUND_RECORDS ||--o{ REFUND_MATCH_RESULTS : "退款比对"
OA_REFUND_RECORDS ||--o{ REFUND_MATCH_RESULTS : "退款比对"
EXEMPTION_PLANS ||--o{ EXEMPTION_PLAN_TASKS : "任务"
EXEMPTION_PLAN_TASKS ||--o{ CREATOR_CONTENT_RECORDS : "内容"
EXEMPTION_PLANS ||--o{ EXEMPTION_RESULT_SNAPSHOTS : "结果"
REVIEW_PLANS ||--o{ PLAN_TASK_LINKS : "计划任务"
SHIFT_SCHEDULES ||--o{ SUPPORT_TICKETS : "排班分配"
ATTENDANCE_RECORDS }o--|| SHIFT_SCHEDULES : "出勤关联"
```
---
# 第五部分:数据流转
## 21. 关键流转时序
| 阶段 | 读(查) | 写 | 说明 |
| --- | --- | --- | --- |
| 真实人识别 | person_identity_links已有线索 | person_profiles + person_identity_links新线索 | 每次互动都先跑 |
| 画像生成 | person_profiles + 七组画像数据 + 各渠道事件 | person_feature_snapshots | 定期或触发式刷新 |
| 人群生成 | person_feature_snapshots + person_quota_ledgers + risk_signals | audience_snapshots + audience_exclusions + quota_reservations | 快照当下状态 |
| 路由决策 | audience_snapshots + 用户状态 + 渠道可达性 | channel_route_decisions + channel_dedup_records | 选定渠道+去重 |
| 渠道发送 | channel_route_decisions + quota_reservations + risk_signals最新 | 各渠道事件表 | 发送前终校 |
| 用户回应 | person_identity_links + person_quota_ledgers + risk_signals全部重读 | interaction_recheck_records + 渠道事件表更新 + im_flow_tags | 每次互动复检留痕 |
| 评价提交 | person_quota_ledgers累计额度 | review_submission_records + person_quota_ledgers+1 | 提交即计12 |
| Amazon 展示确认 | review_submission_records | review_display_checks + 计划完成度更新 | 展示才计完成 |
| 退款/返款 | amazon_refund_records + oa_refund_records | refund_match_results + risk_signals如命中 | 双重退款检测 |
## 22. 每次有效互动的标准写入顺序
```mermaid
flowchart LR
A["互动发生"] --> B["解析真实人<br/>读 person_identity_links"]
B --> C["生成/更新上下文卡<br/>写 contact_context_snapshots"]
C --> D["读取最新额度<br/>读 person_quota_ledgers"]
D --> E["执行风险判断<br/>读 risk_signals + blacklist"]
E --> F["写 interaction_recheck_records"]
F --> G{"结果"}
G -->|正常| H["继续业务"]
G -->|预警| I["继续 + 高亮提醒"]
G -->|拦截| J["暂停 + 转人工/风险链路"]
```
适用场景主动推送后回复、用户再次联系、补充订单号、客服回访、TEL 来电、退款/返款/再次触达前。
---
# 第六部分:设计决策与边界
## 23. 对象分类
| 类型 | 对象 | 原因 |
| --- | --- | --- |
| **正式事务表** | `person_profiles``person_identity_links``support_tickets``support_followups``risk_cases``review_submission_records``quota_reservations` | 需要增删改和业务状态流转 |
| **不可变事件表** | `im_interaction_records``edm_message_events``app_touch_events``tel_call_records``amazon_refund_records``oa_refund_records``support_assignment_logs``im_flow_tags` | 事实一旦发生不应被覆盖 |
| **快照表** | `person_feature_snapshots``contact_context_snapshots``audience_snapshots``support_performance_snapshots``exemption_result_snapshots` | 需要保留某一时点状态以便复盘 |
| **决策表** | `channel_route_decisions``channel_dedup_records``interaction_recheck_records``refund_match_results` | 保存系统当时为什么这样判断 |
| **聚合画像** | `edm_user_behavior_profiles` | 由事件聚合推导,定期刷新 |
| **可先做视图** | 当前剩余额度、当前风险摘要、当前上下文卡、当前人群统计看板、当前绩效看板 | 可由底层对象实时聚合 |
### 判断法
| 问题 | 如果答案是"是" |
| --- | --- |
| 后续需要追责"当时为什么这么做"吗 | 建正式表或决策表 |
| 数据后来会变,但历史判断不能跟着变吗 | 建快照 |
| 只是为了当前页面展示吗 | 优先做视图 |
| 一旦发生就不该被覆盖吗 | 建事件表 |
## 24. 当前还不能只靠"老表扩列"解决的事情
| 问题 | 为什么不能只扩列 |
| --- | --- |
| 一个真实人多个账号 | `users` 是账号级,不是人级 |
| 每次互动重判 | 不是用户静态属性,而是一次次决策事实 |
| 人群为什么入选/排除 | 不是计划表字段,而是某一批次结果 |
| 多计划并发占额度 | 需要独立预占 |
| 用户提交与展示拆分 | 不是一个布尔值能表达 |
| 退款比对 | 需要两个来源事实加一个比对结果 |
| 客服上下文 | 不是工单表本身,而是跨源聚合视图+快照 |
## 25. 当前可以先不做成物理表的内容
| 内容 | 当前建议 |
| --- | --- |
| 当前剩余额度 | 先由 `person_quota_ledgers + quota_reservations` 聚合成视图 |
| 当前风险摘要 | 先由 `risk_signals + risk_cases + blacklist_entities` 聚合成视图 |
| 当前客服上下文卡 | 前台读当前视图,关键接入动作时写 `contact_context_snapshots` |
| 当前人群统计看板 | 先基于 `audience_snapshots / exclusions` 聚合 |
| 当前绩效看板 | 先基于工单、通话、跟进事件聚合,后续再沉淀快照 |
## 26. 外部数据引用原则
| 外部数据 | 所属系统 | USER 当前做法 |
| --- | --- | --- |
| Amazon 订单全量明细 | Amazon API/报表 | 导入关键字段,不把 USER 做成全量订单数仓 |
| JOYHUB 用户行为明细 | APP/用户系统 | 取摘要或增量同步,用于画像与上下文 |
| 黑名单全量数据 | 黑名单系统 | 引用并缓存关键维度,不重复建设 |
| JOYCOLLAB 全量内容与带货明细 | JOYCOLLAB | 同步 USER 闭环所需结果摘要 |
| 财务/人事原始表 | 财务/人事系统 | 导入必要摘要,不替代源系统 |
## 27. 涉密字段处理
| 涉密字段 | 建议存储 | 建议查询 |
| --- | --- | --- |
| 订单号 | 哈希索引 + 加密原值 | 常规用哈希匹配 |
| 邮箱 | 哈希索引 + 脱敏展示 | 普通页面不暴露明文 |
| 电话 | 哈希索引 + 加密原值 | 仅授权角色可揭示 |
| 姓名/地址 | 标准化值 + 哈希/指纹 | 归并与风险用指纹 |
| 设备号 | 哈希索引 | 归并/风险用哈希 |
| IP | 脱敏存储 | 仅用于弱关联 |
| 收款信息 | 加密存储 | 财务/风险授权查看 |
| 返款金额/提成 | 权限控制 | 财务角色优先 |
## 28. 快照策略
| 快照对象 | 生成时机 | 保留策略 |
| --- | --- | --- |
| `person_feature_snapshots` | 定期刷新 + 人群生成前触发 | 保留最近 N 版 + 每次人群生成引用的版本 |
| `contact_context_snapshots` | 用户接入/工单创建/拨打前/风险升级 | 每次生成新快照,保留全量历史 |
| `audience_snapshots` | 人群生成时 | 每次计划保留 |
| `edm_user_behavior_profiles` | EDM 画像定时刷新 | 按刷新批次保留 |
| `support_performance_snapshots` | 每日/每周/每月 | 按周期聚合保留 |
| `exemption_result_snapshots` | 免评执行阶段性同步 | 按结果周期保留 |
---
# 第七部分:谁写谁读
## 29. 读写矩阵
| 对象 | 主要写入方 | 主要读取方 | 依赖它的动作 |
| --- | --- | --- | --- |
| `person_profiles` | 身份归并服务 | 用户运营、客服、风险 | 所有真实人级判断 |
| `person_identity_links` | 身份归并服务 | 风险、客服、订单核验 | 真实人识别 |
| `person_feature_snapshots` | 画像任务 | 人群生成、客服 | 画像筛选 |
| `contact_context_snapshots` | 上下文聚合服务 | 客服、用户运营 | 接入处理 |
| `person_quota_ledgers` | 额度服务 | 人群生成、渠道、客服 | 4/4/12 判断 |
| `quota_reservations` | 人群/计划服务 | 渠道、额度服务 | 发送前拦截 |
| `audience_snapshots` | 人群生成服务 | 计划、复盘 | 解释入选 |
| `channel_route_decisions` | 路由服务 | 推送、复盘 | 选渠道 |
| `interaction_recheck_records` | 互动复检服务 | 客服、风险、审计 | 决定继续/拦截 |
| `review_submission_records` | 客服/IM/TEL | 额度、计划、客服 | 计入12 |
| `review_display_checks` | 运营/系统 | 计划、ASIN看板 | 计入完成 |
| `refund_match_results` | 退款比对服务 | 风险、客服、财务 | 拦截双重退款 |
---
## 30. 还需要确认但不阻塞第三步的事项
| 事项 | 影响 |
| --- | --- |
| Amazon 订单同步频率最终是否为 10 分钟 | 影响订单/退款数据新鲜度 |
| 黑名单系统最终通过 API、表格还是消息同步 | 影响 `blacklist_entities` 同步方式 |
| Amazon Profile ID 是否稳定获取 | 影响强关联覆盖率 |
| APP 设备型号能否拿到具体型号还是只到类型 | 影响客服展示颗粒度 |
| 年龄字段来自注册资料还是推断 | 影响画像可信度 |
| KOC/KOL 结果同步周期 | 影响免评结果快照频率 |
---
## 31. 第四步入口
1. **把数据对象转成逻辑 ER 图**:以 §20 的 Mermaid ER 图为基础明确主键、外键、1对多/多对多关系,区分复用旧表和新增表。
2. **按关键链路补接口读写**
1. 真实人识别与上下文链路
2. 人群/额度/路由链路
3. 互动复检/风险链路
4. 评价提交/展示与退款比对链路
5. 免评结果链路
3. **回到页面,把每一个点击绑定到明确的数据读写**
---
## 32. 本版结论
v3 以 Codex v1.1 完整字段字典为主骨架,补入 v2 的流转时序表、写入顺序图和快照策略,形成最终统一主稿:
1.**真实人** 统一账号、订单、设备和风险
2.**画像快照** 解释人群生成
3.**额度台账+预占** 保护 4/4/12 规则(跨账号合并)
4.**路由决策+去重记录** 控制多渠道协同
5.**互动复检记录** 落实"每次有效互动都重判"
6.**退款比对结果** 识别双重退款
7.**评价提交记录+展示核验** 拆开用户事实和平台结果
8.**免评计划→任务→内容→结果快照** 让 KOC/KOL 闭环完整进入 USER 系统