-- 评价 / 对比功能所需结构(在已有库上增量执行;若列或表已存在会报错,可忽略对应语句) -- MySQL 5.7+ / 8.0 -- 1. prompt_history 扩展字段(模型 history_models.PromptHistory 依赖) -- 分两条执行:避免 AFTER 依赖列名/顺序;若某列已存在会报 Duplicate column,可忽略该条 ALTER TABLE prompt_history ADD COLUMN comparison_group_id VARCHAR(64) NULL COMMENT '对比组ID'; ALTER TABLE prompt_history ADD COLUMN is_comparison_enabled TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否参与对比'; ALTER TABLE prompt_history ADD INDEX idx_comparison_group (comparison_group_id); -- 若上面因「列已存在」失败,说明已执行过,可继续执行下面建表。 -- 2. 评价表(与 evaluation_models.PromptEvaluation 一致) CREATE TABLE IF NOT EXISTS prompt_evaluation ( id INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', history_id INT NOT NULL COMMENT '历史记录ID', user_id INT NOT NULL COMMENT '评价者用户ID', clarity_rating TINYINT NULL COMMENT '清晰度评分', specificity_rating TINYINT NULL COMMENT '具体性评分', effectiveness_rating TINYINT NULL COMMENT '有效性评分', professionalism_rating TINYINT NULL COMMENT '专业性评分', completeness_rating TINYINT NULL COMMENT '完整性评分', is_best_version TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否为最佳版本', comparison_group_id VARCHAR(64) NULL COMMENT '对比组ID', overall_rating TINYINT NULL COMMENT '综合评分', comments TEXT NULL COMMENT '评价意见', created_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', INDEX idx_history_id (history_id), INDEX idx_user_id (user_id), INDEX idx_comparison_group (comparison_group_id), CONSTRAINT fk_pe_history FOREIGN KEY (history_id) REFERENCES prompt_history(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='提示词评价表'; -- 3. 对比组表 CREATE TABLE IF NOT EXISTS comparison_group ( id INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', group_id VARCHAR(64) NOT NULL COMMENT '对比组ID', user_id INT NOT NULL COMMENT '创建者用户ID', name VARCHAR(100) NULL COMMENT '对比组名称', description TEXT NULL COMMENT '对比组描述', is_public TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否公开', created_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', UNIQUE KEY uk_group_id (group_id), INDEX idx_user_id (user_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='对比组表';