feat(数据库): 添加数据库迁移脚本支持时间线功能

添加V1.1.0至V1.3.0版本的数据库迁移脚本,包含核心功能优化、搜索评论通知系统以及智能功能
This commit is contained in:
2026-02-24 10:49:14 +08:00
commit c0f89a933e
4 changed files with 590 additions and 0 deletions

View File

@@ -0,0 +1,194 @@
-- =====================================================
-- Timeline 数据库迁移脚本
-- 版本: V1.1.0
-- 日期: 2024
-- 描述: 第一阶段核心功能优化 - 数据库结构变更
-- =====================================================
-- -----------------------------------------------------
-- 1. 时间线节点排序字段
-- 功能: 支持拖拽排序功能
-- -----------------------------------------------------
-- 为 story_item 表添加排序字段
ALTER TABLE story_item
ADD COLUMN sort_order INT DEFAULT 0 COMMENT '排序值,数值越小越靠前,用于拖拽排序';
-- 为排序字段添加索引,优化查询性能
CREATE INDEX idx_story_item_sort_order
ON story_item(story_instance_id, sort_order, story_item_time DESC);
-- -----------------------------------------------------
-- 2. 标签系统表结构
-- 功能: 支持为时间线节点添加标签
-- -----------------------------------------------------
-- 标签表
CREATE TABLE IF NOT EXISTS tag (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
instance_id VARCHAR(64) UNIQUE NOT NULL COMMENT '标签唯一标识',
name VARCHAR(50) NOT NULL COMMENT '标签名称',
color VARCHAR(20) DEFAULT '#1890ff' COMMENT '标签颜色',
owner_id VARCHAR(64) NOT NULL COMMENT '创建者ID',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
is_delete TINYINT DEFAULT 0 COMMENT '是否删除 0-否 1-是',
INDEX idx_tag_owner (owner_id),
INDEX idx_tag_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='标签表';
-- 时间线节点与标签关联表
CREATE TABLE IF NOT EXISTS story_item_tag (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
story_item_id VARCHAR(64) NOT NULL COMMENT '时间线节点ID',
tag_id VARCHAR(64) NOT NULL COMMENT '标签ID',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
create_id VARCHAR(64) COMMENT '创建者ID',
UNIQUE KEY uk_item_tag (story_item_id, tag_id),
INDEX idx_tag_story_item (tag_id, story_item_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='时间线节点标签关联表';
-- -----------------------------------------------------
-- 3. 评论系统表结构
-- 功能: 支持对时间线节点进行评论
-- -----------------------------------------------------
-- 评论表
CREATE TABLE IF NOT EXISTS story_comment (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
instance_id VARCHAR(64) UNIQUE NOT NULL COMMENT '评论唯一标识',
story_item_id VARCHAR(64) NOT NULL COMMENT '时间线节点ID',
user_id VARCHAR(64) NOT NULL COMMENT '评论用户ID',
parent_id VARCHAR(64) DEFAULT NULL COMMENT '父评论ID用于回复功能',
reply_to_user_id VARCHAR(64) DEFAULT NULL COMMENT '回复的用户ID',
content TEXT NOT NULL COMMENT '评论内容',
like_count INT DEFAULT 0 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 '是否删除 0-否 1-是',
INDEX idx_comment_story_item (story_item_id, create_time DESC),
INDEX idx_comment_user (user_id),
INDEX idx_comment_parent (parent_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='评论表';
-- -----------------------------------------------------
-- 4. 点赞系统表结构
-- 功能: 支持对时间线节点进行点赞
-- -----------------------------------------------------
-- 点赞表
CREATE TABLE IF NOT EXISTS story_like (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
story_item_id VARCHAR(64) NOT NULL COMMENT '时间线节点ID',
user_id VARCHAR(64) NOT NULL COMMENT '点赞用户ID',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
UNIQUE KEY uk_item_user (story_item_id, user_id),
INDEX idx_like_user (user_id, create_time DESC)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='点赞表';
-- -----------------------------------------------------
-- 5. 收藏系统表结构
-- 功能: 支持收藏时间线节点
-- -----------------------------------------------------
-- 收藏表
CREATE TABLE IF NOT EXISTS story_favorite (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
instance_id VARCHAR(64) UNIQUE NOT NULL COMMENT '收藏记录唯一标识',
story_item_id VARCHAR(64) NOT NULL COMMENT '时间线节点ID',
user_id VARCHAR(64) NOT NULL COMMENT '收藏用户ID',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
UNIQUE KEY uk_item_user (story_item_id, user_id),
INDEX idx_favorite_user (user_id, create_time DESC)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='收藏表';
-- -----------------------------------------------------
-- 6. 消息通知表结构
-- 功能: 支持系统消息推送
-- -----------------------------------------------------
-- 消息通知表
CREATE TABLE IF NOT EXISTS notification (
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 '消息类型: COMMENT/LIKE/MENTION/INVITE/SYSTEM',
title VARCHAR(200) NOT NULL COMMENT '消息标题',
content TEXT COMMENT '消息内容',
related_id VARCHAR(64) COMMENT '关联ID(评论ID/节点ID等)',
related_type VARCHAR(20) COMMENT '关联类型',
sender_id VARCHAR(64) COMMENT '发送者ID',
sender_name VARCHAR(100) COMMENT '发送者名称',
sender_avatar VARCHAR(500) COMMENT '发送者头像',
is_read TINYINT DEFAULT 0 COMMENT '是否已读 0-未读 1-已读',
read_time DATETIME COMMENT '阅读时间',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
INDEX idx_notification_user (user_id, is_read, create_time DESC),
INDEX idx_notification_type (type)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息通知表';
-- -----------------------------------------------------
-- 7. 操作历史记录表
-- 功能: 支持撤销/重做功能
-- -----------------------------------------------------
-- 操作历史表
CREATE TABLE IF NOT EXISTS operation_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',
story_id VARCHAR(64) COMMENT '故事ID',
operation_type VARCHAR(20) NOT NULL COMMENT '操作类型: CREATE/UPDATE/DELETE/REORDER',
target_type VARCHAR(20) NOT NULL COMMENT '目标类型: STORY/STORY_ITEM',
target_id VARCHAR(64) NOT NULL COMMENT '目标ID',
before_data JSON COMMENT '操作前数据快照',
after_data JSON COMMENT '操作后数据快照',
description VARCHAR(200) COMMENT '操作描述',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
INDEX idx_history_user_story (user_id, story_id, create_time DESC),
INDEX idx_history_target (target_type, target_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操作历史记录表';
-- -----------------------------------------------------
-- 8. 优化现有表索引
-- 功能: 提升查询性能
-- -----------------------------------------------------
-- 为 story_item 表添加复合索引,优化时间线查询
CREATE INDEX idx_story_item_time_query
ON story_item(story_instance_id, is_delete, story_item_time DESC);
-- 为 story_permission 表添加索引
CREATE INDEX idx_story_permission_user
ON story_permission(user_id, permission_type);
-- -----------------------------------------------------
-- 数据迁移说明
-- -----------------------------------------------------
-- 1. sort_order 字段默认值为 0现有数据无需迁移
-- 2. 新表均为空表,无需数据迁移
-- 3. 建议在低峰期执行此脚本
-- -----------------------------------------------------
-- 回滚脚本 (如需回滚,请执行以下语句)
-- -----------------------------------------------------
/*
-- 删除新增字段
ALTER TABLE story_item DROP COLUMN sort_order;
-- 删除新增索引
DROP INDEX idx_story_item_sort_order ON story_item;
DROP INDEX idx_story_item_time_query ON story_item;
DROP INDEX idx_story_permission_user ON story_permission;
-- 删除新增表
DROP TABLE IF EXISTS operation_history;
DROP TABLE IF EXISTS notification;
DROP TABLE IF EXISTS story_favorite;
DROP TABLE IF EXISTS story_like;
DROP TABLE IF EXISTS story_comment;
DROP TABLE IF EXISTS story_item_tag;
DROP TABLE IF EXISTS tag;
*/

View File

@@ -0,0 +1,230 @@
-- =====================================================
-- Timeline 数据库迁移脚本
-- 版本: V1.2.0
-- 日期: 2024
-- 描述: 第二阶段功能增强 - 搜索、标签、评论、通知系统
-- =====================================================
-- -----------------------------------------------------
-- 1. 标签系统表结构(如已存在则跳过)
-- -----------------------------------------------------
-- 标签表
CREATE TABLE IF NOT EXISTS tag (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
instance_id VARCHAR(64) UNIQUE NOT NULL COMMENT '标签唯一标识',
name VARCHAR(50) NOT NULL COMMENT '标签名称',
color VARCHAR(20) DEFAULT '#1890ff' COMMENT '标签颜色',
owner_id VARCHAR(64) NOT NULL COMMENT '创建者ID',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
is_delete TINYINT DEFAULT 0 COMMENT '是否删除 0-否 1-是',
INDEX idx_tag_owner (owner_id),
INDEX idx_tag_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='标签表';
-- 时间线节点与标签关联表
CREATE TABLE IF NOT EXISTS story_item_tag (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
story_item_id VARCHAR(64) NOT NULL COMMENT '时间线节点ID',
tag_id VARCHAR(64) NOT NULL COMMENT '标签ID',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
create_id VARCHAR(64) COMMENT '创建者ID',
UNIQUE KEY uk_item_tag (story_item_id, tag_id),
INDEX idx_tag_story_item (tag_id, story_item_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='时间线节点标签关联表';
-- -----------------------------------------------------
-- 2. 评论系统表结构
-- -----------------------------------------------------
-- 评论表
CREATE TABLE IF NOT EXISTS story_comment (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
instance_id VARCHAR(64) UNIQUE NOT NULL COMMENT '评论唯一标识',
story_item_id VARCHAR(64) NOT NULL COMMENT '时间线节点ID',
user_id VARCHAR(64) NOT NULL COMMENT '评论用户ID',
parent_id VARCHAR(64) DEFAULT NULL COMMENT '父评论ID用于回复功能',
reply_to_user_id VARCHAR(64) DEFAULT NULL COMMENT '回复的用户ID',
content TEXT NOT NULL COMMENT '评论内容',
like_count INT DEFAULT 0 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 '是否删除 0-否 1-是',
INDEX idx_comment_story_item (story_item_id, create_time DESC),
INDEX idx_comment_user (user_id),
INDEX idx_comment_parent (parent_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='评论表';
-- -----------------------------------------------------
-- 3. 点赞系统表结构
-- -----------------------------------------------------
-- 点赞表(节点点赞)
CREATE TABLE IF NOT EXISTS story_item_like (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
story_item_id VARCHAR(64) NOT NULL COMMENT '时间线节点ID',
user_id VARCHAR(64) NOT NULL COMMENT '点赞用户ID',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
UNIQUE KEY uk_item_user (story_item_id, user_id),
INDEX idx_like_user (user_id, create_time DESC)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='节点点赞表';
-- 评论点赞表
CREATE TABLE IF NOT EXISTS comment_like (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
comment_id VARCHAR(64) NOT NULL COMMENT '评论ID',
user_id VARCHAR(64) NOT NULL COMMENT '点赞用户ID',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
UNIQUE KEY uk_comment_user (comment_id, user_id),
INDEX idx_comment_like_user (user_id, create_time DESC)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='评论点赞表';
-- -----------------------------------------------------
-- 4. 收藏系统表结构
-- -----------------------------------------------------
-- 收藏表
CREATE TABLE IF NOT EXISTS story_item_favorite (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
instance_id VARCHAR(64) UNIQUE NOT NULL COMMENT '收藏记录唯一标识',
story_item_id VARCHAR(64) NOT NULL COMMENT '时间线节点ID',
user_id VARCHAR(64) NOT NULL COMMENT '收藏用户ID',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
UNIQUE KEY uk_item_user (story_item_id, user_id),
INDEX idx_favorite_user (user_id, create_time DESC)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='收藏表';
-- -----------------------------------------------------
-- 5. 消息通知系统表结构
-- -----------------------------------------------------
-- 消息通知表
CREATE TABLE IF NOT EXISTS notification (
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 '消息类型: COMMENT/LIKE/MENTION/INVITE/SYSTEM',
title VARCHAR(200) NOT NULL COMMENT '消息标题',
content TEXT COMMENT '消息内容',
related_id VARCHAR(64) COMMENT '关联ID(评论ID/节点ID等)',
related_type VARCHAR(20) COMMENT '关联类型: STORY_ITEM/COMMENT/STORY',
sender_id VARCHAR(64) COMMENT '发送者ID',
sender_name VARCHAR(100) COMMENT '发送者名称',
sender_avatar VARCHAR(500) COMMENT '发送者头像',
is_read TINYINT DEFAULT 0 COMMENT '是否已读 0-未读 1-已读',
read_time DATETIME COMMENT '阅读时间',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
INDEX idx_notification_user (user_id, is_read, create_time DESC),
INDEX idx_notification_type (type)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息通知表';
-- -----------------------------------------------------
-- 6. 操作历史记录表(支持撤销/重做)
-- -----------------------------------------------------
-- 操作历史表
CREATE TABLE IF NOT EXISTS operation_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',
story_id VARCHAR(64) COMMENT '故事ID',
operation_type VARCHAR(20) NOT NULL COMMENT '操作类型: CREATE/UPDATE/DELETE/REORDER',
target_type VARCHAR(20) NOT NULL COMMENT '目标类型: STORY/STORY_ITEM',
target_id VARCHAR(64) NOT NULL COMMENT '目标ID',
before_data JSON COMMENT '操作前数据快照',
after_data JSON COMMENT '操作后数据快照',
description VARCHAR(200) COMMENT '操作描述',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
INDEX idx_history_user_story (user_id, story_id, create_time DESC),
INDEX idx_history_target (target_type, target_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操作历史记录表';
-- -----------------------------------------------------
-- 7. 用户消息设置表
-- -----------------------------------------------------
-- 用户消息设置表
CREATE TABLE IF NOT EXISTS user_notification_setting (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
user_id VARCHAR(64) UNIQUE NOT NULL COMMENT '用户ID',
comment_notify TINYINT DEFAULT 1 COMMENT '评论通知 0-关闭 1-开启',
like_notify TINYINT DEFAULT 1 COMMENT '点赞通知 0-关闭 1-开启',
mention_notify TINYINT DEFAULT 1 COMMENT '@提及通知 0-关闭 1-开启',
invite_notify TINYINT DEFAULT 1 COMMENT '邀请通知 0-关闭 1-开启',
system_notify TINYINT DEFAULT 1 COMMENT '系统通知 0-关闭 1-开启',
email_notify TINYINT DEFAULT 0 COMMENT '邮件通知 0-关闭 1-开启',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户消息设置表';
-- -----------------------------------------------------
-- 8. @提及记录表
-- -----------------------------------------------------
-- @提及表
CREATE TABLE IF NOT EXISTS mention (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
instance_id VARCHAR(64) UNIQUE NOT NULL COMMENT '提及记录唯一标识',
from_user_id VARCHAR(64) NOT NULL COMMENT '提及者ID',
to_user_id VARCHAR(64) NOT NULL COMMENT '被提及者ID',
related_type VARCHAR(20) NOT NULL COMMENT '关联类型: COMMENT/STORY_ITEM',
related_id VARCHAR(64) NOT NULL COMMENT '关联ID',
is_notified TINYINT DEFAULT 0 COMMENT '是否已发送通知 0-否 1-是',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
INDEX idx_mention_to (to_user_id, is_notified, create_time DESC),
INDEX idx_mention_related (related_type, related_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='@提及记录表';
-- -----------------------------------------------------
-- 9. 统计字段更新触发器
-- -----------------------------------------------------
-- 为 story_item 表添加统计字段
ALTER TABLE story_item
ADD COLUMN comment_count INT DEFAULT 0 COMMENT '评论数',
ADD COLUMN like_count INT DEFAULT 0 COMMENT '点赞数',
ADD COLUMN favorite_count INT DEFAULT 0 COMMENT '收藏数';
-- -----------------------------------------------------
-- 10. 索引优化
-- -----------------------------------------------------
-- 为 story_item 表添加复合索引
CREATE INDEX IF NOT EXISTS idx_story_item_stats
ON story_item(story_instance_id, is_delete, like_count DESC, create_time DESC);
-- -----------------------------------------------------
-- 数据迁移说明
-- -----------------------------------------------------
-- 1. 新表均为空表,无需数据迁移
-- 2. 统计字段默认值为 0现有数据无需迁移
-- 3. 建议在低峰期执行此脚本
-- 4. Elasticsearch 索引需要单独创建和同步
-- -----------------------------------------------------
-- 回滚脚本 (如需回滚,请执行以下语句)
-- -----------------------------------------------------
/*
-- 删除新增字段
ALTER TABLE story_item DROP COLUMN comment_count;
ALTER TABLE story_item DROP COLUMN like_count;
ALTER TABLE story_item DROP COLUMN favorite_count;
-- 删除新增索引
DROP INDEX IF EXISTS idx_story_item_stats ON story_item;
-- 删除新增表
DROP TABLE IF EXISTS mention;
DROP TABLE IF EXISTS user_notification_setting;
DROP TABLE IF EXISTS operation_history;
DROP TABLE IF EXISTS notification;
DROP TABLE IF EXISTS story_item_favorite;
DROP TABLE IF EXISTS comment_like;
DROP TABLE IF EXISTS story_item_like;
DROP TABLE IF EXISTS story_comment;
DROP TABLE IF EXISTS story_item_tag;
DROP TABLE IF EXISTS tag;
*/

161
V1.3.0__smart_features.sql Normal file
View File

@@ -0,0 +1,161 @@
-- =====================================================
-- 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;
*/

5
timeline.session.sql Normal file
View File

@@ -0,0 +1,5 @@
ALTER TABLE story_item ADD COLUMN share_id VARCHAR(64) DEFAULT NULL COMMENT '分享ID';
ALTER TABLE `story_item`
ADD COLUMN `video_url` VARCHAR(64) COMMENT '视频文件 Instance ID',
ADD COLUMN `duration` BIGINT COMMENT '视频时长(秒)',
ADD COLUMN `thumbnail_url` VARCHAR(64) COMMENT '视频封面 Instance ID';