102 lines
6.6 KiB
SQL
102 lines
6.6 KiB
SQL
-- 员工管理模块 MySQL 8.0 DDL(生产库手动执行)
|
||
CREATE TABLE IF NOT EXISTS staff_employee (
|
||
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
employee_no VARCHAR(32) NOT NULL COMMENT '工号,唯一标识',
|
||
name VARCHAR(64) NOT NULL COMMENT '员工姓名',
|
||
id_number VARCHAR(64) NOT NULL COMMENT '身份证号,应用层加密存储',
|
||
gender TINYINT DEFAULT 0 COMMENT '性别:0-未知,1-男,2-女',
|
||
department_id BIGINT NOT NULL COMMENT '所属部门ID',
|
||
department_name VARCHAR(128) DEFAULT '' COMMENT '部门名称(冗余,加快查询)',
|
||
position VARCHAR(128) NOT NULL COMMENT '岗位名称',
|
||
hire_date DATE NOT NULL COMMENT '入职日期',
|
||
phone VARCHAR(20) DEFAULT NULL COMMENT '联系电话',
|
||
email VARCHAR(128) DEFAULT NULL COMMENT '邮箱',
|
||
emergency_contact VARCHAR(64) DEFAULT NULL COMMENT '紧急联系人姓名',
|
||
emergency_phone VARCHAR(20) DEFAULT NULL COMMENT '紧急联系人电话',
|
||
status VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态:active-在职,inactive-离职,probation-试用期',
|
||
created_by BIGINT DEFAULT NULL COMMENT '创建人ID',
|
||
updated_by BIGINT DEFAULT NULL COMMENT '最后更新人ID',
|
||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (id),
|
||
UNIQUE KEY uk_employee_no (employee_no),
|
||
UNIQUE KEY uk_id_number (id_number),
|
||
KEY idx_name (name),
|
||
KEY idx_department_id (department_id),
|
||
KEY idx_status (status),
|
||
KEY idx_hire_date (hire_date),
|
||
KEY idx_created_at (created_at)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='员工主表';
|
||
|
||
CREATE TABLE IF NOT EXISTS staff_employee_extra (
|
||
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
employee_id BIGINT NOT NULL COMMENT '员工ID',
|
||
education VARCHAR(32) DEFAULT NULL COMMENT '学历',
|
||
major VARCHAR(128) DEFAULT NULL COMMENT '专业',
|
||
school VARCHAR(128) DEFAULT NULL COMMENT '毕业院校',
|
||
graduation_date DATE DEFAULT NULL COMMENT '毕业时间',
|
||
previous_company VARCHAR(128) DEFAULT NULL COMMENT '前工作单位',
|
||
work_years INT DEFAULT 0 COMMENT '总工作年限',
|
||
technical_level VARCHAR(32) DEFAULT NULL COMMENT '技术级别,仅 Admin/HR 可见',
|
||
salary_grade VARCHAR(32) DEFAULT NULL COMMENT '薪资等级,仅 Admin/HR 可见',
|
||
contract_type VARCHAR(32) DEFAULT NULL COMMENT '合同类型',
|
||
contract_start DATE DEFAULT NULL COMMENT '合同开始日期',
|
||
contract_end DATE DEFAULT NULL COMMENT '合同结束日期',
|
||
probation_end DATE DEFAULT NULL COMMENT '试用期截止日',
|
||
address VARCHAR(256) DEFAULT NULL COMMENT '现住址',
|
||
remark TEXT DEFAULT NULL COMMENT '备注',
|
||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (id),
|
||
UNIQUE KEY uk_employee_id (employee_id),
|
||
KEY idx_technical_level (technical_level),
|
||
KEY idx_contract_end (contract_end)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='员工扩展信息表';
|
||
|
||
CREATE TABLE IF NOT EXISTS staff_change_log (
|
||
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
employee_id BIGINT NOT NULL COMMENT '员工ID',
|
||
change_type VARCHAR(32) NOT NULL COMMENT '变更类型',
|
||
old_value VARCHAR(256) DEFAULT NULL COMMENT '原值',
|
||
new_value VARCHAR(256) DEFAULT NULL COMMENT '新值',
|
||
operator_id BIGINT NOT NULL COMMENT '操作人ID',
|
||
operator_name VARCHAR(64) DEFAULT NULL COMMENT '操作人姓名',
|
||
change_reason VARCHAR(512) DEFAULT NULL COMMENT '变更原因',
|
||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '变更时间',
|
||
PRIMARY KEY (id),
|
||
KEY idx_employee_id (employee_id),
|
||
KEY idx_change_type (change_type),
|
||
KEY idx_created_at (created_at)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='员工变更记录表';
|
||
|
||
CREATE TABLE IF NOT EXISTS staff_audit_log (
|
||
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
target_type VARCHAR(32) NOT NULL COMMENT '操作目标类型',
|
||
target_id BIGINT NOT NULL COMMENT '操作目标ID',
|
||
operation VARCHAR(32) NOT NULL COMMENT '操作类型:CREATE/UPDATE/DELETE/VIEW',
|
||
operator_id BIGINT NOT NULL COMMENT '操作人ID',
|
||
operator_name VARCHAR(64) DEFAULT '' COMMENT '操作人姓名',
|
||
field_name VARCHAR(64) DEFAULT NULL COMMENT '变更字段名',
|
||
before_value TEXT DEFAULT NULL COMMENT '变更前值',
|
||
after_value TEXT DEFAULT NULL COMMENT '变更后值',
|
||
request_ip VARCHAR(64) DEFAULT NULL COMMENT '请求IP',
|
||
user_agent VARCHAR(512) DEFAULT NULL COMMENT '浏览器UA',
|
||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
|
||
PRIMARY KEY (id),
|
||
KEY idx_target (target_type, target_id),
|
||
KEY idx_operator_id (operator_id),
|
||
KEY idx_created_at (created_at)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作审计日志表';
|
||
|
||
CREATE TABLE IF NOT EXISTS staff_department_cache (
|
||
id BIGINT NOT NULL COMMENT '部门ID(来自 org-mgr)',
|
||
name VARCHAR(128) NOT NULL COMMENT '部门名称',
|
||
parent_id BIGINT DEFAULT NULL COMMENT '上级部门ID',
|
||
level INT DEFAULT 0 COMMENT '层级深度',
|
||
employee_count INT DEFAULT 0 COMMENT '部门人数',
|
||
status VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态',
|
||
sync_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后同步时间',
|
||
PRIMARY KEY (id),
|
||
KEY idx_parent_id (parent_id)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='部门信息本地缓存表';
|