Files
Fulfilled-Knowledge/wishfulfilled-wiki/07_技术文档/01-子系统-identity-数据库表关系.md
2026-05-29 14:33:56 +08:00

431 lines
21 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.
# 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 | (待确认) |