USER 评价业务闭环 — 第三步:数据流与中间对象设计 v3
文件信息
- 文件名称:
20260517_USER评价业务闭环_第三步_数据流与中间对象设计_v3.md
- 项目路径:
C:\XCODE\USER
- 当前版本:
v3
- 最近更新:
2026-05-17
- 上游文档:
- 前置版本:
数据流与中间对象需求_v1(Codex,六层架构骨架)
数据流与中间对象设计_v1.1(Codex,字段字典最全版)
第三步_数据流与中间表设计_v1(字段级展开 + 流转时序)
第三步_数据流与中间表设计_v2(吸收 Codex 优点的合并版)
- 合并策略:以 Codex v1.1 为主骨架(保留其完整字段字典和免评对象),补入 v2 的流转时序表、写入顺序图和快照策略。
- 文件目的:作为第三步最终主稿,后续数据库物理设计、接口设计和页面点击读写设计均以此为准。
1. 第三步的目标
第三步不再回答"流程怎么走",而是回答:
- 现有系统里已经有哪些数据可以复用。
- 为什么仅靠现有
users / amazon_orders / review_plans / push_tasks / support_tickets / fraud_events 不够。
- 必须新增哪些中间对象。
- 哪些是正式事务表,哪些只是快照,哪些可以先做成视图。
- 从需求形成到结果回流,数据怎样一层一层往下走。
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. 全局数据流
第二部分:数据对象分层总表
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 ID(A/B/C),A 上提交 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. 逻辑关系总图
第五部分:数据流转
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. 每次有效互动的标准写入顺序
适用场景:主动推送后回复、用户再次联系、补充订单号、客服回访、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. 第四步入口
- 把数据对象转成逻辑 ER 图:以 §20 的 Mermaid ER 图为基础,明确主键、外键、1对多/多对多关系,区分复用旧表和新增表。
- 按关键链路补接口读写:
- 真实人识别与上下文链路
- 人群/额度/路由链路
- 互动复检/风险链路
- 评价提交/展示与退款比对链路
- 免评结果链路
- 回到页面,把每一个点击绑定到明确的数据读写。
32. 本版结论
v3 以 Codex v1.1 完整字段字典为主骨架,补入 v2 的流转时序表、写入顺序图和快照策略,形成最终统一主稿:
- 用 真实人 统一账号、订单、设备和风险
- 用 画像快照 解释人群生成
- 用 额度台账+预占 保护 4/4/12 规则(跨账号合并)
- 用 路由决策+去重记录 控制多渠道协同
- 用 互动复检记录 落实"每次有效互动都重判"
- 用 退款比对结果 识别双重退款
- 用 评价提交记录+展示核验 拆开用户事实和平台结果
- 用 免评计划→任务→内容→结果快照 让 KOC/KOL 闭环完整进入 USER 系统