27 lines
2.0 KiB
SQL
27 lines
2.0 KiB
SQL
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||
|
||
USE hyapp_user;
|
||
|
||
-- 后台用户详情设备 tab 需要注册之后的持续设备画像:users.register_device/os_version 只是注册时一次性快照,
|
||
-- 真实客户端此前从未上报,线上均为空。user_devices 在每次认证成功(登录/注册/refresh)后按
|
||
-- (app_code, user_id, device_id) 聚合客户端设备头,字段以“非空覆盖”合并,空值不抹掉历史上报。
|
||
-- CREATE TABLE IF NOT EXISTS 使已通过 initdb 建表的环境可以安全重复执行。
|
||
CREATE TABLE IF NOT EXISTS user_devices (
|
||
app_code VARCHAR(32) NOT NULL DEFAULT 'lalu' COMMENT '应用编码,用于多租户隔离',
|
||
user_id BIGINT NOT NULL COMMENT '用户 ID',
|
||
device_id VARCHAR(128) NOT NULL COMMENT '设备 ID,与 auth_sessions.device_id 同源',
|
||
platform VARCHAR(32) NOT NULL DEFAULT '' COMMENT '平台,android/ios',
|
||
device_model VARCHAR(128) NOT NULL DEFAULT '' COMMENT '设备型号,例如 Redmi Note 8 Pro',
|
||
manufacturer VARCHAR(64) NOT NULL DEFAULT '' COMMENT '设备厂商,例如 Xiaomi/Apple',
|
||
os_version VARCHAR(64) NOT NULL DEFAULT '' COMMENT '系统版本',
|
||
imei VARCHAR(64) NOT NULL DEFAULT '' COMMENT '设备 IMEI,Android 10+ 无特权权限时为空',
|
||
app_version VARCHAR(64) NOT NULL DEFAULT '' COMMENT '最近一次认证客户端版本',
|
||
build_number VARCHAR(64) NOT NULL DEFAULT '' COMMENT '最近一次认证客户端构建号',
|
||
first_seen_at_ms BIGINT NOT NULL COMMENT '首次认证成功时间,UTC epoch ms',
|
||
last_seen_at_ms BIGINT NOT NULL COMMENT '最近认证成功时间,UTC epoch ms',
|
||
created_at_ms BIGINT NOT NULL COMMENT '创建时间,UTC epoch ms',
|
||
updated_at_ms BIGINT NOT NULL COMMENT '更新时间,UTC epoch ms',
|
||
PRIMARY KEY (app_code, user_id, device_id),
|
||
KEY idx_user_devices_user_last_seen (app_code, user_id, last_seen_at_ms)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户设备档案表,认证成功后按设备聚合最新上报资料';
|