From 633e46e663b34d2ec58762d07931dcb80a82c206 Mon Sep 17 00:00:00 2001 From: zhonghua Date: Tue, 7 Apr 2026 15:09:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=AF=84=E5=AE=A1?= =?UTF-8?q?=E6=A8=A1=E5=9D=97Flyway=E8=BF=81=E7=A7=BB=E8=84=9A=E6=9C=ACV3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 使用 DROP TABLE IF EXISTS + CREATE TABLE 确保表结构完整对齐实体类: - t_biz_contest_judge(评委表,继承BaseEntity) - t_biz_contest_review_rule(评审规则表,继承BaseEntity) - t_biz_contest_work_judge_assignment(分配表,独立字段) - t_biz_contest_work_score(评分表,继承BaseEntity) - t_biz_preset_comment(预设评语表,继承BaseEntity) Co-Authored-By: Claude Opus 4.6 --- .../db/migration/V3__create_review_tables.sql | 135 ++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 backend-java/src/main/resources/db/migration/V3__create_review_tables.sql diff --git a/backend-java/src/main/resources/db/migration/V3__create_review_tables.sql b/backend-java/src/main/resources/db/migration/V3__create_review_tables.sql new file mode 100644 index 0000000..069ce94 --- /dev/null +++ b/backend-java/src/main/resources/db/migration/V3__create_review_tables.sql @@ -0,0 +1,135 @@ +-- 评审模块建表脚本 +-- 执行时间: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='预设评语表';