Files
ai_game/server/sql/schema_v2.sql

567 lines
19 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ============================================
-- 星域故事汇 完整数据库结构 V2.0
-- 支持AI改写/续写/创作、UGC、社交、计费
-- ============================================
CREATE DATABASE IF NOT EXISTS stardom_story DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE stardom_story;
-- ============================================
-- 一、用户体系
-- ============================================
-- 用户主表
CREATE TABLE users (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
openid VARCHAR(100) UNIQUE NOT NULL COMMENT '微信openid',
unionid VARCHAR(100) DEFAULT '' COMMENT '微信unionid',
nickname VARCHAR(100) DEFAULT '' COMMENT '昵称',
avatar_url VARCHAR(500) DEFAULT '' COMMENT '头像',
gender TINYINT DEFAULT 0 COMMENT '0未知 1男 2女',
phone VARCHAR(20) DEFAULT '' COMMENT '手机号',
level INT DEFAULT 1 COMMENT '用户等级',
exp INT DEFAULT 0 COMMENT '经验值',
vip_type TINYINT DEFAULT 0 COMMENT '0普通 1月卡 2年卡 3永久',
vip_expire_at DATETIME DEFAULT NULL COMMENT 'VIP过期时间',
coin_balance INT DEFAULT 0 COMMENT '金币余额',
is_creator BOOLEAN DEFAULT FALSE COMMENT '是否认证创作者',
is_banned BOOLEAN DEFAULT FALSE COMMENT '是否封禁',
ban_reason VARCHAR(255) DEFAULT '',
last_login_at DATETIME DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_openid (openid),
INDEX idx_unionid (unionid),
INDEX idx_creator (is_creator)
) ENGINE=InnoDB COMMENT='用户主表';
-- 用户统计表(高频更新分离)
CREATE TABLE user_stats (
user_id BIGINT PRIMARY KEY,
total_play_count INT DEFAULT 0 COMMENT '总游玩次数',
total_endings INT DEFAULT 0 COMMENT '解锁结局数',
total_creations INT DEFAULT 0 COMMENT '创作数',
total_ai_uses INT DEFAULT 0 COMMENT 'AI使用次数',
followers_count INT DEFAULT 0 COMMENT '粉丝数',
following_count INT DEFAULT 0 COMMENT '关注数',
likes_received INT DEFAULT 0 COMMENT '获赞数',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
) ENGINE=InnoDB COMMENT='用户统计表';
-- 用户关注关系表
CREATE TABLE user_follows (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
follower_id BIGINT NOT NULL COMMENT '关注者',
following_id BIGINT NOT NULL COMMENT '被关注者',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uk_follow (follower_id, following_id),
INDEX idx_follower (follower_id),
INDEX idx_following (following_id)
) ENGINE=InnoDB COMMENT='用户关注关系';
-- ============================================
-- 二、故事内容体系
-- ============================================
-- 故事主表(官方+UGC统一
CREATE TABLE stories (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
author_id BIGINT DEFAULT 0 COMMENT '作者ID0为官方',
title VARCHAR(100) NOT NULL COMMENT '标题',
cover_url VARCHAR(500) DEFAULT '' COMMENT '封面',
description TEXT COMMENT '简介',
category VARCHAR(50) NOT NULL COMMENT '分类',
tags VARCHAR(255) DEFAULT '' COMMENT '标签,逗号分隔',
word_count INT DEFAULT 0 COMMENT '字数',
node_count INT DEFAULT 0 COMMENT '节点数',
ending_count INT DEFAULT 0 COMMENT '结局数',
difficulty TINYINT DEFAULT 2 COMMENT '难度 1简单 2普通 3困难',
-- 来源标记
source_type ENUM('official','ugc','ai_generated','ai_assisted') DEFAULT 'official' COMMENT '来源类型',
base_story_id BIGINT DEFAULT NULL COMMENT '基于哪个故事改编',
ai_generation_id BIGINT DEFAULT NULL COMMENT '关联的AI生成记录',
-- 状态控制
status TINYINT DEFAULT 0 COMMENT '0草稿 1审核中 2已发布 3已下架 4已拒绝',
review_note VARCHAR(500) DEFAULT '' COMMENT '审核备注',
is_featured BOOLEAN DEFAULT FALSE COMMENT '是否精选',
is_hot BOOLEAN DEFAULT FALSE COMMENT '是否热门',
is_new BOOLEAN DEFAULT TRUE COMMENT '是否新作',
-- 付费设置
price_type TINYINT DEFAULT 0 COMMENT '0免费 1付费 2广告解锁',
price_coin INT DEFAULT 0 COMMENT '价格(金币)',
free_chapters INT DEFAULT 0 COMMENT '免费章节数',
-- 统计(读多写少可放主表)
play_count INT DEFAULT 0,
like_count INT DEFAULT 0,
collect_count INT DEFAULT 0,
comment_count INT DEFAULT 0,
share_count INT DEFAULT 0,
published_at DATETIME DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_author (author_id),
INDEX idx_category (category),
INDEX idx_status (status),
INDEX idx_source (source_type),
INDEX idx_featured (is_featured),
INDEX idx_play (play_count),
INDEX idx_created (created_at)
) ENGINE=InnoDB COMMENT='故事主表';
-- 故事节点表
CREATE TABLE story_nodes (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
story_id BIGINT NOT NULL,
node_key VARCHAR(50) NOT NULL COMMENT '节点标识',
parent_node_key VARCHAR(50) DEFAULT '' COMMENT '父节点(用于树形结构)',
chapter_num INT DEFAULT 1 COMMENT '章节号',
-- 内容
content TEXT NOT NULL COMMENT '文本内容',
speaker VARCHAR(50) DEFAULT '' COMMENT '说话角色',
emotion VARCHAR(30) DEFAULT '' COMMENT '情绪标签',
-- 媒体资源
background_image VARCHAR(500) DEFAULT '',
character_images JSON DEFAULT NULL COMMENT '角色立绘数组',
bgm VARCHAR(500) DEFAULT '',
sound_effect VARCHAR(500) DEFAULT '',
voice_url VARCHAR(500) DEFAULT '' COMMENT '语音URL',
-- 结局设置
is_ending BOOLEAN DEFAULT FALSE,
ending_name VARCHAR(100) DEFAULT '',
ending_type ENUM('good','bad','normal','hidden','secret') DEFAULT 'normal',
ending_score INT DEFAULT 0,
ending_cg VARCHAR(500) DEFAULT '' COMMENT '结局CG图',
-- AI标记
is_ai_generated BOOLEAN DEFAULT FALSE,
ai_generation_id BIGINT DEFAULT NULL,
sort_order INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_story (story_id),
INDEX idx_node_key (story_id, node_key),
INDEX idx_chapter (story_id, chapter_num),
FOREIGN KEY (story_id) REFERENCES stories(id) ON DELETE CASCADE
) ENGINE=InnoDB COMMENT='故事节点表';
-- 故事选项表
CREATE TABLE story_choices (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
story_id BIGINT NOT NULL,
node_id BIGINT NOT NULL,
text VARCHAR(200) NOT NULL COMMENT '选项文本',
next_node_key VARCHAR(50) NOT NULL,
-- 条件解锁
condition_type ENUM('none','item','attr','ending','vip','ad') DEFAULT 'none',
condition_value VARCHAR(100) DEFAULT '' COMMENT '条件值JSON',
-- 效果
effect_type ENUM('none','attr','item','achievement') DEFAULT 'none',
effect_value VARCHAR(100) DEFAULT '' COMMENT '效果值JSON',
-- AI标记
is_ai_generated BOOLEAN DEFAULT FALSE,
sort_order INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_story (story_id),
INDEX idx_node (node_id),
FOREIGN KEY (story_id) REFERENCES stories(id) ON DELETE CASCADE,
FOREIGN KEY (node_id) REFERENCES story_nodes(id) ON DELETE CASCADE
) ENGINE=InnoDB COMMENT='故事选项表';
-- 故事版本表(支持版本回退)
CREATE TABLE story_versions (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
story_id BIGINT NOT NULL,
version_num INT NOT NULL COMMENT '版本号',
nodes_snapshot LONGTEXT NOT NULL COMMENT '节点快照JSON',
change_log VARCHAR(500) DEFAULT '' COMMENT '变更说明',
created_by BIGINT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uk_version (story_id, version_num),
INDEX idx_story (story_id)
) ENGINE=InnoDB COMMENT='故事版本表';
-- ============================================
-- 三、AI生成体系
-- ============================================
-- AI生成记录表
CREATE TABLE ai_generations (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
story_id BIGINT DEFAULT NULL COMMENT '关联故事',
-- 生成类型
gen_type ENUM('rewrite_ending','rewrite_node','continue','create_outline','create_full','polish','translate') NOT NULL,
-- 输入
source_node_key VARCHAR(50) DEFAULT '',
source_content TEXT COMMENT '原内容',
user_prompt TEXT NOT NULL COMMENT '用户指令',
system_prompt TEXT COMMENT '系统提示词',
-- 输出
generated_content LONGTEXT COMMENT '生成内容',
generated_nodes JSON COMMENT '生成的节点结构',
-- 模型信息
model_provider VARCHAR(30) DEFAULT '' COMMENT 'openai/anthropic/local',
model_name VARCHAR(50) DEFAULT '',
temperature DECIMAL(3,2) DEFAULT 0.70,
-- 消耗统计
input_tokens INT DEFAULT 0,
output_tokens INT DEFAULT 0,
total_tokens INT DEFAULT 0,
latency_ms INT DEFAULT 0 COMMENT '响应耗时',
cost_cents INT DEFAULT 0 COMMENT '成本(分)',
-- 状态
status TINYINT DEFAULT 1 COMMENT '0失败 1成功 2处理中',
error_code VARCHAR(50) DEFAULT '',
error_msg TEXT,
-- 用户操作
is_accepted BOOLEAN DEFAULT NULL COMMENT '用户是否采纳',
is_edited BOOLEAN DEFAULT FALSE COMMENT '是否编辑后使用',
is_published BOOLEAN DEFAULT FALSE COMMENT '是否发布',
-- 评价
user_rating TINYINT DEFAULT NULL COMMENT '1-5星评价',
user_feedback TEXT COMMENT '用户反馈',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_user (user_id),
INDEX idx_story (story_id),
INDEX idx_type (gen_type),
INDEX idx_status (status),
INDEX idx_created (created_at)
) ENGINE=InnoDB COMMENT='AI生成记录表';
-- AI提示词模板表
CREATE TABLE ai_prompt_templates (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
gen_type VARCHAR(30) NOT NULL,
category VARCHAR(50) DEFAULT '' COMMENT '适用分类',
system_prompt TEXT NOT NULL,
user_prompt_template TEXT NOT NULL COMMENT '用户提示词模板',
variables JSON COMMENT '可用变量说明',
model_recommend VARCHAR(50) DEFAULT '',
temperature_recommend DECIMAL(3,2) DEFAULT 0.70,
is_active BOOLEAN DEFAULT TRUE,
sort_order INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_type (gen_type),
INDEX idx_active (is_active)
) ENGINE=InnoDB COMMENT='AI提示词模板';
-- ============================================
-- 四、用户行为体系
-- ============================================
-- 用户游玩进度表
CREATE TABLE user_progress (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
story_id BIGINT NOT NULL,
current_node_key VARCHAR(50) DEFAULT 'start',
-- 状态
status TINYINT DEFAULT 0 COMMENT '0进行中 1已完成',
play_count INT DEFAULT 1,
play_duration INT DEFAULT 0 COMMENT '游玩时长(秒)',
-- 达成结局
endings_reached JSON COMMENT '达成的结局列表',
best_ending_score INT DEFAULT 0,
-- 存档数据
save_data JSON COMMENT '游戏存档(属性/道具等)',
choices_history JSON COMMENT '选择历史',
-- 互动
is_liked BOOLEAN DEFAULT FALSE,
is_collected BOOLEAN DEFAULT FALSE,
first_play_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
last_play_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
completed_at DATETIME DEFAULT NULL,
UNIQUE KEY uk_user_story (user_id, story_id),
INDEX idx_user (user_id),
INDEX idx_story (story_id),
INDEX idx_status (status)
) ENGINE=InnoDB COMMENT='用户游玩进度';
-- 用户结局收集表
CREATE TABLE user_endings (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
story_id BIGINT NOT NULL,
node_id BIGINT NOT NULL,
ending_name VARCHAR(100) NOT NULL,
ending_type VARCHAR(20) DEFAULT 'normal',
ending_score INT DEFAULT 0,
choices_path JSON COMMENT '达成路径',
play_duration INT DEFAULT 0 COMMENT '本次游玩时长',
unlocked_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uk_user_ending (user_id, story_id, ending_name),
INDEX idx_user (user_id),
INDEX idx_story (story_id)
) ENGINE=InnoDB COMMENT='用户结局收集';
-- 用户收藏表
CREATE TABLE user_collections (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
story_id BIGINT NOT NULL,
folder_name VARCHAR(50) DEFAULT '默认' COMMENT '收藏夹',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uk_user_story (user_id, story_id),
INDEX idx_user (user_id),
INDEX idx_folder (user_id, folder_name)
) ENGINE=InnoDB COMMENT='用户收藏';
-- 评论表
CREATE TABLE comments (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
story_id BIGINT NOT NULL,
parent_id BIGINT DEFAULT NULL COMMENT '父评论ID',
reply_to_user_id BIGINT DEFAULT NULL COMMENT '回复谁',
content TEXT NOT NULL,
like_count INT DEFAULT 0,
status TINYINT DEFAULT 1 COMMENT '0隐藏 1正常 2置顶',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_story (story_id),
INDEX idx_user (user_id),
INDEX idx_parent (parent_id)
) ENGINE=InnoDB COMMENT='评论表';
-- ============================================
-- 五、经济体系
-- ============================================
-- 用户AI配额表
CREATE TABLE user_ai_quota (
user_id BIGINT PRIMARY KEY,
-- 每日免费额度
daily_free_total INT DEFAULT 5 COMMENT '每日免费总次数',
daily_free_used INT DEFAULT 0 COMMENT '今日已用',
daily_reset_date DATE COMMENT '重置日期',
-- 购买/赠送额度
purchased_quota INT DEFAULT 0 COMMENT '购买的次数',
gift_quota INT DEFAULT 0 COMMENT '赠送的次数',
-- VIP额度
vip_daily_bonus INT DEFAULT 0 COMMENT 'VIP每日额外次数',
-- 总使用统计
total_used INT DEFAULT 0,
total_tokens_used BIGINT DEFAULT 0,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB COMMENT='用户AI配额';
-- 金币流水表
CREATE TABLE coin_transactions (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
amount INT NOT NULL COMMENT '正为收入负为支出',
balance_after INT NOT NULL COMMENT '交易后余额',
tx_type ENUM('recharge','purchase','reward','refund','gift','withdraw') NOT NULL,
ref_type VARCHAR(30) DEFAULT '' COMMENT '关联类型',
ref_id BIGINT DEFAULT NULL COMMENT '关联ID',
description VARCHAR(255) DEFAULT '',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_user (user_id),
INDEX idx_type (tx_type),
INDEX idx_created (created_at)
) ENGINE=InnoDB COMMENT='金币流水';
-- 订单表
CREATE TABLE orders (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
order_no VARCHAR(64) UNIQUE NOT NULL,
user_id BIGINT NOT NULL,
product_type ENUM('coin','vip','story','ai_quota') NOT NULL,
product_id VARCHAR(50) DEFAULT '',
product_name VARCHAR(100) NOT NULL,
amount_cents INT NOT NULL COMMENT '金额(分)',
pay_channel VARCHAR(30) DEFAULT '' COMMENT '支付渠道',
status TINYINT DEFAULT 0 COMMENT '0待支付 1已支付 2已取消 3已退款',
paid_at DATETIME DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_user (user_id),
INDEX idx_order_no (order_no),
INDEX idx_status (status)
) ENGINE=InnoDB COMMENT='订单表';
-- ============================================
-- 六、运营与审核
-- ============================================
-- 内容审核表
CREATE TABLE content_reviews (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
content_type ENUM('story','comment','ai_generation','avatar','nickname') NOT NULL,
content_id BIGINT NOT NULL,
user_id BIGINT NOT NULL COMMENT '提交者',
content_snapshot TEXT COMMENT '内容快照',
-- 机审
auto_result TINYINT DEFAULT NULL COMMENT '0通过 1疑似 2违规',
auto_labels JSON COMMENT '机审标签',
auto_score DECIMAL(5,2) DEFAULT NULL,
-- 人审
review_status TINYINT DEFAULT 0 COMMENT '0待审 1通过 2拒绝',
reviewer_id BIGINT DEFAULT NULL,
review_note VARCHAR(500) DEFAULT '',
reviewed_at DATETIME DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_type_status (content_type, review_status),
INDEX idx_user (user_id),
INDEX idx_created (created_at)
) ENGINE=InnoDB COMMENT='内容审核表';
-- 举报表
CREATE TABLE reports (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
reporter_id BIGINT NOT NULL,
target_type ENUM('story','comment','user') NOT NULL,
target_id BIGINT NOT NULL,
reason_type VARCHAR(30) NOT NULL COMMENT '举报类型',
reason_detail TEXT,
status TINYINT DEFAULT 0 COMMENT '0待处理 1已处理 2已忽略',
handler_id BIGINT DEFAULT NULL,
handle_result VARCHAR(255) DEFAULT '',
handled_at DATETIME DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_target (target_type, target_id),
INDEX idx_status (status)
) ENGINE=InnoDB COMMENT='举报表';
-- ============================================
-- 七、数据分析
-- ============================================
-- 行为埋点表(按天分区)
CREATE TABLE event_logs (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT DEFAULT NULL,
device_id VARCHAR(100) DEFAULT '',
session_id VARCHAR(64) DEFAULT '',
event_name VARCHAR(50) NOT NULL,
event_params JSON,
page_name VARCHAR(50) DEFAULT '',
ref_page VARCHAR(50) DEFAULT '',
platform VARCHAR(20) DEFAULT '' COMMENT 'weapp/h5/app',
app_version VARCHAR(20) DEFAULT '',
os VARCHAR(20) DEFAULT '',
device_model VARCHAR(50) DEFAULT '',
ip VARCHAR(50) DEFAULT '',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
event_date DATE AS (DATE(created_at)) STORED,
INDEX idx_user (user_id),
INDEX idx_event (event_name),
INDEX idx_date (event_date),
INDEX idx_session (session_id)
) ENGINE=InnoDB COMMENT='行为埋点表'
PARTITION BY RANGE (TO_DAYS(event_date)) (
PARTITION p_default VALUES LESS THAN MAXVALUE
);
-- AI调用统计日表
CREATE TABLE ai_daily_stats (
id INT PRIMARY KEY AUTO_INCREMENT,
stat_date DATE NOT NULL,
gen_type VARCHAR(30) NOT NULL,
model_name VARCHAR(50) DEFAULT '',
call_count INT DEFAULT 0,
success_count INT DEFAULT 0,
fail_count INT DEFAULT 0,
total_input_tokens BIGINT DEFAULT 0,
total_output_tokens BIGINT DEFAULT 0,
total_cost_cents INT DEFAULT 0,
avg_latency_ms INT DEFAULT 0,
p99_latency_ms INT DEFAULT 0,
unique_users INT DEFAULT 0,
UNIQUE KEY uk_date_type (stat_date, gen_type, model_name),
INDEX idx_date (stat_date)
) ENGINE=InnoDB COMMENT='AI调用日统计';
-- ============================================
-- 八、系统配置
-- ============================================
-- 分类配置表
CREATE TABLE categories (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
icon VARCHAR(100) DEFAULT '',
color VARCHAR(20) DEFAULT '',
sort_order INT DEFAULT 0,
is_active BOOLEAN DEFAULT TRUE,
story_count INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB COMMENT='分类配置';
-- 系统配置表
CREATE TABLE system_configs (
config_key VARCHAR(100) PRIMARY KEY,
config_value TEXT NOT NULL,
description VARCHAR(255) DEFAULT '',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB COMMENT='系统配置';
-- 敏感词表
CREATE TABLE sensitive_words (
id INT PRIMARY KEY AUTO_INCREMENT,
word VARCHAR(50) NOT NULL,
category VARCHAR(30) DEFAULT 'general',
level TINYINT DEFAULT 1 COMMENT '1警告 2禁止',
is_active BOOLEAN DEFAULT TRUE,
UNIQUE KEY uk_word (word),
INDEX idx_category (category)
) ENGINE=InnoDB COMMENT='敏感词表';