-- 论坛第三阶段增强:通知/收藏/举报/嵌套回复 -- 2026-06-04 -- AlterTable: forum_topics 加 is_hidden 字段 ALTER TABLE `forum_topics` ADD COLUMN `is_hidden` BOOLEAN NOT NULL DEFAULT false; ALTER TABLE `forum_topics` ADD INDEX `forum_topics_is_hidden_idx`(`is_hidden`); -- AlterTable: forum_posts 加 reply_to_id / reply_to_snapshot ALTER TABLE `forum_posts` ADD COLUMN `reply_to_id` INTEGER NULL; ALTER TABLE `forum_posts` ADD COLUMN `reply_to_snapshot` VARCHAR(300) NULL; ALTER TABLE `forum_posts` ADD CONSTRAINT `forum_posts_reply_to_id_fkey` FOREIGN KEY (`reply_to_id`) REFERENCES `forum_posts`(`id`) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE `forum_posts` ADD INDEX `forum_posts_reply_to_id_idx`(`reply_to_id`); -- AlterTable: forum_topics 加联合全文索引 ALTER TABLE `forum_topics` ADD FULLTEXT INDEX `forum_topics_title_content_idx`(`title`, `content`); -- CreateTable: 收藏 CREATE TABLE `forum_topic_bookmarks` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `topic_id` INTEGER NOT NULL, `user_id` INTEGER NOT NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`), UNIQUE INDEX `forum_topic_bookmarks_topic_id_user_id_key`(`topic_id`, `user_id`), INDEX `forum_topic_bookmarks_user_id_created_at_idx`(`user_id`, `created_at`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE `forum_topic_bookmarks` ADD CONSTRAINT `forum_topic_bookmarks_topic_id_fkey` FOREIGN KEY (`topic_id`) REFERENCES `forum_topics`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE `forum_topic_bookmarks` ADD CONSTRAINT `forum_topic_bookmarks_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- CreateTable: 举报 CREATE TABLE `forum_reports` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `reporter_id` INTEGER NOT NULL, `topic_id` INTEGER NULL, `post_id` INTEGER NULL, `reason` VARCHAR(50) NOT NULL, `detail` VARCHAR(500) NULL, `status` VARCHAR(20) NOT NULL DEFAULT 'pending', `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `resolved_at` DATETIME(3) NULL, PRIMARY KEY (`id`), INDEX `forum_reports_status_created_at_idx`(`status`, `created_at`), INDEX `forum_reports_reporter_id_idx`(`reporter_id`), INDEX `forum_reports_topic_id_idx`(`topic_id`), INDEX `forum_reports_post_id_idx`(`post_id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE `forum_reports` ADD CONSTRAINT `forum_reports_reporter_id_fkey` FOREIGN KEY (`reporter_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE `forum_reports` ADD CONSTRAINT `forum_reports_topic_id_fkey` FOREIGN KEY (`topic_id`) REFERENCES `forum_topics`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AlterTable: notifications 增加新枚举值 ALTER TABLE `notifications` MODIFY COLUMN `type` ENUM('COMMENT_REPLY','COMMENT_LIKE','TOPIC_REPLY','MENTION','BEST_ANSWER','POST_LIKE','TOPIC_LIKE','SYSTEM') NOT NULL;