docs: update WishFulfilled knowledge base

This commit is contained in:
qiaoxinjiu
2026-05-29 14:33:56 +08:00
parent e31a75d2bb
commit 3f7f88cf91
29 changed files with 6679 additions and 187 deletions

View File

@@ -0,0 +1,430 @@
# identity 子系统 — doris数据库相关表与关联关系供参考
---
## 1. 数据库全景
| 数据库 | 说明 | 与 identity 的关系 |
|--------|------|-------------------|
| `ods_app_base_data` | APP基础数据用户、设备、好友、产品 | **核心** — 用户身份主数据 |
| `ods_app_app_community` | 社区数据(帖子、评论、关注) | 行为数据,辅助归并 |
| `ods_app_jh_data` | JOYHUB事件数据 | 行为数据,辅助归并 |
| `ods_oa_oaaftersales` | OA售后系统客户、订单、测评 | **核心** — 非APP用户身份线索 |
| `app_tag_data` | 标签数据 | **关键** — 已有 OneID 归并表 |
---
## 2. 核心发现:已存在的 OneID 归并表
### `app_tag_data.user_oneid` — 用户唯一标识归并表6 字段,已有数据)
> **这是 identity 子系统 M2归并引擎的核心参考**,已实现 uuid → one_id 的归并逻辑
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `uuid` | VARCHAR(64) | UNI, NOT NULL | 原始客户唯一标识符 |
| `one_id` | VARCHAR(64) | NOT NULL | 用户唯一标识归并后的ID |
| `bridge_uuid` | STRING | | 当前 uuid 对应的非当前桥接 uuid |
| `association_fields` | STRING | | 关联字段 |
| `detail` | STRING | | uuid 指向 one_id 的证据说明JSON |
| `update_time` | DATETIME(3) | | 同步更新时间 |
**关键设计点**
- `uuid``one_id` 是多对一关系(多个 uuid 可归并到同一个 one_id
- `bridge_uuid` 记录桥接关联,用于跨系统身份串联
- `detail` 字段存储归并证据JSON与设计文档中 `person_profiles.merge_evidence` 概念一致
- `association_fields` 记录关联字段,对应设计文档中的线索类型
---
## 3. 核心表状态
设计文档定义的 4 张核心表 **尚未在数据库中创建**
| 表名 | 设计文档定义 | 数据库状态 | 与现有表的关系 |
|------|-------------|-----------|--------------|
| `person_profiles` | 真实人主表 | **不存在** | 可参考 `app_tag_data.user_oneid`one_id |
| `person_identity_links` | 身份线索关联表 | **不存在** | 可参考 `ods_oa_oaaftersales.customer_platform_info`type映射线索类型 |
| `contact_context_snapshots` | 上下文快照 | **不存在** | 需聚合多表新建 |
| `device_records` | 设备变化记录 | **不存在** | 可参考 `user_device_token_log`已有252万条记录 |
---
## 4. 已存在的数据源表
### 4.1 用户与身份核心表
#### `ods_app_base_data.users` — 用户主表36 字段)
> identity 子系统的核心用户数据源,提供 JOYHUB ID、邮箱、设备号等身份线索
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | BIGINT | UNI | 用户IDJOYHUB ID |
| `userName` | STRING | | 用户名 |
| `email` | STRING | | 邮箱 |
| `deviceToken` | VARCHAR(300) | | 设备推送令牌 |
| `IMEI` | STRING | | 设备IMEI |
| `sysType` | VARCHAR(765) | | 系统类型(安卓/IOS/Windows Phone |
| `deviceId` | STRING | | 设备ID |
| `appVersion` | VARCHAR(90) | | APP版本 |
| `contact_information` | VARCHAR(765) | | 联系方式(电话号码) |
| `mobile` | STRING | | 手机号 |
| `area_code` | BIGINT | | 区域代码美国1中国86 |
| `status` | TINYINT | | 1活跃/2封禁/3注销 |
| `sysTime` | DATETIME | | 系统时间(注册时间) |
| `created_at` | DATETIME | | 创建时间 |
#### `ods_app_base_data.user_login_last` — 最近登录信息21 字段)
> 提供设备型号、系统版本、APP版本、国家等信息是设备变化识别M4的重要数据源
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `UserId` | BIGINT | UNI | 用户ID → 关联 `users.id` |
| `deviceId` | STRING | | 设备ID |
| `deviceModel` | VARCHAR(150) | | 手机型号 |
| `device` | VARCHAR(150) | | 手机系统 |
| `sysType` | VARCHAR(150) | | 系统设备信息与版本 |
| `appVersion` | VARCHAR(45) | | APP版本号 |
| `appChannel` | INT | | 渠道 |
| `countryName` | VARCHAR(600) | | 国家名称 |
| `countryCode` | VARCHAR(30) | | 国家缩写 |
| `Time` | DATETIME | | 登录时间 |
| `Ip` | STRING | | IP地址 |
#### `ods_app_base_data.user_device_token_log` — 设备令牌变更日志7 字段252万行
> 记录设备令牌的添加和更新,可用于追踪设备变化
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | INT | UNI | 主键 |
| `user_id` | INT | | 用户ID → 关联 `users.id` |
| `type` | TINYINT | | 0添加/1更新 |
| `device_id` | STRING | | 设备ID |
| `new_device_token` | VARCHAR(300) | | 新设备令牌 |
| `created_at` | DATETIME | | 创建时间 |
| `client_time` | DATETIME | | 客户端时间 |
#### `ods_app_base_data.user_contact_information_history` — 联系方式变更历史11 字段20万行
> 记录用户手机号等联系方式的变更历史,可用于身份线索追踪
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | DECIMAL(20,0) | UNI | 主键 |
| `user_id` | BIGINT | | 用户ID → 关联 `users.id` |
| `user_type` | VARCHAR(150) | | 用户角色 |
| `area_code` | BIGINT | | 区域代码 |
| `mobile` | STRING | | 手机号 |
| `area_id` | INT | | 区域ID |
| `marketing_phone` | TINYINT | | 营销电话开关 |
| `marketing_sms` | TINYINT | | 个性化广告开关 |
| `status` | SMALLINT | | 1生效中/2已过期 |
| `verify_status` | SMALLINT | | 短信验证状态1通过/2未通过 |
| `created_at` | BIGINT | | 创建时间 |
#### `ods_app_base_data.banned_device_id` — 设备封禁表3 字段6831行
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | INT | UNI | 主键 |
| `device_id` | VARCHAR(765) | | 封禁设备ID |
| `created_at` | INT | | 创建时间 |
#### `ods_app_base_data.blacklist_users_aggregate` — 用户黑名单汇总8 字段)
> 按 uid、设备、IP 维度的黑名单,用于风险判断
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | INT | UNI | 主键 |
| `target_id` | INT | | 1=uid, 2=设备, 3=IP |
| `target_value` | VARCHAR(1500) | | 字段值 |
| `category_id` | INT | | 黑名单类别ID |
| `describe` | VARCHAR(1500) | | 加入原因 |
### 4.2 OA 售后系统 — 客户身份数据
#### `ods_oa_oaaftersales.customer` — 客户主表22 字段23万行
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | DECIMAL(20,0) | UNI | 客户ID |
| `name` | STRING | | 客户名 |
| `country` | VARCHAR(60) | | 国家 |
| `is_black` | TINYINT | | 是否黑名单 |
| `high_risk` | TINYINT | | 是否高风险 |
| `erp_contact` | STRING | | ERP联系方式 |
| `erp_pay_account` | VARCHAR(1500) | | ERP付款账号 |
#### `ods_oa_oaaftersales.customer_platform_info` — 客户平台信息8 字段26万行
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | BIGINT | UNI | 主键 |
| `type` | TINYINT | | **1电话/2邮箱/3joyhub_id/4邮箱编码/5twitter/6facebook** |
| `customer_id` | INT | | 客户ID → 关联 `customer.id` |
| `account` | STRING | | 账号值 |
| `is_delete` | TINYINT | | 是否删除 |
#### `ods_oa_oaaftersales.customer_address` — 客户地址18 字段5631行
> 提供姓名+地址组合,可用于 ORDER_NAME_ADDRESS 线索归并
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | BIGINT | UNI | 主键 |
| `customer_id` | INT | | 客户ID → 关联 `customer.id` |
| `recipient_name` | STRING | | 收件人姓名 |
| `phone` | STRING | | 电话 |
| `zip_code` | STRING | | 邮编 |
| `country` | VARCHAR(300) | | 国家 |
| `city` | STRING | | 城市 |
| `state` | STRING | | 州/省 |
| `detail` | VARCHAR(1500) | | 详细地址 |
#### `ods_oa_oaaftersales.customer_payment_account` — 客户付款账号12 字段10万行
> 提供收款信息银行卡、PayPal等可作为身份归并线索
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | BIGINT | UNI | 主键 |
| `ct_id` | INT | | 客户ID → 关联 `customer.id` |
| `pay_name` | VARCHAR(150) | | 支付方式 |
| `account_number` | STRING | | 账号 |
| `account_name` | STRING | | 账户名 |
| `card_no` | VARCHAR(300) | | 卡号 |
#### `ods_oa_oaaftersales.customer_bind` — 客户绑定关系6 字段4980行
> 客户间的绑定关系,已有归并概念
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | BIGINT | UNI | 主键 |
| `customer_ids` | STRING | | 绑定的客户ID集合 |
| `unbind_time` | DATETIME | | 解绑时间 |
| `is_deleted` | TINYINT | | 是否删除 |
#### `ods_oa_oaaftersales.customer_bind_log` — 客户绑定日志6 字段1.2万行)
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | BIGINT | UNI | 主键 |
| `user_id` | INT | | 操作人ID |
| `bind_customer_ids` | STRING | | 绑定的客户ID |
| `type` | VARCHAR(765) | | 操作类型 |
#### `ods_oa_oaaftersales.evaluation_order` — 测评订单55+ 字段45万行
> 包含丰富的身份线索邮箱、电话、JOYHUB ID、社交媒体账号
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | BIGINT | UNI | 订单ID |
| `ct_id` | INT | | 客户ID → 关联 `customer.id` |
| `amazon_order_id` | STRING | | 亚马逊订单号 |
| `email` | STRING | | 邮箱 |
| `phone` | STRING | | 电话 |
| `joyhub_id` | VARCHAR(150) | | JOYHUB ID |
| `twitter` | STRING | | Twitter账号 |
| `facebook` | STRING | | Facebook账号 |
#### `ods_oa_oaaftersales.lingxing_order` — 亚马逊订单30+ 字段2142万行
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | DECIMAL(20,0) | UNI | 订单ID |
| `amazon_order_id` | VARCHAR(150) | | 亚马逊订单号 |
| `buyer_name` | VARCHAR(765) | | 买家姓名 |
| `buyer_email` | VARCHAR(765) | | 买家邮箱 |
| `phone` | VARCHAR(90) | | 电话 |
| `postal_code` | VARCHAR(765) | | 邮编 |
| `address` | VARCHAR(765) | | 地址 |
#### `ods_oa_oaaftersales.phone_records` — 电话记录30+ 字段8万行
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | BIGINT | UNI | 主键 |
| `ct_id` | INT | | 客户ID → 关联 `customer.id` |
| `phone` | STRING | | 电话 |
| `email` | STRING | | 邮箱 |
| `joyhub_id` | VARCHAR(150) | | JOYHUB ID |
### 4.3 社区行为表
#### `ods_app_app_community.posts` — 帖子表35 字段)
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | DECIMAL(20,0) | UNI | 帖子ID |
| `user_id` | INT | | 用户ID → 关联 `users.id` |
| `status` | SMALLINT | | 10待审核/20拒绝/30通过 |
| `deleted_at` | INT | | 删除时间0=未删除) |
#### `ods_app_app_community.post_likes` — 点赞表5 字段)
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | DECIMAL(20,0) | UNI | 主键 |
| `post_id` | BIGINT | | 帖子ID → 关联 `posts.id` |
| `user_id` | INT | | 用户ID → 关联 `users.id` |
#### `ods_app_app_community.comments` — 评论表14 字段)
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | DECIMAL(20,0) | UNI | 评论ID |
| `post_id` | DECIMAL(20,0) | | 帖子ID → 关联 `posts.id` |
| `user_id` | DECIMAL(20,0) | | 用户ID → 关联 `users.id` |
#### `ods_app_app_community.follows` — 关注关系表7 字段)
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | DECIMAL(20,0) | UNI | 主键 |
| `user_id` | INT | | 关注者ID → 关联 `users.id` |
| `following_user_id` | INT | | 被关注者ID → 关联 `users.id` |
#### `ods_app_base_data.friends` — 好友关系表6 字段)
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | DECIMAL(20,0) | UNI | 主键 |
| `user_id` | DECIMAL(20,0) | | 用户ID → 关联 `users.id` |
| `friend_id` | DECIMAL(20,0) | | 好友ID → 关联 `users.id` |
### 4.4 事件行为表
#### `ods_app_jh_data.events` — APP事件表18 字段)
> event_type: 13=home, 8=玩具连接, 5=视频等
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | BIGINT | UNI | 事件ID |
| `add_date` | DATE | UNI | 记录日期 |
| `uid` | BIGINT | | 用户ID → 关联 `users.id` |
| `event_type` | INT | | 事件类型 |
| `pid` | BIGINT | | 产品ID → 关联 `def_product_list.id` |
#### `ods_app_jh_data.remote_events` — 远程连接事件表15 字段)
| 字段 | 类型 | 键 | 说明 |
|------|------|---|------|
| `id` | BIGINT | UNI | 事件ID |
| `uid` | BIGINT | | 用户ID → 关联 `users.id` |
| `call_sn` | VARCHAR(600) | | 远程序列号格式uid1_uid2_uuid |
| `mode` | INT | | 1文字/2语音/3视频 |
---
## 5. 表关联关系图
```
┌─────────────────────────────────────────────────────────────────────────┐
│ identity 子系统数据关系 │
└─────────────────────────────────────────────────────────────────────────┘
┌───────────────────────┐
│ app_tag_data │
│ .user_oneid │
│ uuid ──► one_id │
│ (已有归并逻辑) │
└───────────┬───────────┘
│ uuid 可能是 email/phone/device
┌──────────────────────────────────────────────────────────────────────┐
│ ods_app_base_dataAPP用户体系
│ │
│ users ◄── user_profiles (user_id) │
│ │ user_login_last (UserId) ── deviceId, deviceModel │
│ │ user_device_token_log (user_id) ── 252万条设备变更记录 │
│ │ user_contact_information_history (user_id) ── 20万条变更 │
│ │ friends (user_id / friend_id) │
│ │ banned_device_id (device_id) ── 设备封禁 │
│ │ blacklist_users_aggregate (target_id+target_value) │
│ │ │
│ └── id = JOYHUB_ID │
└──────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────┐
│ ods_oa_oaaftersalesOA售后体系
│ │
│ customer ◄── customer_platform_info (customer_id) │
│ │ type: 1电话/2邮箱/3joyhub_id/5twitter/6facebook │
│ │ customer_address (customer_id) ── 姓名+地址+电话 │
│ │ customer_payment_account (ct_id) ── 收款账号 │
│ │ customer_bind (customer_ids) ── 客户绑定关系 │
│ │ customer_bind_log ── 绑定操作日志 │
│ │ evaluation_order (ct_id) ── 邮箱/电话/joyhub_id/社媒 │
│ │ phone_records (ct_id) ── 电话/邮箱/joyhub_id │
│ │ order_refund (ct_id) ── 返款详情 │
│ │ │
│ lingxing_order ── buyer_name + buyer_email + phone + address │
│ └── lingxing_order_item (amazon_order_id) │
└──────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────┐
│ 社区行为ods_app_app_community
│ │
│ posts ◄── post_likes (post_id, user_id) │
│ │ comments (post_id, user_id) │
│ └── follows (user_id, following_user_id) │
└──────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────┐
│ 事件行为ods_app_jh_data |
│ │
│ events (uid, event_type, pid) │
│ communities (uid, event_type) │
│ remote_events (uid, call_sn ── 含对端uid) │
└──────────────────────────────────────────────────────────────────────┘
```
---
## 6. identity 设计表与现有表的字段映射
### 6.1 person_identity_links身份线索关联表— 待建
| clue_type | 设计文档定义 | 数据来源表 | 来源字段 | 数据量级 |
|-----------|-------------|-----------|---------|---------|
| JOYHUB_ID | JOYHUB用户ID | `users.id` | id | - |
| EMAIL | 邮箱 | `users.email` / `evaluation_order.email` / `lingxing_order.buyer_email` / `edm_contact_user.email` / `customer_platform_info`(type=2) | email | - |
| PHONE | 电话 | `users.contact_information` / `users.mobile` / `evaluation_order.phone` / `lingxing_order.phone` / `customer_platform_info`(type=1) | phone | - |
| DEVICE | 设备号 | `users.deviceId` / `user_login_last.deviceId` / `user_device_token_log.device_id` | deviceId | 252万条日志 |
| ORDER_NAME_ADDRESS | 订单姓名+地址 | `lingxing_order.buyer_name` + `lingxing_order.address` / `customer_address.recipient_name` + `customer_address.detail` | name+address | 5631条地址 |
| SOCIAL_ACCOUNT | 社交媒体(扩展) | `evaluation_order.twitter` / `evaluation_order.facebook` / `customer_platform_info`(type=5,6) | twitter/facebook | - |
| PAYMENT_ACCOUNT | 收款账号(扩展) | `customer_payment_account.account_number` / `customer.erp_pay_account` | account | 10万条 |
### 6.2 device_records设备变化记录— 待建
| 设计字段 | 数据来源表 | 来源字段 |
|---------|-----------|---------|
| `joyhub_id` | `users.id` | id |
| `device_id` | `users.deviceId` / `user_login_last.deviceId` / `user_device_token_log.device_id` | deviceId |
| `device_model` | `user_login_last.deviceModel` | deviceModel |
| `os_version` | `user_login_last.device` / `user_login_last.sysType` | device/sysType |
| `app_version` | `user_login_last.appVersion` / `users.appVersion` | appVersion |
| `change_type` | `user_device_token_log.type` | 0=NEW, 1=UPDATE |
### 6.3 contact_context_snapshots上下文快照— 待建
| 设计字段 | 数据来源子系统 | 来源表 |
|---------|--------------|--------|
| `identity_snapshot` | identity | person_profiles + person_identity_links |
| `transaction_snapshot` | planning | lingxing_order, lingxing_order_item |
| `service_snapshot` | support | order_refund, evaluation_order, phone_records |
| `risk_snapshot` | risk | customer.is_black, customer.high_risk, banned_device_id, blacklist_users_aggregate |
| `device_snapshot` | identity(M4) | device_records, user_login_last |
| `outreach_snapshot` | outreach | (待确认) |