2026-07-12 14:17:45 +08:00

27 lines
2.0 KiB
SQL
Raw 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.

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 '设备 IMEIAndroid 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='用户设备档案表,认证成功后按设备聚合最新上报资料';