# 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 | 用户ID(JOYHUB 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_data(APP用户体系) │ │ │ │ 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_oaaftersales(OA售后体系) │ │ │ │ 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 | (待确认) |