-- DesignHub 设计师任务抢单管理系统 数据库Schema -- 版本: v1.7 -- 创建时间: 2025-11-07 -- 创建数据库 CREATE DATABASE IF NOT EXISTS `designhub` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE `designhub`; -- ============================== -- 一、用户与组织架构模块 -- ============================== -- 1. 用户表 CREATE TABLE `sys_user` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '用户ID', `username` VARCHAR(50) NOT NULL COMMENT '用户名', `password` VARCHAR(255) NULL COMMENT '密码(如果使用Casdoor可为空)', `real_name` VARCHAR(50) NOT NULL COMMENT '真实姓名', `email` VARCHAR(100) NULL COMMENT '邮箱', `phone` VARCHAR(20) NULL COMMENT '手机号', `avatar` VARCHAR(255) NULL COMMENT '头像URL', `ding_user_id` VARCHAR(100) NULL COMMENT '钉钉用户ID', `dept_id` BIGINT NULL COMMENT '部门ID', `role_ids` VARCHAR(255) NULL COMMENT '角色ID列表(逗号分隔)', `status` TINYINT DEFAULT 1 COMMENT '状态:0-禁用 1-启用', `deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除:0-否 1-是', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_username` (`username`), UNIQUE KEY `uk_ding_user_id` (`ding_user_id`), KEY `idx_dept_id` (`dept_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表'; -- 2. 部门表 CREATE TABLE `sys_dept` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '部门ID', `parent_id` BIGINT DEFAULT 0 COMMENT '父部门ID', `dept_name` VARCHAR(100) NOT NULL COMMENT '部门名称', `dept_code` VARCHAR(50) NULL COMMENT '部门编码', `dept_type` VARCHAR(20) DEFAULT 'receiving' COMMENT '部门类型:demand-需求部门 receiving-接单部门', `ding_dept_id` VARCHAR(100) NULL COMMENT '钉钉部门ID', `leader_id` BIGINT NULL COMMENT '部门负责人ID', `score_balance` INT DEFAULT 0 COMMENT '部门积分余额', `limit_enabled` TINYINT DEFAULT 0 COMMENT '是否启用消耗限制:0-否 1-是', `limit_period` VARCHAR(20) DEFAULT 'month' COMMENT '限制周期:day-每日 week-每周 month-每月', `period_limit` INT DEFAULT 0 COMMENT '周期限额', `alert_threshold` INT DEFAULT 80 COMMENT '预警阈值(百分比)', `over_limit_action` VARCHAR(20) DEFAULT 'alert' COMMENT '超限操作:alert-仅提醒 block-禁止发起', `allowed_demand_types` VARCHAR(255) NULL COMMENT '允许的需求类型(逗号分隔)', `sort_order` INT DEFAULT 0 COMMENT '排序', `status` TINYINT DEFAULT 1 COMMENT '状态:0-禁用 1-启用', `deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除:0-否 1-是', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_parent_id` (`parent_id`), KEY `idx_dept_type` (`dept_type`), KEY `idx_leader_id` (`leader_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='部门表'; -- 3. 角色表 CREATE TABLE `sys_role` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '角色ID', `role_name` VARCHAR(50) NOT NULL COMMENT '角色名称', `role_code` VARCHAR(50) NOT NULL COMMENT '角色编码', `description` VARCHAR(255) NULL COMMENT '角色描述', `permissions` TEXT NULL COMMENT '权限列表(JSON)', `status` TINYINT DEFAULT 1 COMMENT '状态:0-禁用 1-启用', `deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除:0-否 1-是', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_role_code` (`role_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色表'; -- 4. 部门消耗限制记录表 CREATE TABLE `dept_limit_record` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '记录ID', `dept_id` BIGINT NOT NULL COMMENT '部门ID', `period_type` VARCHAR(20) NOT NULL COMMENT '周期类型:day/week/month', `period_start` DATE NOT NULL COMMENT '周期开始日期', `period_end` DATE NOT NULL COMMENT '周期结束日期', `period_limit` INT NOT NULL COMMENT '周期限额', `consumed` INT DEFAULT 0 COMMENT '已消耗积分', `remaining` INT DEFAULT 0 COMMENT '剩余积分', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_dept_period` (`dept_id`, `period_type`, `period_start`), KEY `idx_period` (`period_start`, `period_end`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='部门消耗限制记录表'; -- ============================== -- 二、任务管理模块 -- ============================== -- 5. 任务表 CREATE TABLE `task` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '任务ID', `task_no` VARCHAR(50) NOT NULL COMMENT '任务编号', `title` VARCHAR(200) NOT NULL COMMENT '任务标题', `task_type_id` BIGINT NOT NULL COMMENT '任务类型ID', `task_sub_type` VARCHAR(50) NULL COMMENT '任务子类型:new-新品 optimize-优化 redesign-改图 other-其他', `quantity` INT DEFAULT 1 COMMENT '数量', `score` INT NOT NULL COMMENT '预估积分', `estimated_hours` DECIMAL(5,2) NULL COMMENT '预估工时(小时)', `brand_id` BIGINT NULL COMMENT '品牌ID', `category_id` BIGINT NULL COMMENT '叶子类目ID', `spu_info` VARCHAR(255) NULL COMMENT 'SPU信息', `platform_id` BIGINT NULL COMMENT '平台ID', `attachment_url` TEXT NULL COMMENT '附件URL(多个用逗号分隔)', `delivery_path` TEXT NULL COMMENT '交付路径', `publisher_id` BIGINT NOT NULL COMMENT '发布人ID', `publisher_dept_id` BIGINT NOT NULL COMMENT '发布人部门ID', `receiver_id` BIGINT NULL COMMENT '接收人ID', `receiver_dept_id` BIGINT NULL COMMENT '接收人部门ID', `release_type` VARCHAR(20) NOT NULL COMMENT '发布类型:assigned-指定 recruitment-招募 default-默认', `status` VARCHAR(20) DEFAULT 'pending' COMMENT '状态:pending-待接单 in_progress-进行中 review-待审核 rejected-已驳回 completed-已完成 cancelled-已取消', `progress` INT DEFAULT 0 COMMENT '完成进度(0-100)', `start_time` DATETIME NULL COMMENT '开始时间', `deadline` DATETIME NULL COMMENT '截止时间', `complete_time` DATETIME NULL COMMENT '完成时间', `rating` INT NULL COMMENT '评分(1-5星)', `review_comment` TEXT NULL COMMENT '审核评论', `reject_reason` TEXT NULL COMMENT '驳回原因', `reject_deadline` DATETIME NULL COMMENT '驳回后的最晚交付时间', `is_urgent` TINYINT DEFAULT 0 COMMENT '是否紧急:0-否 1-是', `is_delayed` TINYINT DEFAULT 0 COMMENT '是否延误:0-否 1-是', `delay_days` INT DEFAULT 0 COMMENT '延误天数', `deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除:0-否 1-是', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_task_no` (`task_no`), KEY `idx_publisher_id` (`publisher_id`), KEY `idx_receiver_id` (`receiver_id`), KEY `idx_status` (`status`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务表'; -- 6. 任务类型表 CREATE TABLE `task_type` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '类型ID', `type_name` VARCHAR(50) NOT NULL COMMENT '类型名称', `unit_score` INT NOT NULL COMMENT '单价积分', `estimated_hours` DECIMAL(5,2) NULL COMMENT '预估工时(小时)', `description` VARCHAR(255) NULL COMMENT '描述', `sort_order` INT DEFAULT 0 COMMENT '排序', `status` TINYINT DEFAULT 1 COMMENT '状态:0-禁用 1-启用', `deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除:0-否 1-是', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务类型表'; -- 7. 任务调配记录表 CREATE TABLE `task_transfer_log` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '记录ID', `task_id` BIGINT NOT NULL COMMENT '任务ID', `transfer_type` VARCHAR(20) NOT NULL COMMENT '调配类型:transfer-转移 assign-指定 withdraw-撤回 priority-优先级调整 promote-推广', `from_user_id` BIGINT NULL COMMENT '原接收人ID', `to_user_id` BIGINT NULL COMMENT '新接收人ID', `operator_id` BIGINT NOT NULL COMMENT '操作人ID', `reason` VARCHAR(500) NULL COMMENT '调配原因', `old_deadline` DATETIME NULL COMMENT '原截止时间', `new_deadline` DATETIME NULL COMMENT '新截止时间', `old_priority` INT NULL COMMENT '原优先级', `new_priority` INT NULL COMMENT '新优先级', `delay_days` INT NULL COMMENT '延误天数', `penalty_score` INT NULL COMMENT '扣除积分', `remark` TEXT NULL COMMENT '备注', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_task_id` (`task_id`), KEY `idx_from_user` (`from_user_id`), KEY `idx_to_user` (`to_user_id`), KEY `idx_operator` (`operator_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务调配记录表'; -- ============================== -- 三、积分管理模块 -- ============================== -- 8. 积分记录表 CREATE TABLE `score_record` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '记录ID', `user_id` BIGINT NULL COMMENT '用户ID', `dept_id` BIGINT NULL COMMENT '部门ID', `task_id` BIGINT NULL COMMENT '关联任务ID', `change_type` VARCHAR(50) NOT NULL COMMENT '变动类型:task_consume-任务消耗 task_reward-任务奖励 manual_adjust-手动调整 delay_penalty-延误扣分 incentive_reward-激励奖励 appeal_return-申诉返还', `change_amount` INT NOT NULL COMMENT '变动积分(正数为增加,负数为减少)', `before_amount` INT NULL COMMENT '变动前积分', `after_amount` INT NULL COMMENT '变动后积分', `reason` VARCHAR(500) NULL COMMENT '变动原因', `operator_id` BIGINT NULL COMMENT '操作人ID', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`), KEY `idx_dept_id` (`dept_id`), KEY `idx_task_id` (`task_id`), KEY `idx_change_type` (`change_type`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='积分记录表'; -- ============================== -- 四、延误扣分模块 -- ============================== -- 9. 延误扣分记录表 CREATE TABLE `delay_penalty_record` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '记录ID', `task_id` BIGINT NOT NULL COMMENT '任务ID', `designer_id` BIGINT NOT NULL COMMENT '设计师ID', `delay_days` INT NOT NULL COMMENT '延误天数', `delay_level` VARCHAR(20) NOT NULL COMMENT '延误等级:light-轻微 general-一般 severe-严重 major-重大', `penalty_score` INT NOT NULL COMMENT '扣除积分', `original_deadline` DATETIME NOT NULL COMMENT '原截止时间', `actual_time` DATETIME NOT NULL COMMENT '实际完成/转移时间', `status` VARCHAR(20) DEFAULT 'confirmed' COMMENT '状态:confirmed-已确认 appealed-已申诉 approved-申诉通过 rejected-申诉驳回', `appeal_reason` TEXT NULL COMMENT '申诉原因', `appeal_time` DATETIME NULL COMMENT '申诉时间', `appeal_result` VARCHAR(255) NULL COMMENT '申诉结果', `approver_id` BIGINT NULL COMMENT '审批人ID', `approve_time` DATETIME NULL COMMENT '审批时间', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_task_id` (`task_id`), KEY `idx_designer_id` (`designer_id`), KEY `idx_delay_level` (`delay_level`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='延误扣分记录表'; -- 10. 延误扣分规则表 CREATE TABLE `delay_penalty_rule` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '规则ID', `level_name` VARCHAR(20) NOT NULL COMMENT '等级名称:light-轻微 general-一般 severe-严重 major-重大', `min_days` INT NOT NULL COMMENT '最小延误天数', `max_days` INT NULL COMMENT '最大延误天数(NULL表示无上限)', `base_score` INT NOT NULL COMMENT '基础扣分', `per_day_score` INT NOT NULL COMMENT '每天递增扣分', `description` VARCHAR(255) NULL COMMENT '规则描述', `enabled` TINYINT DEFAULT 1 COMMENT '是否启用:0-否 1-是', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_level_name` (`level_name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='延误扣分规则表'; -- ============================== -- 五、激励系统模块 -- ============================== -- 11. 成就勋章表 CREATE TABLE `achievement` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '成就ID', `name` VARCHAR(100) NOT NULL COMMENT '成就名称', `category` VARCHAR(50) NOT NULL COMMENT '成就类别:quantity-数量 quality-质量 efficiency-效率 special-特殊', `icon` VARCHAR(255) NULL COMMENT '图标', `description` VARCHAR(500) NULL COMMENT '描述', `condition_json` TEXT NULL COMMENT '达成条件(JSON)', `reward_score` INT DEFAULT 0 COMMENT '奖励积分', `level` INT DEFAULT 1 COMMENT '成就等级', `sort_order` INT DEFAULT 0 COMMENT '排序', `enabled` TINYINT DEFAULT 1 COMMENT '是否启用:0-否 1-是', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_category` (`category`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='成就勋章表'; -- 12. 用户成就记录表 CREATE TABLE `user_achievement` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '记录ID', `user_id` BIGINT NOT NULL COMMENT '用户ID', `achievement_id` BIGINT NOT NULL COMMENT '成就ID', `achieved_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '获得时间', `is_displayed` TINYINT DEFAULT 1 COMMENT '是否展示:0-否 1-是', PRIMARY KEY (`id`), UNIQUE KEY `uk_user_achievement` (`user_id`, `achievement_id`), KEY `idx_user_id` (`user_id`), KEY `idx_achievement_id` (`achievement_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户成就记录表'; -- 13. 用户目标表 CREATE TABLE `user_goal` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '目标ID', `user_id` BIGINT NOT NULL COMMENT '用户ID', `goal_type` VARCHAR(50) NOT NULL COMMENT '目标类型:daily-每日 weekly-每周 monthly-每月 custom-自定义', `target_value` INT NOT NULL COMMENT '目标值', `current_value` INT DEFAULT 0 COMMENT '当前值', `start_date` DATE NOT NULL COMMENT '开始日期', `end_date` DATE NOT NULL COMMENT '结束日期', `status` VARCHAR(20) DEFAULT 'active' COMMENT '状态:active-进行中 completed-已完成 failed-未完成', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户目标表'; -- 14. 用户签到记录表 CREATE TABLE `user_check_in` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '记录ID', `user_id` BIGINT NOT NULL COMMENT '用户ID', `check_in_date` DATE NOT NULL COMMENT '签到日期', `continuous_days` INT DEFAULT 1 COMMENT '连续天数', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_user_date` (`user_id`, `check_in_date`), KEY `idx_user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户签到记录表'; -- 15. 激励配置表 CREATE TABLE `incentive_config` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '配置ID', `config_key` VARCHAR(100) NOT NULL COMMENT '配置键', `config_value` TEXT NULL COMMENT '配置值(JSON)', `description` VARCHAR(500) NULL COMMENT '描述', `enabled` TINYINT DEFAULT 1 COMMENT '是否启用:0-否 1-是', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_config_key` (`config_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='激励配置表'; -- 16. 自动奖励规则表 CREATE TABLE `auto_reward_rule` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '规则ID', `rule_name` VARCHAR(100) NOT NULL COMMENT '规则名称', `reward_period` VARCHAR(20) NOT NULL COMMENT '奖励周期:daily-每日 weekly-每周 monthly-每月 quarterly-季度 yearly-年度', `rank_limit` INT NULL COMMENT '排名限制(前N名)', `task_threshold` INT NULL COMMENT '任务数量阈值', `rating_threshold` DECIMAL(3,2) NULL COMMENT '评分阈值', `no_delay_required` TINYINT DEFAULT 0 COMMENT '是否要求零延误:0-否 1-是', `reward_score` INT NOT NULL COMMENT '奖励积分', `auto_issue` TINYINT DEFAULT 1 COMMENT '是否自动发放:0-否 1-是', `enabled` TINYINT DEFAULT 1 COMMENT '是否启用:0-否 1-是', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='自动奖励规则表'; -- ============================== -- 六、系统配置模块 -- ============================== -- 17. 品牌表 CREATE TABLE `brand` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '品牌ID', `brand_name` VARCHAR(100) NOT NULL COMMENT '品牌名称', `brand_code` VARCHAR(50) NULL COMMENT '品牌编码', `logo` VARCHAR(255) NULL COMMENT '品牌Logo', `description` VARCHAR(500) NULL COMMENT '描述', `sort_order` INT DEFAULT 0 COMMENT '排序', `status` TINYINT DEFAULT 1 COMMENT '状态:0-禁用 1-启用', `deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除:0-否 1-是', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='品牌表'; -- 18. 类目表 CREATE TABLE `category` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '类目ID', `parent_id` BIGINT DEFAULT 0 COMMENT '父类目ID', `category_name` VARCHAR(100) NOT NULL COMMENT '类目名称', `category_code` VARCHAR(50) NULL COMMENT '类目编码', `level` INT DEFAULT 1 COMMENT '层级', `is_leaf` TINYINT DEFAULT 1 COMMENT '是否叶子节点:0-否 1-是', `sort_order` INT DEFAULT 0 COMMENT '排序', `status` TINYINT DEFAULT 1 COMMENT '状态:0-禁用 1-启用', `deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除:0-否 1-是', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_parent_id` (`parent_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='类目表'; -- 19. 平台表 CREATE TABLE `platform` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '平台ID', `platform_name` VARCHAR(100) NOT NULL COMMENT '平台名称', `platform_code` VARCHAR(50) NULL COMMENT '平台编码', `icon` VARCHAR(255) NULL COMMENT '图标', `description` VARCHAR(500) NULL COMMENT '描述', `sort_order` INT DEFAULT 0 COMMENT '排序', `status` TINYINT DEFAULT 1 COMMENT '状态:0-禁用 1-启用', `deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除:0-否 1-是', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='平台表'; -- ============================== -- 七、通知模块 -- ============================== -- 20. 通知表 CREATE TABLE `sys_notification` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '通知ID', `receiver_id` BIGINT NOT NULL COMMENT '接收人ID', `receiver_ding_user_id` VARCHAR(100) NULL COMMENT '接收人钉钉ID', `type` VARCHAR(50) NOT NULL COMMENT '通知类型', `title` VARCHAR(200) NOT NULL COMMENT '通知标题', `content` TEXT NOT NULL COMMENT '通知内容', `link` VARCHAR(500) NULL COMMENT '链接地址', `mobile_link` VARCHAR(500) NULL COMMENT '移动端链接', `related_task_id` BIGINT NULL COMMENT '关联任务ID', `is_read` TINYINT DEFAULT 0 COMMENT '是否已读:0-否 1-是', `read_time` DATETIME NULL COMMENT '阅读时间', `ding_enabled` TINYINT DEFAULT 1 COMMENT '是否发送钉钉:0-否 1-是', `ding_message_type` VARCHAR(20) DEFAULT 'text' COMMENT '钉钉消息类型:text/markdown/oa/actionCard', `ding_priority` INT DEFAULT 0 COMMENT '钉钉优先级', `ding_pushed` TINYINT DEFAULT 0 COMMENT '钉钉是否已推送:0-否 1-是', `ding_push_time` DATETIME NULL COMMENT '钉钉推送时间', `ding_push_result` TEXT NULL COMMENT '钉钉推送结果(JSON)', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_receiver_id` (`receiver_id`), KEY `idx_is_read` (`is_read`), KEY `idx_type` (`type`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='通知表'; -- 创建索引以优化查询性能 CREATE INDEX idx_task_status_time ON `task` (`status`, `create_time`); CREATE INDEX idx_score_record_time ON `score_record` (`create_time`, `change_type`); CREATE INDEX idx_user_dept ON `sys_user` (`dept_id`, `status`); -- Task progress snapshot table DROP TABLE IF EXISTS `task_progress_snapshot`; CREATE TABLE `task_progress_snapshot` ( `id` BIGINT NOT NULL AUTO_INCREMENT, `snapshot_time` DATETIME NOT NULL, `metrics_json` TEXT, `status_distribution_json` TEXT, `trend_json` TEXT, `stage_segments_json` TEXT, `department_load_json` MEDIUMTEXT, `risk_tasks_json` MEDIUMTEXT, `task_points_json` MEDIUMTEXT, `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;