162 lines
7.7 KiB
SQL
162 lines
7.7 KiB
SQL
-- =====================================================
|
|
-- Timeline 数据库迁移脚本
|
|
-- 版本: V1.3.0
|
|
-- 日期: 2024
|
|
-- 描述: 第三阶段智能化功能 - 提醒系统、数据分析
|
|
-- =====================================================
|
|
|
|
-- -----------------------------------------------------
|
|
-- 1. 提醒系统表结构
|
|
-- -----------------------------------------------------
|
|
|
|
-- 提醒表
|
|
CREATE TABLE IF NOT EXISTS reminder (
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
|
|
instance_id VARCHAR(64) UNIQUE NOT NULL COMMENT '提醒唯一标识',
|
|
user_id VARCHAR(64) NOT NULL COMMENT '用户ID',
|
|
type VARCHAR(20) NOT NULL COMMENT '提醒类型: RECORD/MEMORY/ANNIVERSARY/CUSTOM',
|
|
title VARCHAR(200) NOT NULL COMMENT '提醒标题',
|
|
content TEXT COMMENT '提醒内容',
|
|
story_instance_id VARCHAR(64) COMMENT '关联的故事ID',
|
|
story_item_id VARCHAR(64) COMMENT '关联的节点ID',
|
|
remind_time DATETIME NOT NULL COMMENT '提醒时间',
|
|
repeat_type VARCHAR(20) DEFAULT 'NONE' COMMENT '重复类型: NONE/DAILY/WEEKLY/MONTHLY/YEARLY',
|
|
is_sent TINYINT DEFAULT 0 COMMENT '是否已发送 0-否 1-是',
|
|
sent_time DATETIME COMMENT '发送时间',
|
|
is_enabled TINYINT DEFAULT 1 COMMENT '是否启用 0-禁用 1-启用',
|
|
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
INDEX idx_reminder_user (user_id, is_enabled, remind_time),
|
|
INDEX idx_reminder_pending (is_sent, remind_time),
|
|
INDEX idx_reminder_type (type)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='提醒表';
|
|
|
|
-- -----------------------------------------------------
|
|
-- 2. 纪念日表结构
|
|
-- -----------------------------------------------------
|
|
|
|
-- 纪念日表
|
|
CREATE TABLE IF NOT EXISTS anniversary (
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
|
|
instance_id VARCHAR(64) UNIQUE NOT NULL COMMENT '纪念日唯一标识',
|
|
user_id VARCHAR(64) NOT NULL COMMENT '用户ID',
|
|
title VARCHAR(200) NOT NULL COMMENT '纪念日标题',
|
|
description TEXT COMMENT '描述',
|
|
anniversary_date DATE NOT NULL COMMENT '纪念日日期',
|
|
repeat_type VARCHAR(20) DEFAULT 'YEARLY' COMMENT '重复类型: YEARLY/MONTHLY/ONCE',
|
|
remind_days INT DEFAULT 1 COMMENT '提前提醒天数',
|
|
is_lunar TINYINT DEFAULT 0 COMMENT '是否农历 0-公历 1-农历',
|
|
is_enabled TINYINT DEFAULT 1 COMMENT '是否启用',
|
|
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
is_delete TINYINT DEFAULT 0 COMMENT '是否删除',
|
|
INDEX idx_anniversary_user (user_id, is_delete),
|
|
INDEX idx_anniversary_date (anniversary_date)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='纪念日表';
|
|
|
|
-- -----------------------------------------------------
|
|
-- 3. 用户统计缓存表
|
|
-- -----------------------------------------------------
|
|
|
|
-- 用户统计缓存表
|
|
CREATE TABLE IF NOT EXISTS user_stats_cache (
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
|
|
user_id VARCHAR(64) UNIQUE NOT NULL COMMENT '用户ID',
|
|
total_moments BIGINT DEFAULT 0 COMMENT '总时刻数',
|
|
total_media BIGINT DEFAULT 0 COMMENT '总媒体数',
|
|
total_stories BIGINT DEFAULT 0 COMMENT '总故事数',
|
|
total_comments BIGINT DEFAULT 0 COMMENT '总评论数',
|
|
total_likes BIGINT DEFAULT 0 COMMENT '总点赞数',
|
|
consecutive_days INT DEFAULT 0 COMMENT '连续记录天数',
|
|
max_consecutive_days INT DEFAULT 0 COMMENT '最长连续记录天数',
|
|
last_active_date DATE COMMENT '最后活跃日期',
|
|
stats_json JSON COMMENT '详细统计数据JSON',
|
|
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
INDEX idx_stats_user (user_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户统计缓存表';
|
|
|
|
-- -----------------------------------------------------
|
|
-- 4. 年度报告表
|
|
-- -----------------------------------------------------
|
|
|
|
-- 年度报告表
|
|
CREATE TABLE IF NOT EXISTS yearly_report (
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
|
|
instance_id VARCHAR(64) UNIQUE NOT NULL COMMENT '报告唯一标识',
|
|
user_id VARCHAR(64) NOT NULL COMMENT '用户ID',
|
|
year INT NOT NULL COMMENT '年份',
|
|
total_moments BIGINT DEFAULT 0 COMMENT '年度时刻数',
|
|
total_media BIGINT DEFAULT 0 COMMENT '年度媒体数',
|
|
most_active_month VARCHAR(7) COMMENT '最活跃月份',
|
|
most_active_day DATE COMMENT '最活跃日期',
|
|
top_location VARCHAR(200) COMMENT '最常去地点',
|
|
top_tag VARCHAR(50) COMMENT '最常用标签',
|
|
monthly_breakdown JSON COMMENT '月度明细JSON',
|
|
insights JSON COMMENT 'AI洞察JSON',
|
|
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
UNIQUE KEY uk_user_year (user_id, year),
|
|
INDEX idx_report_user (user_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='年度报告表';
|
|
|
|
-- -----------------------------------------------------
|
|
-- 5. 智能填充历史表
|
|
-- -----------------------------------------------------
|
|
|
|
-- 智能填充历史表
|
|
CREATE TABLE IF NOT EXISTS smart_fill_history (
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
|
|
instance_id VARCHAR(64) UNIQUE NOT NULL COMMENT '记录唯一标识',
|
|
user_id VARCHAR(64) NOT NULL COMMENT '用户ID',
|
|
file_name VARCHAR(500) COMMENT '文件名',
|
|
inferred_time DATETIME COMMENT '推断的时间',
|
|
time_source VARCHAR(20) COMMENT '时间来源',
|
|
time_confidence INT COMMENT '时间置信度',
|
|
inferred_location VARCHAR(200) COMMENT '推断的地点',
|
|
location_source VARCHAR(20) COMMENT '地点来源',
|
|
location_confidence INT COMMENT '地点置信度',
|
|
is_applied TINYINT DEFAULT 0 COMMENT '是否已应用 0-否 1-是',
|
|
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
INDEX idx_fill_user (user_id, create_time DESC)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='智能填充历史表';
|
|
|
|
-- -----------------------------------------------------
|
|
-- 6. 定时任务配置表
|
|
-- -----------------------------------------------------
|
|
|
|
-- 定时任务配置表
|
|
CREATE TABLE IF NOT EXISTS scheduled_task (
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
|
|
task_name VARCHAR(100) UNIQUE NOT NULL COMMENT '任务名称',
|
|
task_type VARCHAR(50) NOT NULL COMMENT '任务类型',
|
|
cron_expression VARCHAR(100) COMMENT 'Cron表达式',
|
|
is_enabled TINYINT DEFAULT 1 COMMENT '是否启用',
|
|
last_execute_time DATETIME COMMENT '最后执行时间',
|
|
next_execute_time DATETIME COMMENT '下次执行时间',
|
|
execute_count BIGINT DEFAULT 0 COMMENT '执行次数',
|
|
last_status VARCHAR(20) COMMENT '最后执行状态',
|
|
last_error TEXT COMMENT '最后错误信息',
|
|
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='定时任务配置表';
|
|
|
|
-- 初始化定时任务
|
|
INSERT INTO scheduled_task (task_name, task_type, cron_expression, is_enabled) VALUES
|
|
('MEMORY_REMINDER_TASK', 'REMINDER', '0 0 8 * * ?', 1),
|
|
('STATS_CACHE_TASK', 'STATS', '0 0 3 * * ?', 1),
|
|
('YEARLY_REPORT_TASK', 'REPORT', '0 0 0 1 1 ?', 1)
|
|
ON DUPLICATE KEY UPDATE task_name = task_name;
|
|
|
|
-- -----------------------------------------------------
|
|
-- 回滚脚本 (如需回滚,请执行以下语句)
|
|
-- -----------------------------------------------------
|
|
|
|
/*
|
|
-- 删除新增表
|
|
DROP TABLE IF EXISTS scheduled_task;
|
|
DROP TABLE IF EXISTS smart_fill_history;
|
|
DROP TABLE IF EXISTS yearly_report;
|
|
DROP TABLE IF EXISTS user_stats_cache;
|
|
DROP TABLE IF EXISTS anniversary;
|
|
DROP TABLE IF EXISTS reminder;
|
|
*/
|