-- ============================================= -- DataMate 任务协调模块 - 初始化脚本 -- 说明: -- 1) 创建 t_task_meta 表(任务拆分与分配元数据) -- 2) 创建 t_task_assignment_log 表(分配操作日志) -- 3) 在 t_auth_permissions 中插入任务协调权限 -- 4) 将权限绑定到 ROLE_ADMIN 和 ROLE_DATA_EDITOR -- 5) 本脚本按"幂等"方式编写,可重复执行 -- ============================================= USE datamate; -- ============================================= -- 1) t_task_meta - 任务拆分与分配元数据表 -- ============================================= CREATE TABLE IF NOT EXISTS t_task_meta ( id VARCHAR(36) PRIMARY KEY COMMENT '任务元ID (UUID)', parent_id VARCHAR(36) NULL COMMENT '父任务ID,顶层任务为NULL', module VARCHAR(50) NOT NULL COMMENT '所属模块: ANNOTATION/CLEANING/EVALUATION/SYNTHESIS/COLLECTION/RATIO', ref_task_id VARCHAR(64) NOT NULL COMMENT '关联的业务任务ID(各模块自己的task表ID)', task_name VARCHAR(255) NOT NULL COMMENT '任务名称', status VARCHAR(20) NOT NULL DEFAULT 'PENDING' COMMENT '状态: PENDING/IN_PROGRESS/COMPLETED/FAILED/STOPPED/CANCELLED', assigned_to BIGINT NULL COMMENT '分配给的用户ID (users.id)', created_by VARCHAR(255) NOT NULL COMMENT '创建者用户名', -- 进度字段 progress INT NOT NULL DEFAULT 0 COMMENT '进度百分比 0-100', total_items INT NOT NULL DEFAULT 0 COMMENT '总条目数', completed_items INT NOT NULL DEFAULT 0 COMMENT '已完成条目数', failed_items INT NOT NULL DEFAULT 0 COMMENT '失败条目数', -- 拆分配置 split_strategy VARCHAR(50) NULL COMMENT '拆分策略: BY_COUNT/BY_FILE/BY_PERCENTAGE/MANUAL', split_config JSON NULL COMMENT '拆分配置参数', -- 调度 priority INT NOT NULL DEFAULT 0 COMMENT '优先级 0=普通 1=高 2=紧急', deadline TIMESTAMP NULL COMMENT '截止时间', -- 时间戳 started_at TIMESTAMP NULL COMMENT '开始时间', completed_at TIMESTAMP NULL COMMENT '完成时间', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', deleted_at TIMESTAMP NULL COMMENT '删除时间(软删除)', -- 外键 CONSTRAINT fk_task_meta_parent FOREIGN KEY (parent_id) REFERENCES t_task_meta (id) ON DELETE CASCADE, CONSTRAINT fk_task_meta_assignee FOREIGN KEY (assigned_to) REFERENCES users (id) ON DELETE SET NULL, -- 索引 INDEX idx_task_meta_parent_id (parent_id), INDEX idx_task_meta_module_ref (module, ref_task_id), INDEX idx_task_meta_assigned_to (assigned_to), INDEX idx_task_meta_status (status), INDEX idx_task_meta_created_by (created_by) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '任务拆分与分配元数据表'; -- ============================================= -- 2) t_task_assignment_log - 分配操作日志表 -- ============================================= CREATE TABLE IF NOT EXISTS t_task_assignment_log ( id VARCHAR(36) PRIMARY KEY COMMENT '日志ID (UUID)', task_meta_id VARCHAR(36) NOT NULL COMMENT '任务元ID', action VARCHAR(20) NOT NULL COMMENT '操作类型: ASSIGN/REASSIGN/REVOKE', from_user_id BIGINT NULL COMMENT '原分配用户ID', to_user_id BIGINT NULL COMMENT '新分配用户ID', operated_by VARCHAR(255) NOT NULL COMMENT '操作者用户名', remark VARCHAR(500) NULL COMMENT '备注', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 外键 CONSTRAINT fk_assignment_log_task FOREIGN KEY (task_meta_id) REFERENCES t_task_meta (id) ON DELETE CASCADE, -- 索引 INDEX idx_assignment_log_task_meta_id (task_meta_id) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '任务分配操作日志'; -- ============================================= -- 3) 任务协调权限初始化 -- ============================================= INSERT IGNORE INTO t_auth_permissions (id, permission_code, permission_name, module, action, path_pattern, method, enabled, is_built_in) VALUES ('perm-tc-read', 'module:task-coordination:read', '任务协调读取', 'task-coordination', 'read', '/api/task-meta/**', 'GET', 1, 1), ('perm-tc-write', 'module:task-coordination:write', '任务协调写入', 'task-coordination', 'write', '/api/task-meta/**', 'POST,PUT,PATCH,DELETE', 1, 1), ('perm-tc-assign', 'module:task-coordination:assign', '任务分配', 'task-coordination', 'assign', '/api/task-meta/*/assign', 'POST', 1, 1); -- ============================================= -- 4) 绑定权限到角色 -- ============================================= -- 管理员获得全部任务协调权限 INSERT IGNORE INTO t_auth_role_permissions (role_id, permission_id) SELECT 'role-admin', p.id FROM t_auth_permissions p WHERE p.permission_code IN ( 'module:task-coordination:read', 'module:task-coordination:write', 'module:task-coordination:assign' ); -- 数据运营获得任务协调读写和分配权限 INSERT IGNORE INTO t_auth_role_permissions (role_id, permission_id) SELECT 'role-data-editor', p.id FROM t_auth_permissions p WHERE p.permission_code IN ( 'module:task-coordination:read', 'module:task-coordination:write', 'module:task-coordination:assign' );