-- 员工管理模块 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='部门信息本地缓存表';