449 lines
24 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 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;