版本:V1.0 | 日期:2026-04-13 | 编制:AI 助理
公司已有一套 OA 系统,现基于 OA 低码平台开发绩效管理模块,打通现有员工、部门、岗位、上下级关系数据,不独立维护。
OA 系统(复用) 绩效系统(新建)
─────────────────────────────────────────
sys_dept ← [复用,无需新建]
sys_user ← [复用,无需新建]
sys_position ← [复用,无需新建]
sys_user_position ← [复用,无需新建](含上下级关系)
─────────────────────────────────────────
kpi_indicator [新建] 指标表
kpi_indicator_group [新建] 指标分组表
kpi_position_template [新建] 岗位指标卡模板
kpi_task [新建] 考核任务主表
kpi_task_detail [新建] 考核任务明细表
kpi_task_log [新建] 流程日志表
kpi_appeal [新建] 申诉表
kpi_schedule_config [新建] 定时任务配置表
kpi_indicator_group用于对指标进行分类,如"工作态度"、"业务能力"、"管理能力"等。
| 字段 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| id | 主键 | BIGINT | 主键 |
| group_name | 分组名称 | VARCHAR(50) | 如"工作态度"、"业务能力" |
| group_code | 分组编码 | VARCHAR(20) | 唯一编码 |
| sort_order | 排序号 | INT | 越大越靠前 |
| parent_id | 父分组ID | BIGINT | 顶级为0,支持二级分组 |
| remark | 备注 | VARCHAR(200) | |
| status | 状态 | TINYINT | 1=启用 0=停用 |
| create_by | 创建人 | VARCHAR(64) | |
| create_time | 创建时间 | DATETIME |
kpi_indicator存放具体考核指标,如"工作质量"、"沟通协作"、"考勤表现"等。
| 字段 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| id | 主键 | BIGINT | 主键 |
| indicator_name | 指标名称 | VARCHAR(100) | 如"工作质量" |
| indicator_code | 指标编码 | VARCHAR(30) | 唯一编码 |
| group_id | 所属分组ID | BIGINT | 关联 kpi_indicator_group.id |
| description | 指标说明 | VARCHAR(500) | 考核标准描述 |
| max_score | 满分值 | DECIMAL(5,1) | 默认100,可调整 |
| status | 状态 | TINYINT | 1=启用 0=停用 |
| create_by | 创建人 | VARCHAR(64) | |
| create_time | 创建时间 | DATETIME |
kpi_position_template某岗位对应一套指标组合及权重,权重总和须为100%。
主表:
| 字段 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| id | 主键 | BIGINT | 主键 |
| template_name | 模板名称 | VARCHAR(100) | 如"客服专员绩效模板" |
| position_id | 绑定岗位ID | BIGINT | 关联 OA 的 sys_position.id |
| position_name | 岗位名称 | VARCHAR(50) | 冗余字段,方便展示 |
| cycle_type | 考核周期 | VARCHAR(20) | monthly/quarterly/annual |
| status | 状态 | TINYINT | 1=启用 0=停用 |
| create_by | 创建人 | VARCHAR(64) | |
| create_time | 创建时间 | DATETIME |
明细表:
| 字段 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| id | 主键 | BIGINT | 主键 |
| template_id | 模板ID | BIGINT | 关联 kpi_position_template.id |
| indicator_id | 指标ID | BIGINT | 关联 kpi_indicator.id |
| indicator_name | 指标名称 | VARCHAR(100) | 冗余展示 |
| weight | 权重 | DECIMAL(5,2) | 如 20.00 表示20% |
| sort_order | 排序号 | INT |
⚠️ 约束:同一 template_id 下,weight 总和必须 = 100.00。OA低码平台可在保存时做前端校验。
kpi_task每次考核周期生成一条任务记录,贯穿整个考核生命周期。
| 字段 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| id | 主键 | BIGINT | 主键 |
| task_no | 任务编号 | VARCHAR(30) | 格式:KPI-202604-001 |
| cycle_year | 考核年份 | INT | 如 2026 |
| cycle_month | 考核月份 | INT | 如 4 |
| evaluatee_id | 被考核人ID | BIGINT | 关联 OA sys_user.id |
| evaluatee_name | 被考核人姓名 | VARCHAR(50) | 冗余 |
| evaluator_id | 考核人ID(直接上级) | BIGINT | 关联 OA sys_user.id |
| evaluator_name | 考核人姓名 | VARCHAR(50) | 冗余 |
| template_id | 使用的模板ID | BIGINT | 关联 kpi_position_template.id |
| status | 当前状态 | VARCHAR(20) | 见状态流转说明 |
| self_score | 自评总分 | DECIMAL(5,1) | 提交后写入 |
| self_comment | 自评备注 | VARCHAR(500) | |
| self_submit_time | 自评提交时间 | DATETIME | |
| manager_score | 上级评分总分 | DECIMAL(5,1) | 上级提交后写入 |
| manager_comment | 上级评语 | VARCHAR(500) | |
| manager_submit_time | 上级提交时间 | DATETIME | |
| confirm_status | 确认状态 | VARCHAR(20) | pending/confirmed/objection |
| confirm_time | 确认时间 | DATETIME | |
| final_score | 最终得分 | DECIMAL(5,1) | HR确认后写入 |
| appeal_id | 关联申诉ID | BIGINT | 关联 kpi_appeal.id,无则为NULL |
| close_time | 关闭时间 | DATETIME | |
| remark | 备注 | VARCHAR(500) | |
| create_by | 创建人 | VARCHAR(64) | |
| create_time | 创建时间 | DATETIME |
status 状态流转:
pending_self → 待自评
pending_manager → 待上级考评
pending_confirm → 待被考核人确认
appealing → 申诉中(HR处理中)
closed → 已关闭(正常确认或申诉处理完成)
confirm_status 确认状态:
pending → 待确认
confirmed → 已确认(无异议)
objection → 有异议(已发起申诉)
kpi_task_detail考核任务中每个指标的具体得分记录。
| 字段 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| id | 主键 | BIGINT | 主键 |
| task_id | 任务ID | BIGINT | 关联 kpi_task.id |
| indicator_id | 指标ID | BIGINT | 关联 kpi_indicator.id |
| indicator_name | 指标名称 | VARCHAR(100) | 冗余 |
| indicator_group | 所属分组 | VARCHAR(50) | 冗余,方便显示 |
| weight | 权重 | DECIMAL(5,2) | 20.00 表示20% |
| self_score | 自评分 | DECIMAL(5,1) | 被考核人填写 |
| self_score_weighted | 自评加权分 | DECIMAL(6,2) | self_score × weight / 100 |
| manager_score | 上级评分 | DECIMAL(5,1) | 上级填写 |
| manager_score_weighted | 上级加权分 | DECIMAL(6,2) | manager_score × weight / 100 |
| final_score | 最终得分 | DECIMAL(5,1) | HR确认后写入 |
| sort_order | 排序号 | INT |
kpi_task_log记录每个考核任务的完整操作轨迹。
| 字段 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| id | 主键 | BIGINT | 主键 |
| task_id | 任务ID | BIGINT | 关联 kpi_task.id |
| operate_type | 操作类型 | VARCHAR(20) | submit_self/manager_confirm/appeal/submit_final等 |
| operator_id | 操作人ID | BIGINT | 关联 sys_user.id |
| operator_name | 操作人 | VARCHAR(50) | |
| operator_role | 操作人角色 | VARCHAR(20) | employee/manager/hr |
| before_status | 操作前状态 | VARCHAR(20) | |
| after_status | 操作后状态 | VARCHAR(20) | |
| content | 操作说明 | VARCHAR(500) | |
| create_time | 操作时间 | DATETIME |
kpi_appeal| 字段 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| id | 主键 | BIGINT | 主键 |
| appeal_no | 申诉编号 | VARCHAR(30) | 格式:APL-202604-001 |
| task_id | 关联考核任务ID | BIGINT | 关联 kpi_task.id |
| appeal_type | 申诉类型 | VARCHAR(20) | score(分数)/ process(流程) |
| appeal_reason | 申诉原因 | VARCHAR(500) | |
| appeal_evidence | 补充材料 | VARCHAR(200) | 附件路径或链接 |
| handler_id | 处理人HR | BIGINT | 关联 sys_user.id |
| handle_result | 处理结果 | VARCHAR(500) | |
| adjust_score | 调整后最终分 | DECIMAL(5,1) | HR填写 |
| handle_status | 处理状态 | VARCHAR(20) | pending/processing/closed |
| handle_time | 处理时间 | DATETIME | |
| create_by | 申诉人 | VARCHAR(64) | 冗余 |
| create_time | 申诉时间 | DATETIME |
kpi_schedule_config配置每月自动生成考核任务的规则。
| 字段 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| id | 主键 | BIGINT | |
| config_key | 配置项编码 | VARCHAR(50) | 如 auto_generate_day / auto_generate_hour |
| config_value | 配置值 | VARCHAR(100) | 如 2 / 09:00 |
| description | 配置说明 | VARCHAR(200) | |
| status | 状态 | TINYINT | 1=启用 0=停用 |
| update_by | 更新人 | VARCHAR(64) | |
| update_time | 更新时间 | DATETIME |
| 模块 | 功能 | 涉及角色 |
|---|---|---|
| 指标管理 | 指标分组、指标的增删改查 | HR/管理员 |
| 岗位指标卡 | 岗位绑定指标模板,权重配置 | HR/管理员 |
| 考核任务 | 任务列表、详情查看 | 全体员工 |
| 自评 | 自评打分与提交 | 全体员工 |
| 上级考评 | 查看自评、上级打分与提交 | 管理者 |
| 确认与申诉 | 确认结果或发起申诉 | 全体员工 |
| HR申诉处理 | 查看申诉、处理、填写最终分 | HR |
| 定时任务配置 | 配置自动生成规则 | 管理员 |
| 统计报表 | 按月/部门/岗位查看得分 | 管理者/HR |
功能描述: 按类别管理考核指标分组(如"工作态度"、"业务能力"、"管理能力")。
表单字段:
列表页字段: 分组名称 | 分组编码 | 上级分组 | 指标数量 | 排序 | 状态 | 操作(编辑/删除/停用)
功能描述: 维护具体考核指标。
表单字段:
列表页字段: 指标名称 | 指标编码 | 所属分组 | 满分值 | 状态 | 操作
功能描述: 将岗位与指标组合绑定,配置权重。
表单字段:
指标配置(明细行): | 指标 | 所属分组(只读)| 权重(%)| 操作 | |------|------|------|------|
列表页字段: 模板名称 | 岗位名称 | 考核周期 | 指标数量 | 状态 | 操作
功能描述: 由 OA 平台定时器触发,每月自动生成考核任务。
配置项(存于 kpi_schedule_config):
自动任务触发逻辑(OA低码脚本):
触发时机:每月2日 09:00(OA定时器)
执 行 步 骤:
1. 读取 kpi_schedule_config,确认是否启用
2. 获取上一个自然月的年月(如 2026年3月)
3. 查询 sys_user_position,获取所有在职员工及其上级
4. 对每个员工:
a. 查找其岗位对应的 kpi_position_template(status=1)
b. 若找到模板,则在 kpi_task 中插入记录(status=pending_self)
c. 同时在 kpi_task_detail 中插入该模板下的所有指标行
5. 记录执行日志
OA低码平台实现建议:
入口: 员工工作台 → 我的考核
列表页字段: 考核月份 | 被考核人 | 考核人 | 状态 | 操作
列表默认显示当前用户 evaluatee_id = 当前登录人 的任务
状态筛选: 全部 / 待自评 / 待上级考评 / 待确认 / 申诉中 / 已结束
触发条件: status = pending_self 时可填写
页面布局:
┌─────────────────────────────────────────┐
│ 考核月份:2026年3月 │
│ 被考核人:张三(客服专员) │
│ 考核人:李四(客服主管) │
├─────────────────────────────────────────┤
│ 考核指标 │
├────┬──────┬──────┬──────┬──────┬───────┤
│ # │ 分组 │ 指标 │ 权重 │ 满分 │ 自评分 │
├────┼──────┼──────┼──────┼──────┼───────┤
│ 1 │工作态度│ 考勤 │ 20% │ 100 │ [ ] │
│ 2 │工作态度│ 协作 │ 20% │ 100 │ [ ] │
│ 3 │业务能力│ 业务 │ 40% │ 100 │ [ ] │
│ 4 │业务能力│ 质量 │ 20% │ 100 │ [ ] │
├────┴──────┴──────┴──────┴──────┴───────┤
│ 自评备注:[ ] │
├─────────────────────────────────────────┤
│ [保存草稿] [提交自评] │
└─────────────────────────────────────────┘
功能说明:
入口: 管理者工作台 → 考核管理 → 待考评
列表页字段: 考核月份 | 被考核人 | 岗位 | 状态 | 操作
列表显示 evaluator_id = 当前登录人的任务
列表字段说明:
触发条件: status = pending_manager 时可填写
页面布局:
┌─────────────────────────────────────────┐
│ 考核月份:2026年3月 │
│ 被考核人:张三(客服专员) │
│ 考核人:李四(客服主管)[当前登录人] │
├─────────────────────────────────────────┤
│ 【自评参考】 │
├────┬──────┬──────┬──────┬──────┬───────┤
│ # │ 分组 │ 指标 │ 权重 │ 自评分 │ 上级评分│
├────┼──────┼──────┼──────┼──────┼───────┤
│ 1 │工作态度│ 考勤 │ 20% │ 85 │ [ ] │
│ 2 │工作态度│ 协作 │ 20% │ 90 │ [ ] │
│ 3 │业务能力│ 业务 │ 40% │ 88 │ [ ] │
│ 4 │业务能力│ 质量 │ 20% │ 92 │ [ ] │
├────┴──────┴──────┴──────┴──────┴───────┤
│ 指标总分: -- 加权总分:-- │
│ 上级评语:[ ] │
├─────────────────────────────────────────┤
│ [保存草稿] [提交考评] │
└─────────────────────────────────────────┘
功能说明:
入口: 员工工作台 → 我的考核
触发条件: status = pending_confirm 时
确认页面:
┌─────────────────────────────────────────┐
│ 考核月份:2026年3月 │
│ 上级评分总分:88.0分 │
├─────────────────────────────────────────┤
│ 考核指标明细 │
├────┬──────┬──────┬──────┬──────┬───────┤
│ # │ 指标 │ 权重 │ 自评分 │ 上级评分│ 得分 │
├────┼──────┼──────┼──────┼──────┼───────┤
│ 1 │ 考勤 │ 20% │ 85 │ 80 │ 16.0 │
│ 2 │ 协作 │ 20% │ 90 │ 88 │ 17.6 │
│ 3 │ 业务 │ 40% │ 88 │ 92 │ 36.8 │
│ 4 │ 质量 │ 20% │ 92 │ 90 │ 18.0 │
├────┴──────┴──────┴──────┴──────┴───────┤
│ 上级评语:表现良好,工作细致 │
├─────────────────────────────────────────┤
│ [ 确认结果 ] [ 有异议,申请申诉 ] │
└─────────────────────────────────────────┘
确认后:
点击"有异议,申请申诉"后:
┌─────────────────────────────────────────┐
│ 申诉类型:○ 分数异议 ○ 流程异议 │
│ 申诉原因:[ ] │
│ 补充材料: [上传附件] │
├─────────────────────────────────────────┤
│ [取消] [提交申诉] │
└─────────────────────────────────────────┘
提交后:
入口: HR工作台 → 绩效管理 → 申诉处理
列表页字段: 申诉编号 | 考核月份 | 申诉人 | 被考核人 | 申诉类型 | 申诉时间 | 处理状态 | 操作
HR操作:
┌─────────────────────────────────────────┐
│ 申诉编号:APL-202604-001 │
│ 申诉人:张三 申诉时间:2026-04-03 │
│ 申诉类型:分数异议 │
│ 申诉原因:业务能力项评分过低…… │
│ 附件:[查看] │
├─────────────────────────────────────────┤
│ 【考核记录】 │
│ 指标 │ 权重 │ 自评分 │ 上级评分 │
│ 考勤 │ 20% │ 85 │ 80 │
│ 协作 │ 20% │ 90 │ 88 │
│ 业务 │ 40% │ 88 │ 70[红色] │
│ 质量 │ 20% │ 92 │ 90 │
├─────────────────────────────────────────┤
│ 处理意见:[ ] │
│ 最终得分调整:[ ](不调整则留空) │
├─────────────────────────────────────────┤
│ [驳回申诉] [确认申诉,调整分数] │
└─────────────────────────────────────────┘
处理结果:
驳回时:
确认调整时:
入口: 员工工作台 → 考核记录
页面: 列表展示个人历史各月考核结果,含状态(正常/申诉已调整)
入口: 管理者/HR → 统计报表 → 部门汇总
字段: | 员工姓名 | 岗位 | 上级 | 考核月份 | 考核得分 | 状态 | 操作 |
支持筛选: 年月、部门、岗位
支持导出 Excel:
| 角色 | 可操作模块 |
|---|---|
| 全体员工 | 自评填写、考核确认/申诉、查看个人考核记录 |
| 管理者 | 上级考评、管理下级考核记录、查看部门汇总 |
| HR | 全模块:指标管理、岗位指标卡、申诉处理、全部统计 |
| 系统管理员 | 定时任务配置、岗位指标卡配置 |
权限建议复用 OA 的角色体系,通过 OA 的权限控制实现。
| 触发时机 | 通知对象 | 通知内容 |
|---|---|---|
| 考核任务自动生成后 | 被考核人 | 您有一项新的考核任务(2026年3月)待自评 |
| 自评提交后 | 考核人(上级) | 员工张三已提交自评,请尽快完成上级考评 |
| 上级考评提交后 | 被考核人 | 您的考核已完成上级考评,请确认结果 |
| 申诉提交后 | HR | 收到一条绩效申诉(张三-2026年3月),请及时处理 |
| 申诉处理完成 | 被考核人 | 您的申诉已处理,结果为:[通过/驳回] |
通知渠道:建议复用 OA 内部消息系统。
在 OA 低码平台新建以下数据模型(对应上文章节二中的表):
kpi_indicator_groupkpi_indicatorkpi_position_template + 明细kpi_taskkpi_task_detailkpi_task_logkpi_appealkpi_schedule_config| 功能 | 建议实现方式 |
|---|---|
| 指标/模板配置 | 使用 OA 表单设计器,新建配置型表单 |
| 自评/上级考评/确认/申诉 | 使用 OA 流程引擎,配置审批流程 |
| 统计报表 | 使用 OA 报表/统计图表组件 |
| 定时任务 | 使用 OA 定时触发器 或 外部脚本调用 OA API |
若 OA 低码平台不支持复杂定时逻辑,建议写一个外部脚本(如 Python),由服务器定时触发(crontab/Windows计划任务),调用 OA 的开放 API 生成考核任务。
| 阶段 | 内容 | 优先级 |
|---|---|---|
| Phase 1 | 指标管理 + 岗位指标卡(基础配置) | 高 |
| Phase 2 | 自评 + 上级考评 + 确认(四段式流程) | 高 |
| Phase 3 | 申诉 + HR处理 | 中 |
| Phase 4 | 定时任务自动生成 | 中 |
| Phase 5 | 统计报表 + 导出 | 低 |
文档结束。如需进一步拆解为 OA 低码平台的具体表单配置步骤或SQL建表语句,请告知。