-- ============================================= -- 编排调度功能 - 数据库表创建脚本 -- 创建时间: 2025-11-30 -- 说明: 创建编排调度相关的5张表 -- ============================================= -- 1. 编排方案表 CREATE TABLE IF NOT EXISTS martial_schedule_plan ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', competition_id BIGINT NOT NULL COMMENT '赛事ID', plan_name VARCHAR(100) COMMENT '方案名称', plan_type TINYINT DEFAULT 1 COMMENT '方案类型: 1-自动生成, 2-手动调整', status TINYINT DEFAULT 0 COMMENT '状态: 0-草稿, 1-已确认, 2-已发布', -- 编排参数 start_time DATETIME COMMENT '比赛开始时间', end_time DATETIME COMMENT '比赛结束时间', venue_count INT DEFAULT 0 COMMENT '场地数量', time_slot_duration INT DEFAULT 30 COMMENT '时间段长度(分钟)', -- 规则配置 rules JSON COMMENT '编排规则配置', -- 统计信息 total_matches INT DEFAULT 0 COMMENT '总场次', conflict_count INT DEFAULT 0 COMMENT '冲突数量', -- 审计字段 created_by BIGINT COMMENT '创建人', approved_by BIGINT COMMENT '审批人', approved_time DATETIME COMMENT '审批时间', published_time DATETIME COMMENT '发布时间', -- 标准字段 create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', is_deleted TINYINT DEFAULT 0 COMMENT '是否删除: 0-否, 1-是', INDEX idx_competition (competition_id), INDEX idx_status (status), INDEX idx_create_time (create_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='编排方案表'; -- 2. 时间槽表 CREATE TABLE IF NOT EXISTS martial_schedule_slot ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', plan_id BIGINT NOT NULL COMMENT '编排方案ID', venue_id BIGINT COMMENT '场地ID', -- 时间信息 slot_date DATE COMMENT '比赛日期', start_time TIME COMMENT '开始时间', end_time TIME COMMENT '结束时间', duration INT DEFAULT 0 COMMENT '时长(分钟)', -- 项目信息 project_id BIGINT COMMENT '项目ID', category VARCHAR(50) COMMENT '组别', -- 排序 sort_order INT DEFAULT 0 COMMENT '排序号', -- 状态 status TINYINT DEFAULT 0 COMMENT '状态: 0-未开始, 1-进行中, 2-已完成', -- 标准字段 create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', is_deleted TINYINT DEFAULT 0 COMMENT '是否删除: 0-否, 1-是', INDEX idx_plan (plan_id), INDEX idx_venue (venue_id), INDEX idx_time (slot_date, start_time), INDEX idx_project (project_id), INDEX idx_status (status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='编排时间槽表'; -- 3. 运动员-时间槽关联表 CREATE TABLE IF NOT EXISTS martial_schedule_athlete_slot ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', slot_id BIGINT NOT NULL COMMENT '时间槽ID', athlete_id BIGINT NOT NULL COMMENT '运动员ID', -- 出场信息 appearance_order INT DEFAULT 0 COMMENT '出场顺序', estimated_time TIME COMMENT '预计出场时间', -- 状态 check_in_status TINYINT DEFAULT 0 COMMENT '签到状态: 0-未签到, 1-已签到', performance_status TINYINT DEFAULT 0 COMMENT '比赛状态: 0-未开始, 1-进行中, 2-已完成', -- 调整记录 is_adjusted TINYINT DEFAULT 0 COMMENT '是否调整过', adjust_note VARCHAR(200) COMMENT '调整备注', -- 标准字段 create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', is_deleted TINYINT DEFAULT 0 COMMENT '是否删除: 0-否, 1-是', INDEX idx_slot (slot_id), INDEX idx_athlete (athlete_id), INDEX idx_order (appearance_order), UNIQUE KEY uk_slot_athlete (slot_id, athlete_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运动员时间槽关联表'; -- 4. 编排冲突记录表 CREATE TABLE IF NOT EXISTS martial_schedule_conflict ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', plan_id BIGINT NOT NULL COMMENT '编排方案ID', conflict_type TINYINT COMMENT '冲突类型: 1-时间冲突, 2-场地冲突, 3-规则违反', severity TINYINT COMMENT '严重程度: 1-警告, 2-错误, 3-致命', -- 冲突详情 entity_type VARCHAR(20) COMMENT '实体类型: athlete/venue/slot', entity_id BIGINT COMMENT '实体ID', conflict_description TEXT COMMENT '冲突描述', -- 解决状态 is_resolved TINYINT DEFAULT 0 COMMENT '是否已解决', resolve_method VARCHAR(100) COMMENT '解决方法', -- 标准字段 create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', is_deleted TINYINT DEFAULT 0 COMMENT '是否删除: 0-否, 1-是', INDEX idx_plan (plan_id), INDEX idx_type (conflict_type), INDEX idx_resolved (is_resolved) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='编排冲突记录表'; -- 5. 编排调整日志表 CREATE TABLE IF NOT EXISTS martial_schedule_adjustment_log ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', plan_id BIGINT NOT NULL COMMENT '编排方案ID', -- 操作信息 action_type VARCHAR(20) COMMENT '操作类型: move/swap/delete/insert', operator_id BIGINT COMMENT '操作人ID', operator_name VARCHAR(50) COMMENT '操作人姓名', operator_role VARCHAR(20) COMMENT '操作人角色: admin/referee', -- 变更详情 before_data JSON COMMENT '变更前数据', after_data JSON COMMENT '变更后数据', reason VARCHAR(200) COMMENT '调整原因', -- 时间 action_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间', INDEX idx_plan (plan_id), INDEX idx_operator (operator_id), INDEX idx_time (action_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='编排调整日志表'; -- ============================================= -- 数据验证查询 -- ============================================= -- 验证表是否创建成功 SELECT TABLE_NAME, TABLE_COMMENT, TABLE_ROWS, CREATE_TIME FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'martial_db' AND TABLE_NAME LIKE 'martial_schedule%' ORDER BY TABLE_NAME;