-- 对话能量石记录表重建脚本 -- 如果表已存在,先删除(谨慎使用,确保已备份数据) -- DROP TABLE IF EXISTS conversation_energy_stones; CREATE TABLE IF NOT EXISTS conversation_energy_stones ( id BIGINT PRIMARY KEY AUTO_INCREMENT, stone_id VARCHAR(64) UNIQUE NOT NULL COMMENT '能量石ID', user_id VARCHAR(64) NOT NULL COMMENT '用户ID', request_id VARCHAR(64) NULL COMMENT '触发的请求ID', threshold_index INT NOT NULL COMMENT '达成阈值的序号(1=30秒,2=60秒...)', total_duration_ms BIGINT NOT NULL COMMENT '累计说话时长(毫秒)', duration_increment_ms INT NOT NULL COMMENT '本次新增时长(毫秒)', appear_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '出现时间', clicked_at TIMESTAMP NULL COMMENT '点击时间', auto_removed BOOLEAN DEFAULT FALSE COMMENT '是否自动消失', metadata JSON NULL COMMENT '扩展信息', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 唯一约束:同一用户同一阈值只能有一条记录 UNIQUE KEY uk_conversation_stone_threshold (user_id, threshold_index), -- 索引 INDEX idx_stone_id (stone_id), INDEX idx_user_id (user_id), INDEX idx_conversation_stone_user_threshold (user_id, threshold_index), INDEX idx_appear_at (appear_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='对话能量石表(按时长发放)';