hr-system/sql/V001__init_hrs.sql

907 lines
44 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.

-- 人事系统 hr-web 批次1 DDLjson2ddl 生成,幂等可重跑)
-- 来源models/*.jsondatabase-design.md v3.049 表目标库hrs(MariaDB)
-- 执行mysql -utest -ptest123 hrs < sql/V001__init_hrs.sql 或 python3 scripts/apply_ddl.py
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS=0;
-- ===== hr_contract4 张)=====
-- contract_info
CREATE TABLE IF NOT EXISTS `contract_info` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`contract_no` VARCHAR(64) NOT NULL COMMENT '合同编号',
`employee_id` VARCHAR(32) COMMENT '员工档案',
`type_id` VARCHAR(32) COMMENT '合同类型',
`company_id` VARCHAR(32) COMMENT '签约公司(org_contract_company)',
`template_id` VARCHAR(32) COMMENT '合同模板',
`start_date` DATE COMMENT '合同起始日',
`end_date` DATE COMMENT '合同到期日',
`sign_date` DATE COMMENT '签订日期',
`contract_status` VARCHAR(16) DEFAULT 'active' COMMENT '合同状态(字典CONTRACT_STATUS)',
`file_path` VARCHAR(256) COMMENT '合同文件(文件ID)',
`text_file_path` VARCHAR(256) COMMENT '模板生成合同文本(D4)',
`flow_instance_id` VARCHAR(32) COMMENT '流程实例',
`remind_rule_id` VARCHAR(32) COMMENT '到期提醒规则',
`esign_status` VARCHAR(16) DEFAULT 'not_enabled' COMMENT '电子签状态(字典ESIGN_STATUS,D4预留)',
`remark` TEXT COMMENT '备注',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_employee` (`employee_id`),
KEY `idx_end_date` (`end_date`),
KEY `idx_status` (`contract_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='合同台账';
-- contract_remind_rule
CREATE TABLE IF NOT EXISTS `contract_remind_rule` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`rule_name` VARCHAR(64) NOT NULL COMMENT '规则名称',
`days_before` INT DEFAULT 30 COMMENT '提前天数',
`target_role` VARCHAR(16) DEFAULT 'hr' COMMENT '提醒对象(self/leader/hr)',
`content_template` TEXT COMMENT '提醒内容模板',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='合同到期提醒规则';
-- contract_template
CREATE TABLE IF NOT EXISTS `contract_template` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`template_name` VARCHAR(128) NOT NULL COMMENT '模板名称',
`type_id` VARCHAR(32) COMMENT '合同类型',
`file_path` VARCHAR(256) COMMENT '模板文件(文件ID)',
`field_marks_json` TEXT COMMENT '占位符映射',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='合同模板';
-- contract_type
CREATE TABLE IF NOT EXISTS `contract_type` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`type_code` VARCHAR(32) NOT NULL COMMENT '类型编码',
`type_name` VARCHAR(64) NOT NULL COMMENT '类型名称(劳动合同/保密协议/竞业协议…)',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_type_code` (`type_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='合同类型';
-- ===== hr_flow7 张)=====
-- flow_def
CREATE TABLE IF NOT EXISTS `flow_def` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`flow_code` VARCHAR(64) NOT NULL COMMENT '流程编码',
`flow_name` VARCHAR(128) NOT NULL COMMENT '流程名称',
`form_id` VARCHAR(32) COMMENT '表单定义',
`biz_type` VARCHAR(32) COMMENT '业务类型(字典FLOW_BIZ_TYPE)',
`match_cond_json` TEXT COMMENT '匹配条件(员工类型/部门)',
`version` INT DEFAULT 1 COMMENT '版本',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_flow_code` (`flow_code`),
KEY `idx_biz_type` (`biz_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='流程定义';
-- flow_form_def
CREATE TABLE IF NOT EXISTS `flow_form_def` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`form_code` VARCHAR(64) NOT NULL COMMENT '表单编码',
`form_name` VARCHAR(128) NOT NULL COMMENT '表单名称',
`biz_type` VARCHAR(32) COMMENT '业务类型(字典FLOW_BIZ_TYPE,含attendance_*桩位)',
`fields_json` TEXT COMMENT '字段定义(引用roster_field_def或自定义项)',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_form_code` (`form_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='表单定义';
-- flow_instance
CREATE TABLE IF NOT EXISTS `flow_instance` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`inst_no` VARCHAR(32) NOT NULL COMMENT '审批编号',
`flow_id` VARCHAR(32) NOT NULL COMMENT '流程定义',
`form_id` VARCHAR(32) NOT NULL COMMENT '表单定义',
`biz_type` VARCHAR(32) NOT NULL COMMENT '业务类型(字典FLOW_BIZ_TYPE)',
`biz_id` VARCHAR(32) COMMENT '业务单据ID',
`title` VARCHAR(256) COMMENT '标题',
`initiator_id` VARCHAR(32) NOT NULL COMMENT '发起人',
`inst_status` VARCHAR(16) NOT NULL DEFAULT 'running' COMMENT '实例状态(字典INST_STATUS)',
`submit_data_json` TEXT COMMENT '提交表单数据快照',
`start_time` TIMESTAMP NULL DEFAULT NULL COMMENT '发起时间',
`finish_time` TIMESTAMP NULL DEFAULT NULL COMMENT '结束时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_inst_no` (`inst_no`),
KEY `idx_biz` (`biz_type`,`biz_id`),
KEY `idx_initiator` (`initiator_id`),
KEY `idx_status` (`inst_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='流程实例';
-- flow_node_def
CREATE TABLE IF NOT EXISTS `flow_node_def` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`flow_id` VARCHAR(32) COMMENT '流程定义',
`node_seq` INT DEFAULT 1 COMMENT '节点序号',
`node_name` VARCHAR(64) COMMENT '节点名称',
`approver_type` VARCHAR(16) COMMENT '审批人类型(user/role/leader/admin/flow_role)',
`approver_value` VARCHAR(256) COMMENT '审批人取值',
`pass_rule` VARCHAR(8) DEFAULT 'all' COMMENT '通过规则(any/all)',
`field_perm_json` TEXT COMMENT '节点字段可读写权限',
`cc_to` VARCHAR(512) COMMENT '抄送对象',
PRIMARY KEY (`id`),
KEY `idx_flow_id` (`flow_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='流程节点';
-- flow_op_log
CREATE TABLE IF NOT EXISTS `flow_op_log` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`instance_id` VARCHAR(32) COMMENT '流程实例',
`op_type` VARCHAR(16) COMMENT '操作类型(submit/approve/reject/forward/cancel/withdraw)',
`operator_id` VARCHAR(32) COMMENT '操作人',
`comment` TEXT COMMENT '意见',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_instance` (`instance_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='流转日志';
-- flow_role
CREATE TABLE IF NOT EXISTS `flow_role` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`role_name` VARCHAR(64) NOT NULL COMMENT '角色名称',
`flow_scope_json` TEXT COMMENT '可用流程范围',
`op_perm_json` TEXT COMMENT '操作权限',
`data_scope_json` TEXT COMMENT '数据查看范围',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='审批角色';
-- flow_task
CREATE TABLE IF NOT EXISTS `flow_task` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`instance_id` VARCHAR(32) COMMENT '流程实例',
`node_id` VARCHAR(32) COMMENT '节点定义',
`node_name` VARCHAR(64) COMMENT '节点名称',
`approver_id` VARCHAR(32) COMMENT '审批人',
`task_status` VARCHAR(16) DEFAULT 'pending' COMMENT '任务状态(pending/approved/rejected/forwarded/cancelled)',
`comment` TEXT COMMENT '审批意见',
`handle_time` TIMESTAMP NULL DEFAULT NULL COMMENT '处理时间',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_approver_status` (`approver_id`,`task_status`),
KEY `idx_instance` (`instance_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='审批任务(待办/已办)';
-- ===== hr_org23 张)=====
-- headcount_item
CREATE TABLE IF NOT EXISTS `headcount_item` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`scheme_id` VARCHAR(32) NOT NULL COMMENT '编制方案',
`scope_json` TEXT NOT NULL COMMENT '占编范围条件(员工类型/状态/职位/职级/自定义字段)',
`seg_json` TEXT COMMENT '细分维度(空=整体)',
`head_limit` INT NOT NULL DEFAULT 0 COMMENT '编制数量',
`remark` TEXT COMMENT '备注',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_scheme_id` (`scheme_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='编制细分项(F16)';
-- headcount_snapshot
CREATE TABLE IF NOT EXISTS `headcount_snapshot` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`scheme_id` VARCHAR(32) NOT NULL COMMENT '编制方案',
`item_id` VARCHAR(32) NOT NULL COMMENT '细分项',
`snap_date` DATE NOT NULL COMMENT '快照日期',
`used_count` INT NOT NULL DEFAULT 0 COMMENT '占编人数',
`over_count` INT NOT NULL DEFAULT 0 COMMENT '超编数(0=未超编)',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_scheme_item_date` (`scheme_id`,`item_id`,`snap_date`),
KEY `idx_snap_date` (`snap_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='编制快照(F16历史回溯/实时计数)';
-- org_blacklist
CREATE TABLE IF NOT EXISTS `org_blacklist` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`name` VARCHAR(64) COMMENT '姓名',
`id_number_hash` VARCHAR(64) COMMENT '证件号哈希(确定性,匹配用)【敏感:sensitive落库加密/脱敏展示】',
`id_number_cipher` VARCHAR(256) COMMENT '证件号密文【敏感:sensitive落库加密/脱敏展示】',
`reason` VARCHAR(256) COMMENT '拉黑原因',
`source` VARCHAR(16) COMMENT '来源(leave/manual)',
`source_employee_id` VARCHAR(32) COMMENT '来源员工档案',
`created_by` VARCHAR(32) COMMENT '创建人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_id_number_hash` (`id_number_hash`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='黑名单';
-- org_concurrent_post
CREATE TABLE IF NOT EXISTS `org_concurrent_post` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`employee_id` VARCHAR(32) COMMENT '员工档案',
`org_id` VARCHAR(32) COMMENT '兼岗组织',
`position_id` VARCHAR(32) COMMENT '兼岗职位',
`start_date` DATE COMMENT '开始日期',
`end_date` DATE COMMENT '结束日期',
`status` VARCHAR(16) DEFAULT 'awaiting' COMMENT '状态(awaiting/active/expired)',
`flow_instance_id` VARCHAR(32) COMMENT '流程实例',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_employee_id` (`employee_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='兼岗';
-- org_contract_company
CREATE TABLE IF NOT EXISTS `org_contract_company` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`company_code` VARCHAR(32) NOT NULL COMMENT '公司编码',
`company_name` VARCHAR(128) NOT NULL COMMENT '公司名称',
`credit_code` VARCHAR(32) COMMENT '统一社会信用代码',
`legal_person` VARCHAR(64) COMMENT '法人',
`contact_info` VARCHAR(128) COMMENT '联系方式',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_company_code` (`company_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='合同公司';
-- org_entry
CREATE TABLE IF NOT EXISTS `org_entry` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`employee_id` VARCHAR(32) COMMENT '员工档案(可空,待入职)',
`name` VARCHAR(64) NOT NULL COMMENT '姓名',
`id_type` VARCHAR(16) DEFAULT 'id_card' COMMENT '证件类型(字典ID_TYPE)',
`id_number_cipher` VARCHAR(256) COMMENT '证件号密文【敏感:sensitive落库加密/脱敏展示】',
`id_number_hash` VARCHAR(64) COMMENT '证件号哈希【敏感:sensitive落库加密/脱敏展示】',
`id_valid_from` DATE COMMENT '证件有效期起',
`id_valid_to` DATE COMMENT '证件有效期止(长期=9999-12-31)',
`id_authority` VARCHAR(128) COMMENT '证件签发机关',
`id_source` VARCHAR(16) DEFAULT 'manual' COMMENT '证件信息来源(字典ID_SOURCE,D1手工录入)',
`employee_type` VARCHAR(16) COMMENT '员工类型(字典EMP_TYPE)',
`org_id` VARCHAR(32) COMMENT '入职组织',
`position_id` VARCHAR(32) COMMENT '职位',
`company_id` VARCHAR(32) COMMENT '合同公司',
`work_location` VARCHAR(128) COMMENT '办公地点',
`hire_date` DATE COMMENT '入职日期',
`entry_status` VARCHAR(24) DEFAULT 'pending_approval' COMMENT '入职状态(字典ENTRY_STATUS)',
`is_rehire` INT DEFAULT 0 COMMENT '是否复职(0/1)',
`register_status` VARCHAR(16) DEFAULT 'none' COMMENT '登记表状态(none/invited/filled)',
`register_token` VARCHAR(64) COMMENT '登记表token(扫码入职降级)',
`register_url` VARCHAR(256) COMMENT '登记表链接',
`qrcode_file` VARCHAR(64) COMMENT '登记二维码图片(文件ID)',
`register_expire` TIMESTAMP NULL DEFAULT NULL COMMENT '登记链接过期时间',
`flow_instance_id` VARCHAR(32) COMMENT '流程实例',
`remark` TEXT COMMENT '备注',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_entry_status` (`entry_status`),
KEY `idx_hire_date` (`hire_date`),
KEY `idx_flow_instance_id` (`flow_instance_id`),
UNIQUE KEY `uk_register_token` (`register_token`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='入职记录';
-- org_field_def
CREATE TABLE IF NOT EXISTS `org_field_def` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`field_code` VARCHAR(64) NOT NULL COMMENT '字段编码',
`field_name` VARCHAR(64) NOT NULL COMMENT '字段名称',
`field_type` VARCHAR(16) COMMENT '字段类型(text/number/date/select/file)',
`options_json` TEXT COMMENT '选项定义JSON',
`required` INT DEFAULT 0 COMMENT '是否必填(0/1)',
`sort_no` INT DEFAULT 0 COMMENT '排序号',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_field_code` (`field_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='组织自定义字段定义';
-- org_field_value
CREATE TABLE IF NOT EXISTS `org_field_value` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`org_id` VARCHAR(32) NOT NULL COMMENT '组织',
`field_id` VARCHAR(32) NOT NULL COMMENT '字段定义',
`value_text` TEXT COMMENT '文本值',
`value_date` DATE COMMENT '日期值',
`value_file` VARCHAR(64) COMMENT '附件值(文件ID)',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_org_field` (`org_id`,`field_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='组织字段值(EAV)';
-- org_grade_level
CREATE TABLE IF NOT EXISTS `org_grade_level` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`level_code` VARCHAR(32) NOT NULL COMMENT '职级编码',
`level_name` VARCHAR(64) NOT NULL COMMENT '职级名称',
`level_category` VARCHAR(32) COMMENT '职级类别',
`start_rank_id` VARCHAR(32) COMMENT '起始职等',
`end_rank_id` VARCHAR(32) COMMENT '结束职等',
`sort_no` INT DEFAULT 0 COMMENT '排序号',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_level_code` (`level_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='职级';
-- org_grade_rank
CREATE TABLE IF NOT EXISTS `org_grade_rank` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`rank_code` VARCHAR(32) NOT NULL COMMENT '职等编码',
`rank_name` VARCHAR(64) NOT NULL COMMENT '职等名称',
`rank_level` INT COMMENT '职等层级',
`sort_no` INT DEFAULT 0 COMMENT '排序号',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_rank_code` (`rank_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='职等';
-- org_headcount_scheme
CREATE TABLE IF NOT EXISTS `org_headcount_scheme` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`scheme_name` VARCHAR(128) NOT NULL COMMENT '方案名称',
`cycle_type` VARCHAR(16) NOT NULL COMMENT '周期(字典HEADCOUNT_CYCLE: year/quarter/month)',
`cycle_start` DATE NOT NULL COMMENT '周期起',
`cycle_end` DATE NOT NULL COMMENT '周期止',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
`remark` TEXT COMMENT '备注',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_cycle` (`cycle_start`,`cycle_end`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='编制方案(F16)';
-- org_job
CREATE TABLE IF NOT EXISTS `org_job` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`job_code` VARCHAR(32) NOT NULL COMMENT '职务编码',
`job_name` VARCHAR(64) NOT NULL COMMENT '职务名称',
`job_category` VARCHAR(16) NOT NULL DEFAULT 'vertical' COMMENT '职务类别(vertical/horizontal,F17)',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
`sort_no` INT DEFAULT 0 COMMENT '排序号',
`remark` TEXT COMMENT '备注',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_job_code` (`job_code`),
KEY `idx_job_category` (`job_category`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='职务(含F17横向职务)';
-- org_leave
CREATE TABLE IF NOT EXISTS `org_leave` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`employee_id` VARCHAR(32) COMMENT '员工档案',
`leave_type` VARCHAR(24) COMMENT '离职类型(辞职/劝退/合同到期/退休)',
`leave_reason` VARCHAR(32) COMMENT '离职原因(字典LEAVE_REASON)',
`leave_date` DATE COMMENT '离职日期',
`apply_type` VARCHAR(16) COMMENT '申请方式(self/proxy/manual)',
`status` VARCHAR(16) DEFAULT 'pending_leave' COMMENT '状态(pending_leave/left/cancelled)',
`handover_status` VARCHAR(16) DEFAULT 'pending' COMMENT '交接状态(pending/done)',
`certificate_file` VARCHAR(64) COMMENT '离职证明文件ID',
`blacklist_flag` INT DEFAULT 0 COMMENT '是否加入黑名单(0/1)',
`flow_instance_id` VARCHAR(32) COMMENT '流程实例',
`remark` TEXT COMMENT '备注',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_employee_id` (`employee_id`),
KEY `idx_status` (`status`),
KEY `idx_leave_date` (`leave_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='离职记录';
-- org_leave_handover
CREATE TABLE IF NOT EXISTS `org_leave_handover` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`leave_id` VARCHAR(32) COMMENT '离职记录',
`item_type` VARCHAR(32) COMMENT '交接项类型(字典HANDOVER_TYPE,含dingtalk_resource占位D3)',
`item_content` TEXT COMMENT '交接内容',
`handover_to_id` VARCHAR(32) COMMENT '交接人',
`status` VARCHAR(16) DEFAULT 'pending' COMMENT '状态(pending/done)',
`remark` TEXT COMMENT '备注',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_leave_id` (`leave_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='离职交接项';
-- org_position
CREATE TABLE IF NOT EXISTS `org_position` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`position_code` VARCHAR(32) NOT NULL COMMENT '职位编码',
`position_name` VARCHAR(64) NOT NULL COMMENT '职位名称',
`job_id` VARCHAR(32) COMMENT '职务',
`sequence_id` VARCHAR(32) COMMENT '序列',
`category` VARCHAR(16) COMMENT '职位类别(字典POS_CATEGORY)',
`dept_ids` VARCHAR(512) COMMENT '适用部门(多值,逗号分隔)',
`description` TEXT COMMENT '职位描述',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
`sort_no` INT DEFAULT 0 COMMENT '排序号',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_position_code` (`position_code`),
KEY `idx_job_id` (`job_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='职位';
-- org_project
CREATE TABLE IF NOT EXISTS `org_project` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`project_code` VARCHAR(32) NOT NULL COMMENT '项目编码',
`project_name` VARCHAR(128) NOT NULL COMMENT '项目名称',
`parent_id` VARCHAR(32) COMMENT '上级项目(自引用多层级)',
`owner_id` VARCHAR(32) COMMENT '负责人',
`start_date` DATE COMMENT '开始日期',
`end_date` DATE COMMENT '结束日期',
`project_status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '项目状态(字典PROJECT_STATUS)',
`attrs_json` TEXT COMMENT '项目属性',
`sort_no` INT DEFAULT 0 COMMENT '排序号',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_project_code` (`project_code`),
KEY `idx_parent_id` (`parent_id`),
KEY `idx_project_status` (`project_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='项目式组织(F17)';
-- org_project_post
CREATE TABLE IF NOT EXISTS `org_project_post` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`project_id` VARCHAR(32) NOT NULL COMMENT '项目组织',
`employee_id` VARCHAR(32) NOT NULL COMMENT '员工',
`job_id` VARCHAR(32) COMMENT '横向职务(org_job.job_category=horizontal)',
`start_date` DATE COMMENT '开始日期',
`end_date` DATE COMMENT '结束日期',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/expired',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_proj_emp_job` (`project_id`,`employee_id`,`job_id`,`start_date`),
KEY `idx_employee_id` (`employee_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='项目任职(F17横向)';
-- org_regularization
CREATE TABLE IF NOT EXISTS `org_regularization` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`employee_id` VARCHAR(32) COMMENT '员工档案',
`probation_end_date` DATE COMMENT '试用期止(预计转正日)',
`regular_date` DATE COMMENT '转正日期',
`apply_type` VARCHAR(16) COMMENT '申请方式(self/proxy/manual)',
`status` VARCHAR(16) DEFAULT 'pending' COMMENT '状态(pending/approved/rejected/cancelled)',
`flow_instance_id` VARCHAR(32) COMMENT '流程实例',
`remark` TEXT COMMENT '备注',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_employee_id` (`employee_id`),
KEY `idx_regular_date` (`regular_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='转正记录';
-- org_sequence
CREATE TABLE IF NOT EXISTS `org_sequence` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`seq_category` VARCHAR(32) COMMENT '序列类别',
`seq_name` VARCHAR(64) NOT NULL COMMENT '序列名称',
`grade_level_ids` VARCHAR(512) COMMENT '关联职级类别(多值,逗号分隔)',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='序列';
-- org_transfer
CREATE TABLE IF NOT EXISTS `org_transfer` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`transfer_type` VARCHAR(24) COMMENT '调动类型(字典TRANSFER_TYPE)',
`status` VARCHAR(16) DEFAULT 'pending' COMMENT '状态(pending/confirmed/cancelled)',
`effective_date` DATE COMMENT '生效日期',
`batch_no` VARCHAR(32) COMMENT '批次号',
`flow_instance_id` VARCHAR(32) COMMENT '流程实例',
`remark` TEXT COMMENT '备注',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_status` (`status`),
KEY `idx_effective_date` (`effective_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='调动单(支持批量)';
-- org_transfer_detail
CREATE TABLE IF NOT EXISTS `org_transfer_detail` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`transfer_id` VARCHAR(32) COMMENT '调动单',
`employee_id` VARCHAR(32) COMMENT '员工档案',
`from_org_id` VARCHAR(32) COMMENT '原组织',
`to_org_id` VARCHAR(32) COMMENT '新组织',
`from_position_id` VARCHAR(32) COMMENT '原职位',
`to_position_id` VARCHAR(32) COMMENT '新职位',
`from_grade_level_id` VARCHAR(32) COMMENT '原职级',
`to_grade_level_id` VARCHAR(32) COMMENT '新职级',
`status` VARCHAR(16) DEFAULT 'pending' COMMENT '状态(pending/done/cancelled)',
PRIMARY KEY (`id`),
KEY `idx_transfer_id` (`transfer_id`),
KEY `idx_employee_id` (`employee_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='调动明细(逐人)';
-- org_unit
CREATE TABLE IF NOT EXISTS `org_unit` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`org_code` VARCHAR(32) NOT NULL COMMENT '组织编码',
`org_name` VARCHAR(128) NOT NULL COMMENT '组织名称',
`parent_id` VARCHAR(32) COMMENT '上级组织(自引用)',
`org_type` VARCHAR(16) COMMENT '组织类型(字典ORG_TYPE)',
`leader_id` VARCHAR(32) COMMENT '负责人',
`effective_date` DATE COMMENT '生效日期',
`expire_date` DATE COMMENT '失效日期(空=长期)',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
`sort_no` INT DEFAULT 0 COMMENT '排序号',
`remark` TEXT COMMENT '备注',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_org_code` (`org_code`),
KEY `idx_parent_id` (`parent_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='组织';
-- org_unit_change
CREATE TABLE IF NOT EXISTS `org_unit_change` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`org_id` VARCHAR(32) COMMENT '组织',
`change_type` VARCHAR(16) COMMENT '变更类型(add/edit/disable/move/split/merge/delete)',
`before_json` TEXT COMMENT '变更前快照',
`after_json` TEXT COMMENT '变更后快照',
`effective_date` DATE COMMENT '生效日期',
`operator_id` VARCHAR(32) COMMENT '操作人',
`flow_instance_id` VARCHAR(32) COMMENT '流程实例',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_org_id` (`org_id`),
KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='组织变更时间轴';
-- ===== hr_roster7 张)=====
-- roster_employee
CREATE TABLE IF NOT EXISTS `roster_employee` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`employee_no` VARCHAR(32) NOT NULL COMMENT '工号',
`name` VARCHAR(64) NOT NULL COMMENT '姓名',
`gender` VARCHAR(16) COMMENT '性别(字典GENDER)',
`id_type` VARCHAR(16) DEFAULT 'id_card' COMMENT '证件类型',
`id_number_cipher` VARCHAR(256) COMMENT '证件号密文(敏感)【敏感:sensitive落库加密/脱敏展示】',
`id_number_hash` VARCHAR(64) COMMENT '证件号哈希(确定性,唯一/黑名单匹配)【敏感:sensitive落库加密/脱敏展示】',
`id_valid_from` DATE COMMENT '证件有效期起',
`id_valid_to` DATE COMMENT '证件有效期止(长期=9999-12-31)',
`id_authority` VARCHAR(128) COMMENT '证件签发机关',
`id_source` VARCHAR(16) DEFAULT 'manual' COMMENT '证件信息来源(字典ID_SOURCE)',
`birthday` DATE COMMENT '出生日期',
`phone` VARCHAR(20) COMMENT '手机号(明文存储,按角色脱敏)【敏感:sensitive落库加密/脱敏展示】',
`email` VARCHAR(128) COMMENT '邮箱',
`org_id` VARCHAR(32) COMMENT '组织',
`position_id` VARCHAR(32) COMMENT '职位',
`job_id` VARCHAR(32) COMMENT '职务',
`grade_level_id` VARCHAR(32) COMMENT '职级',
`grade_rank_id` VARCHAR(32) COMMENT '职等',
`sequence_id` VARCHAR(32) COMMENT '序列',
`employee_type` VARCHAR(16) COMMENT '员工类型(字典EMP_TYPE)',
`employee_status` VARCHAR(16) COMMENT '员工状态(字典EMP_STATUS)',
`hire_date` DATE COMMENT '入职日期',
`probation_end_date` DATE COMMENT '试用期止(预计转正日)',
`regular_date` DATE COMMENT '转正日期',
`leave_date` DATE COMMENT '离职日期',
`company_id` VARCHAR(32) COMMENT '合同公司',
`work_location` VARCHAR(128) COMMENT '办公地点',
`direct_leader_id` VARCHAR(32) COMMENT '直属主管',
`prev_employee_id` VARCHAR(32) COMMENT '复职关联原档案ID',
`remark` TEXT COMMENT '备注',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_employee_no` (`employee_no`),
UNIQUE KEY `uk_id_number_hash` (`id_number_hash`),
KEY `idx_org_id` (`org_id`),
KEY `idx_status` (`employee_status`),
KEY `idx_hire_date` (`hire_date`),
KEY `idx_probation_end` (`probation_end_date`),
KEY `idx_direct_leader` (`direct_leader_id`),
KEY `idx_prev_employee` (`prev_employee_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='员工主档';
-- roster_empno_rule
CREATE TABLE IF NOT EXISTS `roster_empno_rule` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`rule_name` VARCHAR(64) NOT NULL COMMENT '规则名称',
`prefix` VARCHAR(16) COMMENT '工号前缀',
`match_field` VARCHAR(32) COMMENT '匹配字段(如company_id)',
`match_value` VARCHAR(64) COMMENT '匹配值',
`seq_length` INT DEFAULT 4 COMMENT '流水号长度',
`current_seq` INT DEFAULT 0 COMMENT '当前流水号',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工号规则';
-- roster_field_def
CREATE TABLE IF NOT EXISTS `roster_field_def` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`group_id` VARCHAR(32) COMMENT '字段分组',
`field_code` VARCHAR(64) NOT NULL COMMENT '字段编码',
`field_name` VARCHAR(64) NOT NULL COMMENT '字段名称',
`field_type` VARCHAR(16) COMMENT '字段类型(text/number/date/select/multiselect/file)',
`options_json` TEXT COMMENT '选项定义(字典code或自定义项)',
`required` INT DEFAULT 0 COMMENT '是否必填(0/1)',
`sensitive` INT DEFAULT 0 COMMENT '是否敏感(0/1,驱动脱敏与可见性)',
`editable_self` INT DEFAULT 0 COMMENT '员工自助可编辑(0/1)',
`need_audit` INT DEFAULT 0 COMMENT '自助修改需审核(0/1)',
`apply_types` TEXT COMMENT '适用员工类型JSON',
`sort_no` INT DEFAULT 0 COMMENT '排序号',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_field_code` (`field_code`),
KEY `idx_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='花名册字段定义';
-- roster_field_group
CREATE TABLE IF NOT EXISTS `roster_field_group` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`group_code` VARCHAR(32) NOT NULL COMMENT '分组编码',
`group_name` VARCHAR(64) NOT NULL COMMENT '分组名称(工作信息/个人信息/绩效结果/培训记录)',
`sort_no` INT DEFAULT 0 COMMENT '排序号',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_group_code` (`group_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='花名册字段分组';
-- roster_field_value
CREATE TABLE IF NOT EXISTS `roster_field_value` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`employee_id` VARCHAR(32) NOT NULL COMMENT '员工档案',
`field_id` VARCHAR(32) NOT NULL COMMENT '字段定义',
`value_text` TEXT COMMENT '文本值',
`value_number` DECIMAL(18,4) COMMENT '数值',
`value_date` DATE COMMENT '日期值',
`value_file` VARCHAR(64) COMMENT '附件值(文件ID)',
`updated_by` VARCHAR(32) COMMENT '更新人',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_employee_field` (`employee_id`,`field_id`),
KEY `idx_field_id` (`field_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='花名册字段值(EAV)';
-- roster_timeline
CREATE TABLE IF NOT EXISTS `roster_timeline` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`employee_id` VARCHAR(32) COMMENT '员工档案',
`event_type` VARCHAR(24) COMMENT '事件类型(entry/regular/transfer/leave/concurrent/contract/field_change/headcount/project/migrate)',
`event_date` DATE COMMENT '事件日期',
`title` VARCHAR(128) COMMENT '标题',
`content_json` TEXT COMMENT '内容JSON',
`source_type` VARCHAR(32) COMMENT '来源类型',
`source_id` VARCHAR(32) COMMENT '来源ID',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_emp_date` (`employee_id`,`event_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='员工时间轴';
-- roster_type_rule
CREATE TABLE IF NOT EXISTS `roster_type_rule` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`employee_type` VARCHAR(16) NOT NULL COMMENT '员工类型(字典EMP_TYPE)',
`field_rules_json` TEXT COMMENT '按类型必填/隐藏字段规则',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_employee_type` (`employee_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='员工类型字段规则';
-- ===== hr_system8 张)=====
-- sys_announcement
CREATE TABLE IF NOT EXISTS `sys_announcement` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`title` VARCHAR(256) NOT NULL COMMENT '标题',
`content` TEXT COMMENT '内容',
`publish_scope_json` TEXT COMMENT '发布范围',
`publish_time` TIMESTAMP NULL DEFAULT NULL COMMENT '发布时间',
`status` VARCHAR(16) DEFAULT 'draft' COMMENT '状态(draft/published/offline)',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='企业公告(F15)';
-- sys_audit_log
CREATE TABLE IF NOT EXISTS `sys_audit_log` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`module` VARCHAR(32) NOT NULL COMMENT '模块(hr-org/hr-roster/...)',
`target_type` VARCHAR(32) NOT NULL COMMENT '对象类型(roster_employee/org_unit/...)',
`target_id` VARCHAR(32) NOT NULL COMMENT '对象ID',
`operation` VARCHAR(16) NOT NULL COMMENT '操作类型(字典AUDIT_OP)',
`operator_id` VARCHAR(32) NOT NULL COMMENT '操作人',
`operator_name` VARCHAR(64) DEFAULT '' COMMENT '操作人姓名',
`before_json` TEXT COMMENT '变更前快照',
`after_json` TEXT COMMENT '变更后快照',
`request_ip` VARCHAR(64) COMMENT '请求IP',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_target` (`target_type`,`target_id`),
KEY `idx_operator` (`operator_id`),
KEY `idx_created_at` (`created_at`),
KEY `idx_module_op` (`module`,`operation`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志(只增,F12)';
-- sys_care_config
CREATE TABLE IF NOT EXISTS `sys_care_config` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`care_type` VARCHAR(16) NOT NULL COMMENT '关怀类型(birthday/anniversary)',
`template` TEXT COMMENT '文案模板',
`enable` INT DEFAULT 1 COMMENT '启用(0/1)',
`push_target` VARCHAR(16) DEFAULT 'employee' COMMENT '推送对象(employee/leader)',
`updated_by` VARCHAR(32) COMMENT '更新人',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_care_type` (`care_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='关怀配置(生日/周年,F15)';
-- sys_data_scope
CREATE TABLE IF NOT EXISTS `sys_data_scope` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`admin_user_id` VARCHAR(32) COMMENT '管理员用户',
`scope_type` VARCHAR(16) COMMENT '范围类型(org/field)',
`org_ids_json` TEXT COMMENT '组织维度(含子树)',
`field_ids_json` TEXT COMMENT '花名册字段维度',
`remark` TEXT COMMENT '备注',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_admin_user` (`admin_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='数据范围(F11)';
-- sys_message
CREATE TABLE IF NOT EXISTS `sys_message` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`receiver_id` VARCHAR(32) COMMENT '接收人',
`msg_type` VARCHAR(16) COMMENT '消息类型(todo/approval/remind/care/notice)',
`title` VARCHAR(256) COMMENT '标题',
`content` TEXT COMMENT '内容',
`biz_type` VARCHAR(32) COMMENT '业务类型',
`biz_id` VARCHAR(32) COMMENT '业务ID',
`send_channel` VARCHAR(16) DEFAULT 'site' COMMENT '发送渠道(字典MSG_CHANNEL,一期仅site;D9)',
`is_read` INT DEFAULT 0 COMMENT '是否已读(0/1)',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_receiver_read` (`receiver_id`,`is_read`),
KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='站内消息(F15)';
-- sys_openapp
CREATE TABLE IF NOT EXISTS `sys_openapp` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`app_key` VARCHAR(64) NOT NULL COMMENT '应用Key',
`app_secret_cipher` VARCHAR(256) COMMENT '应用密钥密文【敏感:sensitive落库加密/脱敏展示】',
`app_name` VARCHAR(128) COMMENT '应用名称',
`scope_json` TEXT COMMENT '授权资源范围',
`rate_limit` INT DEFAULT 10 COMMENT '限流(req/s,默认10)',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_app_key` (`app_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='API开放应用(一期预留,FEAT-B1-01⑦)';
-- sys_policy
CREATE TABLE IF NOT EXISTS `sys_policy` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`title` VARCHAR(256) NOT NULL COMMENT '标题',
`file_path` VARCHAR(256) COMMENT '政策文件(文件ID)',
`view_scope_json` TEXT COMMENT '查阅范围',
`downloadable` INT DEFAULT 0 COMMENT '允许下载(0/1)',
`publish_time` TIMESTAMP NULL DEFAULT NULL COMMENT '发布时间',
`status` VARCHAR(16) DEFAULT 'draft' COMMENT '状态(draft/published/offline)',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='企业政策(F15)';
-- sys_remind_rule
CREATE TABLE IF NOT EXISTS `sys_remind_rule` (
`id` VARCHAR(32) NOT NULL COMMENT '主键',
`scene_code` VARCHAR(32) NOT NULL COMMENT '提醒场景(字典REMIND_SCENE,≥6类)',
`rule_name` VARCHAR(64) NOT NULL COMMENT '规则名称',
`days_before` INT DEFAULT 7 COMMENT '提前天数',
`content_template` TEXT COMMENT '提醒内容模板',
`target_role` VARCHAR(16) DEFAULT 'admin' COMMENT '提醒对象(admin/employee/leader)',
`status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
`created_by` VARCHAR(32) COMMENT '创建人',
`updated_by` VARCHAR(32) COMMENT '更新人',
`created_at` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_scene_rule` (`scene_code`,`rule_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='通用提醒规则(F15)';
SET FOREIGN_KEY_CHECKS=1;
-- 共 49 张表