-- 评审模块重建表脚本（修复 V3 建表字段不全问题）
-- 执行时间：2026-04-07
-- 对齐实体：BizContestJudge, BizContestReviewRule, BizContestWorkJudgeAssignment, BizContestWorkScore, BizPresetComment
-- 使用 DROP + CREATE 确保表结构完整，因为评审模块尚未有生产数据

-- ============================================================
-- 1. 赛事评委表（对应实体 BizContestJudge，继承 BaseEntity）
-- ============================================================
DROP TABLE IF EXISTS t_biz_contest_judge;
CREATE TABLE t_biz_contest_judge (
    id              BIGINT       NOT NULL AUTO_INCREMENT,
    contest_id      BIGINT       NOT NULL COMMENT '赛事ID',
    judge_id        BIGINT       NOT NULL COMMENT '评委用户ID',
    specialty       VARCHAR(100)          DEFAULT NULL COMMENT '专业领域',
    weight          DECIMAL(3,2)          DEFAULT 1.00 COMMENT '评委权重 0-1',
    description     VARCHAR(500)          DEFAULT NULL COMMENT '评委描述',
    -- BaseEntity 审计字段
    create_by       VARCHAR(64)           DEFAULT NULL COMMENT '创建人账号',
    update_by       VARCHAR(64)           DEFAULT NULL COMMENT '更新人账号',
    deleted         TINYINT      NOT NULL DEFAULT 0 COMMENT '逻辑删除：0-未删除，1-已删除',
    creator         INT                    DEFAULT NULL COMMENT '创建人ID',
    modifier        INT                    DEFAULT NULL COMMENT '修改人ID',
    create_time     DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    modify_time     DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
    valid_state     TINYINT      NOT NULL DEFAULT 1 COMMENT '有效状态：1-有效，2-失效',
    PRIMARY KEY (id),
    INDEX idx_contest_id (contest_id),
    INDEX idx_judge_id (judge_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='赛事评委表';

-- ============================================================
-- 2. 评审规则表（对应实体 BizContestReviewRule，继承 BaseEntity）
-- ============================================================
DROP TABLE IF EXISTS t_biz_contest_review_rule;
CREATE TABLE t_biz_contest_review_rule (
    id                BIGINT       NOT NULL AUTO_INCREMENT,
    tenant_id         BIGINT                DEFAULT NULL COMMENT '租户ID',
    rule_name         VARCHAR(200) NOT NULL COMMENT '规则名称',
    rule_description  VARCHAR(500)          DEFAULT NULL COMMENT '规则描述',
    judge_count       INT          NOT NULL DEFAULT 3 COMMENT '评委数量',
    dimensions        JSON                  DEFAULT NULL COMMENT '评分维度 JSON [{name,percentage,description}]',
    calculation_rule  VARCHAR(50)  NOT NULL DEFAULT 'average' COMMENT '计算规则：average/remove_max_min/remove_min/max/weighted',
    -- BaseEntity 审计字段
    create_by       VARCHAR(64)           DEFAULT NULL COMMENT '创建人账号',
    update_by       VARCHAR(64)           DEFAULT NULL COMMENT '更新人账号',
    deleted         TINYINT      NOT NULL DEFAULT 0 COMMENT '逻辑删除：0-未删除，1-已删除',
    creator         INT                    DEFAULT NULL COMMENT '创建人ID',
    modifier        INT                    DEFAULT NULL COMMENT '修改人ID',
    create_time     DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    modify_time     DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
    valid_state     TINYINT      NOT NULL DEFAULT 1 COMMENT '有效状态：1-有效，2-失效',
    PRIMARY KEY (id),
    INDEX idx_tenant_id (tenant_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='评审规则表';

-- ============================================================
-- 3. 作品评委分配表（对应实体 BizContestWorkJudgeAssignment，不继承 BaseEntity）
-- 注意：该实体只有 id/creator/modifier/createTime/modifyTime，无 deleted/valid_state/create_by/update_by
-- ============================================================
DROP TABLE IF EXISTS t_biz_contest_work_judge_assignment;
CREATE TABLE t_biz_contest_work_judge_assignment (
    id               BIGINT    NOT NULL AUTO_INCREMENT,
    contest_id       BIGINT    NOT NULL COMMENT '赛事ID',
    work_id          BIGINT    NOT NULL COMMENT '作品ID',
    judge_id         BIGINT    NOT NULL COMMENT '评委用户ID',
    assignment_time  DATETIME           DEFAULT NULL COMMENT '分配时间',
    status           VARCHAR(20) NOT NULL DEFAULT 'assigned' COMMENT '状态：assigned/reviewing/completed',
    creator          INT                DEFAULT NULL COMMENT '创建人ID',
    modifier         INT                DEFAULT NULL COMMENT '修改人ID',
    create_time      DATETIME  NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    modify_time      DATETIME  NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
    PRIMARY KEY (id),
    INDEX idx_contest_work (contest_id, work_id),
    INDEX idx_judge_status (judge_id, status),
    UNIQUE INDEX uk_contest_work_judge (contest_id, work_id, judge_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='作品评委分配表';

-- ============================================================
-- 4. 作品评分表（对应实体 BizContestWorkScore，继承 BaseEntity）
-- ============================================================
DROP TABLE IF EXISTS t_biz_contest_work_score;
CREATE TABLE t_biz_contest_work_score (
    id                BIGINT        NOT NULL AUTO_INCREMENT,
    tenant_id         BIGINT                 DEFAULT NULL COMMENT '租户ID',
    contest_id        BIGINT        NOT NULL COMMENT '赛事ID',
    work_id           BIGINT        NOT NULL COMMENT '作品ID',
    assignment_id     BIGINT                 DEFAULT NULL COMMENT '分配记录ID',
    judge_id          BIGINT        NOT NULL COMMENT '评委用户ID',
    judge_name        VARCHAR(100)           DEFAULT NULL COMMENT '评委姓名',
    dimension_scores  JSON                   DEFAULT NULL COMMENT '维度评分 JSON [{dimension,score}]',
    total_score       DECIMAL(10,2)          DEFAULT NULL COMMENT '总分',
    comments          TEXT                    DEFAULT NULL COMMENT '评语',
    score_time        DATETIME               DEFAULT NULL COMMENT '评分时间',
    -- BaseEntity 审计字段
    create_by       VARCHAR(64)           DEFAULT NULL COMMENT '创建人账号',
    update_by       VARCHAR(64)           DEFAULT NULL COMMENT '更新人账号',
    deleted         TINYINT      NOT NULL DEFAULT 0 COMMENT '逻辑删除：0-未删除，1-已删除',
    creator         INT                    DEFAULT NULL COMMENT '创建人ID',
    modifier        INT                    DEFAULT NULL COMMENT '修改人ID',
    create_time     DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    modify_time     DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
    valid_state     TINYINT      NOT NULL DEFAULT 1 COMMENT '有效状态：1-有效，2-失效',
    PRIMARY KEY (id),
    INDEX idx_work_id (work_id),
    INDEX idx_contest_id (contest_id),
    INDEX idx_judge_id (judge_id),
    INDEX idx_assignment_id (assignment_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='作品评分表';

-- ============================================================
-- 5. 预设评语表（对应实体 BizPresetComment，继承 BaseEntity）
-- ============================================================
DROP TABLE IF EXISTS t_biz_preset_comment;
CREATE TABLE t_biz_preset_comment (
    id              BIGINT        NOT NULL AUTO_INCREMENT,
    contest_id      BIGINT                 DEFAULT NULL COMMENT '赛事ID（null 表示全局）',
    judge_id        BIGINT                 DEFAULT NULL COMMENT '评委ID（null 表示通用）',
    content         VARCHAR(1000) NOT NULL COMMENT '评语文本',
    category        VARCHAR(50)            DEFAULT NULL COMMENT '评语分类',
    score           DECIMAL(10,2)          DEFAULT NULL COMMENT '关联分数',
    sort_order      INT                    DEFAULT 0 COMMENT '排序',
    use_count       INT           NOT NULL DEFAULT 0 COMMENT '使用次数',
    -- BaseEntity 审计字段
    create_by       VARCHAR(64)           DEFAULT NULL COMMENT '创建人账号',
    update_by       VARCHAR(64)           DEFAULT NULL COMMENT '更新人账号',
    deleted         TINYINT      NOT NULL DEFAULT 0 COMMENT '逻辑删除：0-未删除，1-已删除',
    creator         INT                    DEFAULT NULL COMMENT '创建人ID',
    modifier        INT                    DEFAULT NULL COMMENT '修改人ID',
    create_time     DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    modify_time     DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
    valid_state     TINYINT      NOT NULL DEFAULT 1 COMMENT '有效状态：1-有效，2-失效',
    PRIMARY KEY (id),
    INDEX idx_contest_id (contest_id),
    INDEX idx_judge_id (judge_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='预设评语表';
