CREATE TABLE `t_contest` (
  `contest_id` varchar(63) NOT NULL COMMENT '主键id',
  `contest_name` varchar(127) NOT NULL COMMENT '赛事名称',
  `contest_type` varchar(31) NOT NULL COMMENT '赛事类型，字典：contest_type：individual/team',
  `contest_state` varchar(31) NOT NULL COMMENT '赛事状态（未发布： unpublished 已发布： published'）,
  `start_time` datetime NOT NULL COMMENT '赛事开始时间',
  `end_time` datetime NOT NULL COMMENT '赛事结束时间',
  `address` varchar(512) DEFAULT NULL COMMENT '线下地址',
  `content` text COMMENT '赛事详情',
  `contest_tenant` text COMMENT '赛事参赛范围（授权租户）',
  `cover_url` varchar(255) DEFAULT NULL COMMENT '封面url',
  `poster_url` varchar(255) DEFAULT NULL COMMENT '海报url',
  `contact_name` varchar(63) DEFAULT NULL COMMENT '联系人',
  `contact_phone` varchar(63) DEFAULT NULL COMMENT '联系电话',
  `contact_qrcode` varchar(255) DEFAULT NULL COMMENT '联系人二维码',
  `organizers` text DEFAULT NULL COMMENT '主办单位数组',
  `co_organizers` text DEFAULT NULL COMMENT '协办单位数组',
  `sponsors` text DEFAULT NULL COMMENT '赞助单位数组',
  `register_start_time` datetime NOT NULL COMMENT '报名开始时间',
  `register_end_time` datetime NOT NULL COMMENT '报名结束时间',
  `register_state` varchar(31) DEFAULT NULL COMMENT '报名任务状态，映射写死：启动(started)，已关闭(closed)',
  `submit_rule` varchar(31) NOT NULL DEFAULT 'once' COMMENT '提交规则：once/resubmit',
  `submit_start_time` datetime NOT NULL COMMENT '作品提交开始时间',
  `submit_end_time` datetime NOT NULL COMMENT '作品提交结束时间',
  `review_rule_id` varchar(63) DEFAULT NULL COMMENT '评审规则id',
  `review_start_time` datetime NOT NULL COMMENT '评审开始时间',
  `review_end_time` datetime NOT NULL COMMENT '评审结束时间',
  `result_publish_time` datetime DEFAULT NULL COMMENT '结果发布时间',
  `creator` varchar(63) NOT NULL DEFAULT '' COMMENT '创建人',
  `modifier` varchar(63) NOT NULL DEFAULT '' COMMENT '修改人',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `modify_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `valid_state` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '1' COMMENT '有效状态（1-有效，2-失效）',  
  PRIMARY KEY (`contest_id`) USING BTREE,
  UNIQUE KEY `uk_contest_name` (`contest_name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='赛事表';

CREATE TABLE `t_contest_attachment` (
  `id` varchar(63) NOT NULL,
  `contest_id` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '赛事id',
  `file_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件名',
  `file_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件路径',
  `format` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '文件类型（png,mp4）',
  `file_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '素材类型（image,video）',
  `size` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '文件大小',
  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '创建人',
  `modifier` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '修改人',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `modify_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `valid_state` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '1' COMMENT '有效状态（1-有效，2-失效）',  
   PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='赛事附件';

CREATE TABLE `t_contest_work` (
  `id` varchar(63) NOT NULL COMMENT '主键id',
  `tenant_key` varchar(127) NOT NULL COMMENT '作品所属租户键',
  `contest_id` varchar(63) NOT NULL COMMENT '赛事id',
  `entry_id` varchar(63) NOT NULL COMMENT '参赛报名实体id',
  `work_no` varchar(63) DEFAULT NULL COMMENT '作品编号（展示用唯一编号）',
  `title` varchar(255) NOT NULL COMMENT '作品标题',
  `description` text DEFAULT NULL COMMENT '作品说明',
  `files` json DEFAULT NULL COMMENT '作品文件列表（简易场景）',
  `version` int NOT NULL DEFAULT 1 COMMENT '作品版本号（递增）',
  `is_latest` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否最新版本：1是/0否',
  `status` varchar(31) NOT NULL DEFAULT 'submitted' COMMENT '作品状态：submitted/locked/reviewing/rejected/accepted',
  `submit_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '提交时间',
  `submitter_user_id` varchar(63) DEFAULT NULL COMMENT '提交人用户id',
  `submitter_account_no` varchar(127) DEFAULT NULL COMMENT '提交人账号（手机号/学号）',
  `submit_source` varchar(31) NOT NULL DEFAULT 'teacher' COMMENT '提交来源：teacher/student/team_leader',
  `preview_url` varchar(255) DEFAULT NULL COMMENT '作品预览URL（3D/视频）',
  `ai_model_meta` json DEFAULT NULL COMMENT 'AI建模元数据（模型类型、版本、参数）',
  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '创建人',
  `modifier` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '修改人',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `modify_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `valid_state` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '1' COMMENT '有效状态（1-有效，2-失效）',

  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_work_no` (`work_no`),
  KEY `idx_work_contest_latest` (`tenant_key`,`contest_id`,`is_latest`),
  KEY `idx_work_entry` (`entry_id`),
  KEY `idx_submit_filter` (`tenant_key`,`contest_id`,`submit_time`,`review_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='参赛作品';

CREATE TABLE `t_contest_work_attachment` (
  `id` varchar(63) NOT NULL COMMENT '主键id',
  `tenant_key` varchar(127) NOT NULL COMMENT '所属租户键',
  `contest_id` varchar(63) NOT NULL COMMENT '赛事id',
  `work_id` varchar(63) NOT NULL COMMENT '作品id',
  `file_name` varchar(255) NOT NULL COMMENT '文件名',
  `file_url` varchar(255) NOT NULL COMMENT '文件路径',
  `format` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '文件类型（png,mp4）',
  `file_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '素材类型（image,video）',
  `size` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '文件大小',
  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '创建人',
  `modifier` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '修改人',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `modify_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  
  PRIMARY KEY (`id`),
  KEY `idx_work_file` (`tenant_key`,`contest_id`,`work_id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='作品附件文件表';

CREATE TABLE `t_contest_work_score` (
  `id` varchar(63) NOT NULL COMMENT '主键id',
  `tenant_key` varchar(127) NOT NULL COMMENT '所属租户键',
  `contest_id` varchar(63) NOT NULL COMMENT '赛事id',
  `work_id` varchar(63) NOT NULL COMMENT '作品id',
  `assignment_id` varchar(63) NOT NULL COMMENT '分配记录id（关联t_contest_work_judge_assignment）',
  `judge_id` varchar(63) NOT NULL COMMENT '评委账号id',
  `judge_name` varchar(127) NOT NULL COMMENT '评委姓名',
  `dimension_scores` json NOT NULL COMMENT '各维度评分JSON，格式：{"dimension1": 85, "dimension2": 90, ...}',
  `total_score` decimal(10,2) NOT NULL COMMENT '总分（根据评审规则计算）',
  `comments` text DEFAULT NULL COMMENT '评语',
  `score_time` datetime NOT NULL COMMENT '评分时间',
  `creator` varchar(63) NOT NULL DEFAULT '' COMMENT '创建人',
  `modifier` varchar(63) NOT NULL DEFAULT '' COMMENT '修改人',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `modify_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `valid_state` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '1' COMMENT '有效状态（1-有效，2-失效）',
  PRIMARY KEY (`id`),
  KEY `idx_contest_work_final` (`contest_id`, `work_id`, `judge_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='作品评分表';

CREATE TABLE `t_contest_work_score` (
  `id` varchar(63) NOT NULL COMMENT '主键id',
  `tenant_key` varchar(127) NOT NULL COMMENT '所属租户键',
  `contest_id` varchar(63) NOT NULL COMMENT '赛事id',
  `work_id` varchar(63) NOT NULL COMMENT '作品id',
  `assignment_id` varchar(63) NOT NULL COMMENT '分配记录id（关联t_contest_work_judge_assignment）',
  `judge_id` varchar(63) NOT NULL COMMENT '评委账号id',
  `judge_name` varchar(127) NOT NULL COMMENT '评委姓名',
  `dimension_scores` json NOT NULL COMMENT '各维度评分JSON，格式：{"dimension1": 85, "dimension2": 90, ...}',
  `total_score` decimal(10,2) NOT NULL COMMENT '总分（根据评审规则计算）',
  `comments` text DEFAULT NULL COMMENT '评语',
  `score_time` datetime NOT NULL COMMENT '评分时间',
  `creator` varchar(63) NOT NULL DEFAULT '' COMMENT '创建人',
  `modifier` varchar(63) NOT NULL DEFAULT '' COMMENT '修改人',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `modify_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `valid_state` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '1' COMMENT '有效状态（1-有效，2-失效）',
  PRIMARY KEY (`id`),
  KEY `idx_contest_work_final` (`contest_id`, `work_id`, `judge_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='作品评分表';

CREATE TABLE `t_contest_registration` (
  `id` varchar(63) NOT NULL COMMENT '主键id',
  `contest_id` varchar(63) NOT NULL COMMENT '赛事id',
  `tenant_key` varchar(64) NOT NULL COMMENT '所属租户键（学校/机构）',
  `registration_type` varchar(20) DEFAULT NULL COMMENT '报名类型：individual（个人）/team（团队）',
  `team_id` varchar(64) DEFAULT NULL COMMENT '团队id',
  `team_name` varchar(255) DEFAULT NULL COMMENT '团队名称快照（团队赛）',
  `account_id` varchar(64) NOT NULL COMMENT '账号id',
  `account_no` varchar(64) NOT NULL COMMENT '报名账号（记录报名快照）',
  `account_name` varchar(100) NOT NULL COMMENT '报名账号名称（记录报名快照）',
  `role` varchar(63) DEFAULT NULL COMMENT '报名角色快照：leader（队长）/member（队员）/mentor（指导教师）',
  `registration_state` varchar(31) NOT NULL COMMENT '报名状态：pending（待审核）、passed（已通过）、rejected（已拒绝）、withdrawn（已撤回）',
  `registrant` varchar(63) DEFAULT NULL COMMENT '实际报名人（老师报名填老师账号）',
  `registration_time` datetime NOT NULL COMMENT '报名时间',
  `reason` varchar(1023) DEFAULT NULL COMMENT '审核理由',
  `operator` varchar(64) DEFAULT NULL COMMENT '审核人',
  `operation_date` datetime DEFAULT NULL COMMENT '审核时间',
  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '创建人',
  `modifier` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '修改人',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `modify_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='赛事报名人员记录表';

CREATE TABLE `t_contest_team` (
  `id` varchar(63) NOT NULL COMMENT '主键id',
  `tenant_key` varchar(127) NOT NULL COMMENT '团队所属租户键',
  `contest_id` varchar(63) NOT NULL COMMENT '赛事id',
  `team_name` varchar(127) NOT NULL COMMENT '团队名称（租户内唯一）',
  `leader_account_id` varchar(63) NOT NULL COMMENT '团队负责人用户id',
  `max_members` int DEFAULT NULL COMMENT '团队最大成员数',
  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '创建人',
  `modifier` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '修改人',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `modify_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `valid_state` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '1' COMMENT '有效状态（1-有效，2-失效）',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_team_name` (`tenant_key`,`contest_id`,`name`),
  KEY `idx_contest` (`contest_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='赛事团队';

CREATE TABLE `t_contest_team_member` (
  `id` varchar(63) NOT NULL COMMENT '主键id',
  `tenant_key` varchar(127) NOT NULL COMMENT '成员所属租户键',
  `team_id` varchar(63) NOT NULL COMMENT '团队id',
  `account_id` varchar(63) NOT NULL COMMENT '成员用户id',
  `role` varchar(31) NOT NULL DEFAULT 'member' COMMENT '成员角色：member/leader/mentor',
  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '创建人',
  `modifier` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '修改人',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `modify_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_member_once` (`tenant_key`,`team_id`,`account_id`),
  KEY `idx_team` (`team_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='团队成员';
