核心数据模型 & 状态流转

12 张核心表 + 5 阶段状态机,支撑全链路可追溯

数据库 ER 关系(核心表)

① sys_user 用户账号
id, username, password_hash, real_name, position (职位展示), department_id, superior_id (直属上级), role (EMPLOYEE/SUPER_ADMIN), created_at
② sys_department 部门/分组
id, name, parent_id (树形), leader_id, sort_order
③ assessment_period 考核周期
id, name, start_date, end_date, status (DRAFT→OKR_ALIGN→EXECUTING→ASSESSING→ARCHIVED), created_by
④ okr_objective 目标 O
id, period_id, user_id, dept_id, type (DEPT/PERSONAL), title, status, version, snapshot_json (归档快照), reviewed_by, reviewed_at
⑤ kr_key_result 关键结果 KR
id, objective_id, title, target_value, current_value, status (NOT_STARTED/IN_PROGRESS/COMPLETED/BLOCKED), weight
⑥ kr_progress_log KR 进度更新
id, kr_id, old_value, new_value, old_status, new_status, remark, updated_by, created_at
⑦ kpi_template KPI 模板
id, name, category, items_json (指标项列表), created_by
⑧ kpi_config 个人 KPI 配置
id, period_id, user_id, items_json, version, snapshot_json, locked_at
⑨ performance_score 绩效打分
id, period_id, user_id, evaluator_id, okr_score (0-40), kpi_score (0-60), bonus (加分), penalty (扣分), total, grade (S/A/B/C), type (SELF/SUPERIOR/FINAL), comments_json
⑩ performance_feedback 面谈反馈
id, period_id, user_id, superior_id, interview_notes, highlights, issues, improvements, employee_feedback
⑪ operation_log 操作日志
id, operator_id, action, entity_type, entity_id, old_data_json, new_data_json, ip, created_at
⑫ audit_correction 修正记录
id, performance_id, correction_type, old_values_json, new_values_json, reason, operated_by, created_at

考核周期状态机

📝 待发布
管理员创建
未开放给员工
🎯 OKR 对齐
部门OKR发布
员工提交审核
▶️ 执行中
每周更新进度
阻塞自动提醒
✍️ 考评中
自评→上级打分
面谈沟通
📦 已归档
数据锁定
快照留存
状态转换规则:
待发布→OKR对齐管理员手动触发,系统为所有员工创建空白OKR记录
OKR对齐→执行中管理员手动触发(或周期开始日期自动),员工OKR锁定
执行中→考评中:周期结束日期到达时自动切换(定时任务检查)
考评中→已归档管理员手动触发,执行数据快照
• 已归档数据不可修改,仅支持管理员发起审计修正(写入 audit_correction 表)

权限链路(基于汇报关系)

👤 普通员工
✅ 个人OKR 增改查
✅ 绩效自评
✅ 查看本人结果
❌ 他人数据
❌ 打分/配置
👔 直属上级
✅ 下属OKR审核
✅ 下属绩效打分
✅ 面谈记录
✅ 下属数据查看
❌ 全局配置
权限自动生效:userId = superior_id
🔧 超级管理员
✅ 全系统最高权限
✅ 周期/组织/备份
✅ 全量日志查看
✅ 审计修正