70 lines
4.4 KiB
SQL
70 lines
4.4 KiB
SQL
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||
|
||
USE hyapp_user;
|
||
|
||
-- 用户在房时长服务端事实:消费 room outbox 的 RoomUserJoined/RoomUserLeft/RoomUserKicked,
|
||
-- 替代只靠客户端 room_stay 埋点的口径(杀进程丢时长导致进房时长偏低甚至小于上麦时长)。
|
||
CREATE TABLE IF NOT EXISTS user_room_sessions (
|
||
app_code VARCHAR(32) NOT NULL DEFAULT 'lalu' COMMENT '应用编码,用于多租户隔离',
|
||
room_session_id VARCHAR(128) NOT NULL COMMENT '在房会话 ID,取 RoomUserJoined 事件 ID',
|
||
user_id BIGINT NOT NULL COMMENT '用户 ID',
|
||
room_id VARCHAR(64) NOT NULL COMMENT '房间 ID',
|
||
status VARCHAR(32) NOT NULL COMMENT '业务状态 open/ended',
|
||
is_robot TINYINT(1) NOT NULL DEFAULT 0 COMMENT '进房时固化的机器人标记,机器人会话不产生统计事实',
|
||
joined_at_ms BIGINT NOT NULL COMMENT '进房时间,UTC epoch ms',
|
||
ended_at_ms BIGINT NULL COMMENT '离房时间,UTC epoch ms',
|
||
end_reason VARCHAR(64) NOT NULL DEFAULT '' COMMENT '结束原因',
|
||
room_online_ms BIGINT NOT NULL DEFAULT 0 COMMENT '在房毫秒值',
|
||
opened_event_id VARCHAR(128) NOT NULL COMMENT '进房事件 ID',
|
||
closed_event_id VARCHAR(128) NOT NULL DEFAULT '' COMMENT '闭合事件 ID',
|
||
last_event_id VARCHAR(128) NOT NULL COMMENT '最后事件 ID',
|
||
last_room_version BIGINT NOT NULL DEFAULT 0 COMMENT '最后房间版本',
|
||
created_at_ms BIGINT NOT NULL COMMENT '创建时间,UTC epoch ms',
|
||
updated_at_ms BIGINT NOT NULL COMMENT '更新时间,UTC epoch ms',
|
||
PRIMARY KEY (app_code, room_session_id),
|
||
KEY idx_user_room_sessions_user_status (app_code, user_id, status, joined_at_ms),
|
||
KEY idx_user_room_sessions_room_user (app_code, room_id, user_id, status),
|
||
KEY idx_user_room_sessions_open_timeout (app_code, status, joined_at_ms)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户在房会话表';
|
||
|
||
CREATE TABLE IF NOT EXISTS user_room_daily_stats (
|
||
app_code VARCHAR(32) NOT NULL DEFAULT 'lalu' COMMENT '应用编码,用于多租户隔离',
|
||
user_id BIGINT NOT NULL COMMENT '用户 ID',
|
||
stat_date CHAR(10) NOT NULL COMMENT '统计日期,UTC',
|
||
room_online_ms BIGINT NOT NULL DEFAULT 0 COMMENT '在房毫秒值',
|
||
session_count BIGINT NOT NULL DEFAULT 0 COMMENT '会话数量',
|
||
first_room_at_ms BIGINT NOT NULL DEFAULT 0 COMMENT '首次在房时间,UTC epoch ms',
|
||
last_room_at_ms BIGINT NOT NULL DEFAULT 0 COMMENT '最后在房时间,UTC epoch ms',
|
||
updated_at_ms BIGINT NOT NULL COMMENT '更新时间,UTC epoch ms',
|
||
PRIMARY KEY (app_code, user_id, stat_date),
|
||
KEY idx_user_room_daily_date (app_code, stat_date, room_online_ms)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户在房每日统计表';
|
||
|
||
CREATE TABLE IF NOT EXISTS user_room_orphan_leaves (
|
||
app_code VARCHAR(32) NOT NULL DEFAULT 'lalu' COMMENT '应用编码,用于多租户隔离',
|
||
event_id VARCHAR(128) NOT NULL COMMENT '离房事件 ID',
|
||
room_id VARCHAR(64) NOT NULL COMMENT '房间 ID',
|
||
user_id BIGINT NOT NULL COMMENT '用户 ID',
|
||
left_at_ms BIGINT NOT NULL COMMENT '离房时间,UTC epoch ms',
|
||
reason VARCHAR(64) NOT NULL DEFAULT '' COMMENT '离房原因',
|
||
created_at_ms BIGINT NOT NULL COMMENT '创建时间,UTC epoch ms',
|
||
PRIMARY KEY (app_code, event_id),
|
||
KEY idx_user_room_orphan_room_user (app_code, room_id, user_id, left_at_ms),
|
||
KEY idx_user_room_orphan_left_at (app_code, left_at_ms)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='先于进房事实到达的离房事件暂存表';
|
||
|
||
CREATE TABLE IF NOT EXISTS user_room_event_consumption (
|
||
app_code VARCHAR(32) NOT NULL DEFAULT 'lalu' COMMENT '应用编码,用于多租户隔离',
|
||
event_id VARCHAR(128) NOT NULL COMMENT '事件幂等 ID',
|
||
event_type VARCHAR(64) NOT NULL COMMENT '事件类型',
|
||
room_id VARCHAR(64) NOT NULL COMMENT '房间 ID',
|
||
user_id BIGINT NOT NULL COMMENT '用户 ID',
|
||
status VARCHAR(32) NOT NULL COMMENT '业务状态',
|
||
skip_reason VARCHAR(128) NOT NULL DEFAULT '' COMMENT '跳过原因',
|
||
created_at_ms BIGINT NOT NULL COMMENT '创建时间,UTC epoch ms',
|
||
consumed_at_ms BIGINT NULL COMMENT '消费时间,UTC epoch ms',
|
||
updated_at_ms BIGINT NOT NULL COMMENT '更新时间,UTC epoch ms',
|
||
PRIMARY KEY (app_code, event_id),
|
||
KEY idx_user_room_event_user (app_code, user_id, created_at_ms)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户在房事件消费位点表';
|