-- 制度模块数据库表创建脚本
-- @author wangna
-- @date 2025/07/28

-- 制度规范仓库表
CREATE TABLE `regulation` (
  `regulation_id` varchar(64) NOT NULL COMMENT '制度ID',
  `title` varchar(255) NOT NULL COMMENT '制度标题',
  `content` text COMMENT '制度内容',
  `regulation_type` varchar(50) DEFAULT NULL COMMENT '制度类型',
  `status` varchar(20) DEFAULT 'DRAFT' COMMENT '制度状态：DRAFT-草案，PUBLISHED-已发布，ARCHIVED-已归档',
  `publisher_id` varchar(64) DEFAULT NULL COMMENT '发布人ID',
  `publisher_name` varchar(100) DEFAULT NULL COMMENT '发布人姓名',
  `publish_time` datetime DEFAULT NULL COMMENT '发布时间',
  `effective_time` datetime DEFAULT NULL COMMENT '生效时间',
  `expire_time` datetime DEFAULT NULL COMMENT '失效时间',
  `scope` varchar(255) DEFAULT NULL COMMENT '适用范围',
  `level` varchar(20) DEFAULT 'MEDIUM' COMMENT '制度级别：HIGH-高级，MEDIUM-中级，LOW-低级',
  `version` varchar(20) DEFAULT '1.0' COMMENT '版本号',
  `remark` text COMMENT '备注',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志（0代表存在，1代表删除）',
  PRIMARY KEY (`regulation_id`),
  KEY `idx_status` (`status`),
  KEY `idx_type` (`regulation_type`),
  KEY `idx_publisher` (`publisher_id`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='制度规范仓库';

-- 制度草案表
CREATE TABLE `regulation_draft` (
  `draft_id` varchar(64) NOT NULL COMMENT '草案ID',
  `title` varchar(255) NOT NULL COMMENT '制度标题',
  `content` text COMMENT '制度内容',
  `regulation_type` varchar(50) DEFAULT NULL COMMENT '制度类型',
  `status` varchar(20) DEFAULT 'DRAFT' COMMENT '草案状态：DRAFT-草稿，REVIEWING-审核中，APPROVED-已通过，REJECTED-已拒绝',
  `creator_id` varchar(64) DEFAULT NULL COMMENT '创建人ID',
  `creator_name` varchar(100) DEFAULT NULL COMMENT '创建人姓名',
  `reviewer_id` varchar(64) DEFAULT NULL COMMENT '审核人ID',
  `reviewer_name` varchar(100) DEFAULT NULL COMMENT '审核人姓名',
  `review_time` datetime DEFAULT NULL COMMENT '审核时间',
  `review_comment` text COMMENT '审核意见',
  `scope` varchar(255) DEFAULT NULL COMMENT '适用范围',
  `level` varchar(20) DEFAULT 'MEDIUM' COMMENT '制度级别：HIGH-高级，MEDIUM-中级，LOW-低级',
  `version` varchar(20) DEFAULT '1.0' COMMENT '版本号',
  `remark` text COMMENT '备注',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志（0代表存在，1代表删除）',
  PRIMARY KEY (`draft_id`),
  KEY `idx_status` (`status`),
  KEY `idx_creator` (`creator_id`),
  KEY `idx_reviewer` (`reviewer_id`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='制度草案';

-- 制度提案表
CREATE TABLE `regulation_proposal` (
  `proposal_id` varchar(64) NOT NULL COMMENT '提案ID',
  `title` varchar(255) NOT NULL COMMENT '提案标题',
  `content` text COMMENT '提案内容',
  `proposal_type` varchar(50) DEFAULT NULL COMMENT '提案类型',
  `status` varchar(20) DEFAULT 'SUBMITTED' COMMENT '提案状态：SUBMITTED-已提交，DISCUSSING-讨论中，APPROVED-已通过，REJECTED-已拒绝，CONVERTED-已转为草案',
  `proposer_id` varchar(64) DEFAULT NULL COMMENT '提案人ID',
  `proposer_name` varchar(100) DEFAULT NULL COMMENT '提案人姓名',
  `proposer_dept` varchar(100) DEFAULT NULL COMMENT '提案人部门',
  `discussion_group_id` varchar(64) DEFAULT NULL COMMENT '讨论组ID',
  `discussion_group_name` varchar(100) DEFAULT NULL COMMENT '讨论组名称',
  `discussion_start_time` datetime DEFAULT NULL COMMENT '讨论开始时间',
  `discussion_end_time` datetime DEFAULT NULL COMMENT '讨论结束时间',
  `discussion_status` varchar(20) DEFAULT 'NOT_STARTED' COMMENT '讨论状态：NOT_STARTED-未开始，DISCUSSING-讨论中，FINISHED-已结束',
  `support_count` int DEFAULT 0 COMMENT '支持人数',
  `oppose_count` int DEFAULT 0 COMMENT '反对人数',
  `total_participants` int DEFAULT 0 COMMENT '总参与人数',
  `reviewer_id` varchar(64) DEFAULT NULL COMMENT '审核人ID',
  `reviewer_name` varchar(100) DEFAULT NULL COMMENT '审核人姓名',
  `review_time` datetime DEFAULT NULL COMMENT '审核时间',
  `review_comment` text COMMENT '审核意见',
  `converted_draft_id` varchar(64) DEFAULT NULL COMMENT '转为草案ID',
  `scope` varchar(255) DEFAULT NULL COMMENT '适用范围',
  `level` varchar(20) DEFAULT 'MEDIUM' COMMENT '制度级别：HIGH-高级，MEDIUM-中级，LOW-低级',
  `urgency_level` varchar(20) DEFAULT 'MEDIUM' COMMENT '紧急程度：HIGH-高，MEDIUM-中，LOW-低',
  `remark` text COMMENT '备注',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志（0代表存在，1代表删除）',
  PRIMARY KEY (`proposal_id`),
  KEY `idx_status` (`status`),
  KEY `idx_proposer` (`proposer_id`),
  KEY `idx_reviewer` (`reviewer_id`),
  KEY `idx_discussion_status` (`discussion_status`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='制度提案';

-- 制度确认表
CREATE TABLE `regulation_confirmation` (
  `confirmation_id` varchar(64) NOT NULL COMMENT '确认ID',
  `regulation_id` varchar(64) NOT NULL COMMENT '制度ID',
  `regulation_title` varchar(255) DEFAULT NULL COMMENT '制度标题',
  `confirmer_id` varchar(64) NOT NULL COMMENT '确认人ID',
  `confirmer_name` varchar(100) DEFAULT NULL COMMENT '确认人姓名',
  `confirmer_dept` varchar(100) DEFAULT NULL COMMENT '确认人部门',
  `status` varchar(20) DEFAULT 'PENDING' COMMENT '确认状态：PENDING-待确认，CONFIRMED-已确认，DECLINED-已拒绝',
  `confirm_time` datetime DEFAULT NULL COMMENT '确认时间',
  `confirm_comment` text COMMENT '确认意见',
  `read_duration` int DEFAULT 0 COMMENT '阅读时长（秒）',
  `ip_address` varchar(50) DEFAULT NULL COMMENT 'IP地址',
  `user_agent` varchar(500) DEFAULT NULL COMMENT '用户代理',
  `remark` text COMMENT '备注',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志（0代表存在，1代表删除）',
  PRIMARY KEY (`confirmation_id`),
  UNIQUE KEY `uk_confirmer_regulation` (`confirmer_id`, `regulation_id`),
  KEY `idx_regulation` (`regulation_id`),
  KEY `idx_confirmer` (`confirmer_id`),
  KEY `idx_status` (`status`),
  KEY `idx_confirm_time` (`confirm_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='制度确认'; 