-- 员工月度绩效考核系统数据库初始化脚本 CREATE DATABASE IF NOT EXISTS employee_performance DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci; USE employee_performance; -- 1. 用户表 CREATE TABLE IF NOT EXISTS user ( user_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID', username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名(工号)', password VARCHAR(255) NOT NULL COMMENT '密码(明文存储,测试环境使用)', name VARCHAR(50) NOT NULL COMMENT '姓名', role ENUM('employee', 'manager', 'generalManager') NOT NULL COMMENT '角色', department VARCHAR(50) NOT NULL COMMENT '部门', position VARCHAR(50) NOT NULL COMMENT '岗位', manager_id INT NULL COMMENT '直属管理层ID', status ENUM('active', 'inactive') DEFAULT 'active' COMMENT '状态', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_role (role), INDEX idx_manager (manager_id), FOREIGN KEY (manager_id) REFERENCES user(user_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表'; -- 2. 绩效主表 CREATE TABLE IF NOT EXISTS performance_month ( perf_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '绩效记录ID', user_id INT NOT NULL COMMENT '员工ID', month VARCHAR(7) NOT NULL COMMENT '考核月份(YYYY-MM)', status ENUM('draft', 'submitted', 'under_review', 'completed', 'rejected') NOT NULL DEFAULT 'draft' COMMENT '状态', self_score DECIMAL(5,2) NULL COMMENT '员工自评总分', ai_score DECIMAL(5,2) NULL COMMENT 'AI评分总分', manager_score DECIMAL(5,2) NULL COMMENT '管理层审核总分', total_score DECIMAL(5,2) NULL COMMENT '最终总分', level ENUM('excellent', 'qualified', 'need_motivation', 'unqualified') NULL COMMENT '绩效等级', reward_punish VARCHAR(255) NULL COMMENT '奖惩说明', work_summary TEXT NULL COMMENT '工作汇总', submit_time TIMESTAMP NULL COMMENT '提交时间', review_time TIMESTAMP NULL COMMENT '审核时间', review_opinion TEXT NULL COMMENT '审核意见', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_user_month (user_id, month), INDEX idx_status (status), INDEX idx_month (month), FOREIGN KEY (user_id) REFERENCES user(user_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='绩效主表'; -- 3. 绩效项明细表 CREATE TABLE IF NOT EXISTS perf_item ( item_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '绩效项ID', perf_id INT NOT NULL COMMENT '绩效记录ID', item_name VARCHAR(100) NOT NULL COMMENT '考核项名称', item_category ENUM('business', 'comprehensive') NOT NULL COMMENT '考核项类别', weight INT NOT NULL COMMENT '权重(分数)', user_content TEXT NULL COMMENT '员工填写内容', self_score DECIMAL(5,2) NULL COMMENT '员工自评分', ai_score DECIMAL(5,2) NULL COMMENT 'AI评分', ai_explanation TEXT NULL COMMENT 'AI评分说明', manager_score DECIMAL(5,2) NULL COMMENT '管理层评分', manager_explanation TEXT NULL COMMENT '管理层评分说明', evidence_url VARCHAR(500) NULL COMMENT '佐证材料URL', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_perf (perf_id), FOREIGN KEY (perf_id) REFERENCES performance_month(perf_id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='绩效项明细表'; -- 4. 考勤表 CREATE TABLE IF NOT EXISTS attendance ( attendance_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '考勤ID', perf_id INT NOT NULL COMMENT '绩效记录ID', leave_days INT DEFAULT 0 COMMENT '事假天数', late_times INT DEFAULT 0 COMMENT '迟到次数', absent_days INT DEFAULT 0 COMMENT '旷工天数', lack_card_times INT DEFAULT 0 COMMENT '缺卡次数', attendance_score DECIMAL(5,2) NULL COMMENT '考勤得分', remark TEXT NULL COMMENT '备注', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_perf (perf_id), FOREIGN KEY (perf_id) REFERENCES performance_month(perf_id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考勤表'; -- 5. AI 结果表 CREATE TABLE IF NOT EXISTS ai_result ( ai_id INT PRIMARY KEY AUTO_INCREMENT COMMENT 'AI结果ID', perf_id INT NOT NULL COMMENT '绩效记录ID', ai_score_json TEXT NOT NULL COMMENT 'AI评分详情(JSON格式)', ai_total_score DECIMAL(5,2) NOT NULL COMMENT 'AI总分', problems TEXT NULL COMMENT 'AI总结的问题(JSON数组)', suggestions TEXT NULL COMMENT 'AI改进建议(JSON数组)', api_response TEXT NULL COMMENT 'FastGPT原始响应', create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '生成时间', UNIQUE KEY uk_perf (perf_id), FOREIGN KEY (perf_id) REFERENCES performance_month(perf_id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI结果表'; -- 6. 考核规则配置表 CREATE TABLE IF NOT EXISTS performance_rules ( rule_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '规则ID', rule_key VARCHAR(100) NOT NULL UNIQUE COMMENT '规则键名', rule_value TEXT NOT NULL COMMENT '规则值(JSON格式)', description VARCHAR(255) NULL COMMENT '规则描述', effective_cycle VARCHAR(7) NULL COMMENT '生效周期(YYYY-MM,NULL表示立即生效)', updated_by INT NULL COMMENT '最后修改人ID', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (updated_by) REFERENCES user(user_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考核规则配置表'; -- 7. 操作日志表 CREATE TABLE IF NOT EXISTS operation_log ( log_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '日志ID', user_id INT NOT NULL COMMENT '操作人ID', operation_type VARCHAR(50) NOT NULL COMMENT '操作类型', target_type VARCHAR(50) NULL COMMENT '目标类型', target_id INT NULL COMMENT '目标ID', operation_detail TEXT NULL COMMENT '操作详情', ip_address VARCHAR(50) NULL COMMENT 'IP地址', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, INDEX idx_user (user_id), INDEX idx_created (created_at), FOREIGN KEY (user_id) REFERENCES user(user_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操作日志表';