Files
Fulfilled-Knowledge/wishfulfilled-wiki/05_需求文档/01-子系统-用户身份与上下文.md
2026-05-27 15:40:32 +08:00

13 KiB
Raw Permalink Blame History

子系统 01 — 用户身份与上下文 (identity) v1.0

子系统概述

维度 说明
代号 identity
核心职责 真实人识别与归并、身份线索关联、用户上下文卡生成
数据所有权 person_profiles, person_identity_links, contact_context_snapshots, device_records
启动依赖 无硬依赖(需 JOYHUB 数据同步到位)
外部系统依赖 JOYHUB用户数据、APP设备数据

1. 模块划分

整体模块图

┌─────────────────────────────────────────────────────────────┐
│                    identity 子系统                           │
│                                                             │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐       │
│  │ M1: 身份线索  │  │ M2: 真实人   │  │ M3: 用户上下 │       │
│  │    采集与同步 │→│    归并引擎  │→│    文卡服务  │       │
│  └──────┬───────┘  └──────┬───────┘  └──────┬───────┘       │
│         │                 │                 │                │
│         ▼                 ▼                 ▼                │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐       │
│  │ M4: 设备变化 │  │ M5: 身份管理 │  │ M6: 对外 API │       │
│  │    识别      │  │    Admin     │  │    Gateway   │       │
│  └──────────────┘  └──────────────┘  └──────────────┘       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

模块明细

# 模块 代号 职责
M1 身份线索采集与同步 identity-ingest 从 JOYHUB、APP 等外部系统拉取/接收身份线索JOYHUB ID、邮箱、电话、设备号、订单关联
M2 真实人归并引擎 person-merge 按标准姓名+地址、多线索交叉权重归并,生成/更新真实人 ID
M3 用户上下文卡服务 context-card 聚合身份+交易+服务+风险+设备+触达全量数据生成上下文快照
M4 设备变化识别 device-tracker 识别设备号变化、换机、多设备场景,记录设备变化日志
M5 身份管理 Admin identity-admin 人工归并/拆分操作、归并冲突处理、身份数据校正
M6 对外 API Gateway identity-api 向其他子系统提供真实人查询、上下文卡查询、归并请求等 API

2. 各模块内外说明

2.1 M1: 身份线索采集与同步

维度 说明
对内 管理外部系统的数据同步任务(定时拉取 JOYHUB 用户数据、设备数据);解析和标准化各来源的身份线索(邮箱规范化、电话格式化、地址标准化);写入 person_identity_links
对外接口 POST /internal/identity/ingest — 接收上游推送的身份线索;同步调度器可配置频率
数据写入 person_identity_links(线索类型 + 线索值 + 来源系统 + 采集时间)

2.2 M2: 真实人归并引擎

维度 说明
对内 执行归并规则:标准姓名+地址一致→同一真实人;多线索交叉(设备+电话+邮箱+收款信息)按权重打分;地址一致姓名不同→标记家庭关联但不合并;生成真实人 ID、归并证据、置信度
对外接口 POST /api/identity/merge — 触发归并;返回归并结果(真实人 ID + 置信度)
数据写入 person_profiles(真实人创建/更新)、person_identity_links(关联关系更新)
关键规则 邮箱不同+JOYHUB ID 不同不能单独否定「同一真实人」;订单号命中历史异常需拉出风险记录

2.3 M3: 用户上下文卡服务

维度 说明
对内 聚合 6 组字段(当前身份、真实人归并、历史交易、历史服务、历史风险、当前设备、触达历史);生成上下文快照(含快照时间);首次生成 vs 增量更新
对外接口 GET /api/identity/context/{person_id} — 获取用户上下文卡;返回聚合后的全量上下文
数据写入 contact_context_snapshots
依赖其他子系统 交易数据来自 planning服务数据来自 support风险数据来自 risk触达数据来自 outreach通过 API 聚合或事件)

2.4 M4: 设备变化识别

维度 说明
对内 监控同一 JOYHUB ID 下设备号变化;记录换机/多设备事件关联设备型号、系统版本、APP 版本变化
对外接口 内部事件 device.changed 供其他模块消费
数据写入 device_records(设备变化时间、变化类型)
待确认 多久内的设备变化算「近期换机」?多设备同时活跃如何标记?

2.5 M5: 身份管理 Admin

维度 说明
对内 提供人工归并操作界面(两个真实人合并为一个);归并拆分(合并错了如何回退);冲突处理(系统自动归并 vs 人工判定不一致时)
对外接口 管理 API不对其他子系统暴露
数据写入 所有身份相关表(权限控制)

2.6 M6: 对外 API Gateway

维度 说明
对内 统一对外 API 认证、限流、日志
对外接口 GET /api/identity/person?线索类型=&线索值= — 按线索查真实人;GET /api/identity/context/{person_id} — 用户上下文卡;POST /api/identity/batch-check — 批量身份查询

3. 对外 API 契约(草案)

接口 方法 输入 输出 消费者
按线索查真实人 GET /api/identity/person ?type=email&value=xxx@yy.com?type=joyhub_id&value=123 {person_id, confidence, matched_clues[]} 所有子系统
获取用户上下文卡 GET /api/identity/context/{person_id} person_id {identity, transactions, services, risks, devices, outreach_history} support, risk, outreach
批量身份查询 POST /api/identity/batch-check [{type, value}, ...] [{person_id, confidence}, ...] planning, outreach
触发归并 POST /api/identity/merge {clues: [{type, value}, ...]} {person_id, is_new, confidence} outreach每次互动时调用

4. 数据对象(本子系统写入)

对象 核心字段 说明
person_profiles person_id, status, created_at, updated_at, merge_evidence 真实人主表
person_identity_links person_id, clue_type (JOYHUB_ID/EMAIL/PHONE/DEVICE/ORDER_NAME_ADDRESS), clue_value, source, confidence, linked_at 身份线索关联表
contact_context_snapshots person_id, snapshot_time, identity_snapshot, transaction_snapshot, service_snapshot, risk_snapshot, device_snapshot, outreach_snapshot 上下文快照
device_records person_id, joyhub_id, device_id, device_model, os_version, app_version, change_type (NEW/SWITCH/MULTI), recorded_at 设备变化记录

5. 业务澄清问题清单 — identity

5.1 真实人归并规则4 项)

# 问题 优先级
I-01 标准姓名+地址的「标准化」规则是什么?(大小写、空格、缩写如 St./Street、middle name 处理?)标准化在哪个模块做? P0
I-02 归并是多线索交叉权重打分——各维度的权重如何设定?(邮箱=0.3、设备=0.4、电话=0.2、收款=0.5?由谁定义?可否动态调整?) P0
I-03 归并是完全自动执行还是部分需要人工审核?触发人工审核的条件是什么?(置信度 < 多少?涉及风险用户?) P0
I-04 自动归并错误后如何拆分?拆分时如何处理已关联的历史评价和额度数据?(评价归属、额度扣减是否回滚?) P0

5.2 非 APP 用户处理3 项)

# 问题 优先级
I-05 非 APP 用户的邮箱从哪里来Amazon 订单中的买家邮箱EDM 列表?客服录入?)邮箱质量/有效性如何保证? P0
I-06 只有邮箱没有设备号的非 APP 用户,归并置信度是否单独设置较低阈值?这种情况下如何确定是同一真实人? P1
I-07 EDM 引导用户注册 APP 后——如何识别「这个新 APP 用户就是之前那个 EDM 邮箱用户」?(注册时要求填同一邮箱?设备号关联?) P1

5.3 设备与多账号3 项)

# 问题 优先级
I-08 「同设备多账号」的风险判断——同一个设备号关联了多个 JOYHUB ID哪些情况正常家庭共用哪些算风险信号 P1
I-09 设备号变化的识别窗口——同一个 JOYHUB ID 下,设备号变化间隔多久内算「近期换机」? P1
I-10 APP 卸载重装导致设备号变化怎么处理?(卸载重装可能生成新设备号) P2

5.4 用户上下文卡3 项)

# 问题 优先级
I-11 上下文卡的「快照」保留几份?每次互动生成新快照(保留历史)还是覆盖(只保留最新一份)?保留历史的话保留多久? P1
I-12 上下文卡中的历史交易、历史服务等数据是从其他子系统实时拉取还是从本地冗余存储读取?(涉及跨子系统数据一致性) P1
I-13 上下文卡是否需要在某个条件触发时预生成(如用户接入前),还是每次实时生成? P2

5.5 数据同步2 项)

# 问题 优先级
I-14 JOYHUB 数据同步频率?(实时/每小时/每天同步方式API 拉取 / 消息队列 / 数据库直连?) P0
I-15 JOYHUB 和 APP 端的数据字段完整清单是否已有注册邮箱、设备号、设备型号、APP 版本、系统版本、绑定玩具、活跃行为——文档已列出但需确认是否有遗漏) P0

5.6 身份数据生命周期4 项)

# 问题 优先级
I-16 用户数据保留策略——身份线索和历史快照保留多久6个月1年永久超出保留期后是归档还是删除 P1
I-17 用户注销/数据删除请求如何处理?(用户要求删除所有个人数据——如何标记而不是物理删除以保持额度/风险记录的完整性?) P1
I-18 「被遗忘权」实操——删除真实人记录后,与之关联的额度、风险、评价如何处理?(匿名化保留?还是级联删除?) P1
I-19 用户主动修改关键身份信息(换邮箱、换电话)——系统如何感知和响应?(自动触发重新归并?还是保持原关联?) P1

5.7 多站点与跨平台身份3 项)

# 问题 优先级
I-20 同一个自然人在 Amazon.com 和 Amazon.co.uk 用不同邮箱和地址——是否跨站点归并为同一个「真实人」? P1
I-21 未来扩展到非 Amazon 平台eBay/Walmart/独立站)——真实人体系是否需要跨平台?架构预留? P2
I-22 不同国家站点的地址标准化规则不同US→州/邮编、UK→郡/邮编、DE→邮编/城市)——标准化引擎如何处理? P2

5.8 归并冲突与人工干预3 项)

# 问题 优先级
I-23 系统自动归并和人工判定冲突时,以谁为准?(人工优先?系统告警→人工确认?)冲突记录保留多久? P1
I-24 人工拆分归并的操作是否需要审批?(谁来审批?审批流程?)拆分的审计记录保留什么字段? P1
I-25 是否存在「不确定」状态的真实人?(置信度太低无法归并,标记为「待定」——如何流转到人工审核?) P1

5.9 实施层面3 项)

# 问题 优先级
I-26 身份归并是实时还是异步?(用户接入时实时归并→阻塞用户体验 vs 异步归并→可能用旧数据?) P1
I-27 上下文卡聚合的性能要求——单次查询需要在多少 ms 内返回?(涉及跨子系统调用时的超时和降级) P2
I-28 如果 JOYHUB 数据同步中断identity 子系统如何降级?(用缓存数据?标记为「数据可能过期」?) P1