9.5 KiB
实施计划 - 员工月度绩效考核系统
概述
按照前后端分离架构,分阶段实施:先搭建后端基础设施和核心业务逻辑,再实现前端各角色页面,最后集成 AI 评分和统计分析功能。
任务
-
1. 项目初始化与基础设施搭建
- 初始化后端 Node.js + TypeScript + Express 项目结构
- 初始化前端 React + TypeScript + Ant Design 项目结构
- 配置 MySQL 数据库连接(使用 mysql2 驱动)
- 创建数据库初始化脚本(6张表的 DDL)
- 配置环境变量(.env:DB连接、JWT密钥、FastGPT API Key)
- Requirements: 9.1, 10.5
-
2. 用户认证模块
-
2.1 实现用户登录接口
/api/user/login- 查询用户表验证用户名、密码(bcrypt 比对)和角色
- 生成 JWT token(有效期 24 小时),返回 userInfo
- Requirements: 1.1, 1.2
-
2.2 实现 JWT 认证中间件
- 验证请求头中的 token,解析用户信息注入 req.user
- token 过期或无效时返回 401
- Requirements: 1.4
-
2.3 实现角色权限中间件
- 根据路由配置允许的角色列表,验证当前用户角色
- 权限不足时返回 403
- Requirements: 1.3, 1.5
-
2.4 编写认证模块属性测试
- 属性 1: 认证正确性 — 对任意凭据,认证结果与凭据有效性一致
- 属性 2: 权限隔离不变量 — 员工无法访问他人数据
- Validates: Requirements 1.1, 1.2, 1.5
-
-
3. 数据库访问层(DAO)
- 3.1 实现 UserDAO
findByUsername(username): 按用户名查询findSubordinates(managerId): 查询下属列表- Requirements: 1.1, 4.1
- 3.2 实现 PerformanceDAO
upsert(data): 创建或更新绩效记录(支持暂存/提交)findByUserAndMonth(userId, month): 查询指定月份绩效findByManagerId(managerId, filters, page): 查询下属绩效列表updateStatus(perfId, status): 更新绩效状态updateReview(perfId, reviewData): 更新审核结果- Requirements: 2.5, 2.6, 4.1, 4.5, 9.1
- 3.3 实现 AIResultDAO
save(aiResult): 保存 AI 评分结果findByPerfId(perfId): 查询绩效对应的 AI 结果- Requirements: 3.2, 3.3
- 3.1 实现 UserDAO
-
4. 考勤分数计算与绩效等级模块
-
4.1 实现考勤分数计算函数
calculateAttendanceScore- 基础分 10 分,事假每天扣 5 分,迟到/缺卡每次扣 2 分,下限 0 分
- Requirements: 11.1, 11.2, 11.3, 11.5
-
4.2 实现绩效等级与奖惩计算函数
calculateLevelAndReward- 根据总分返回等级(excellent/qualified/need_motivation/unqualified)和奖惩说明
- Requirements: 5.1, 5.2, 5.3, 5.4, 5.5
-
4.3 实现连续低分预警检测函数
checkConsecutiveLowScore- 查询员工最近 N 个月记录,检测连续低于 60 分的情况
- Requirements: 5.6, 5.7
-
4.4 编写计算模块属性测试
- 属性 5: 绩效等级与奖惩计算正确性 — 对任意分数,等级和奖惩符合规则
- 属性 6: 连续低分预警正确性 — 连续低分正确触发预警
- 属性 8: 考勤分数计算正确性 — 对任意考勤数据,分数计算正确且不低于 0
- Validates: Requirements 5.1-5.7, 11.1-11.5
-
-
5. 检查点 — 确保所有测试通过,如有问题请告知
-
6. 员工端绩效填报接口
-
6.1 实现绩效提交接口
/api/performance/submit- 支持 draft(暂存)和 submit(提交)两种状态
- 使用数据库事务同时写入 performance_month、perf_item、attendance 三张表
- 提交时触发异步 AI 评分(不阻塞响应)
- Requirements: 2.1, 2.2, 2.3, 2.5, 2.6
-
6.2 实现个人绩效查询接口
/api/performance/employee/get- 支持按月份筛选和分页
- 返回绩效记录含 AI 结果、考勤、审核意见
- Requirements: 6.1, 6.2, 6.3, 6.4, 6.5
-
6.3 实现修改申请接口
/api/performance/request-modification- 员工发起申请,记录申请原因,通知管理层
- Requirements: 12.1, 12.2
-
6.4 编写员工端接口属性测试
- 属性 3: 草稿暂存往返一致性 — 暂存后读取数据一致
- 属性 4: 提交幂等性 — 同一用户同月不可重复提交
- 属性 7: 绩效记录查询完整性 — 提交后查询必能找到
- Validates: Requirements 2.5, 2.6, 6.1
-
-
7. AI 评分模块
-
7.1 实现 FastGPT 调用服务
AIEvaluationService- 构建包含岗位、月份、填报内容、考核规则的 Prompt
- 调用 FastGPT API(超时 10s)
- Requirements: 13.1, 13.2
-
7.2 实现 AI 响应解析函数
parseAIResponse- 解析 JSON 格式响应,提取 ai_score_detail、ai_total_score、ai_problems、ai_suggestions
- 验证格式合法性,异常时记录原始响应并抛出错误
- Requirements: 3.2, 3.3, 3.4, 13.3, 13.4
-
7.3 实现重试机制(最多 3 次)和错误降级处理
- Requirements: 3.5
-
7.4 编写 AI 模块属性测试
- 属性 9: AI 响应 JSON 解析往返一致性 — 解析后序列化得到等价对象
- 属性 10: AI 输出格式约束 — problems 和 suggestions 数组长度在 3-5 之间
- Validates: Requirements 3.3, 3.4, 3.6
-
-
8. 管理层审核接口
- 8.1 实现下属绩效列表接口
/api/performance/manager/list- 支持按月份、部门、员工姓名、状态筛选和分页
- Requirements: 4.1, 7.1, 7.2
- 8.2 实现绩效审核接口
/api/performance/manager/review- 更新各考核项管理层评分和说明
- 计算最终总分、等级、奖惩,归档绩效记录(状态改为 completed)
- Requirements: 4.3, 4.4, 4.5, 4.7
- 8.3 实现绩效驳回接口
/api/performance/manager/reject- 记录驳回原因,状态改为 rejected
- Requirements: 4.6
- 8.4 实现修改申请审批接口
/api/performance/manager/approve-modification- 同意时解锁绩效记录,拒绝时通知员工
- Requirements: 12.3, 12.4
- 8.1 实现下属绩效列表接口
-
9. 检查点 — 确保所有测试通过,如有问题请告知
-
10. 统计分析与导出接口
- 10.1 实现团队统计接口
/api/statistics/team- 统计下属团队平均分、优秀/合格/需激励人数及占比
- Requirements: 7.4, 7.5
- 10.2 实现全公司统计接口
/api/statistics/company- 按部门、岗位、绩效等级多维度统计
- Requirements: 8.1, 8.2
- 10.3 实现 Excel 导出接口
/api/performance/export- 使用 exceljs 生成 Excel 文件,支持单员工历史和团队批量导出
- Requirements: 7.3, 7.6, 8.4
- 10.1 实现团队统计接口
-
11. 总经理端接口
- 11.1 实现考核规则配置接口
/api/config/rules- 支持修改考核指标权重、评分标准、奖惩金额
- 修改后记录操作日志,应用于后续考核周期
- Requirements: 8.5, 8.6
- 11.1 实现考核规则配置接口
-
12. 前端基础框架搭建
- 12.1 配置 React Router,定义三类角色的路由结构
- 员工路由:
/employee/*,管理层路由:/manager/*,总经理路由:/gm/* - Requirements: 1.3
- 员工路由:
- 12.2 实现登录页面和 AuthContext
- 登录表单(用户名、密码、角色选择),登录成功后存储 token 跳转对应角色首页
- Requirements: 1.1, 1.2
- 12.3 实现 Axios 请求拦截器
- 自动携带 token,处理 401/403 响应(跳转登录页)
- Requirements: 1.4
- 12.1 配置 React Router,定义三类角色的路由结构
-
13. 员工端前端页面
- 13.1 实现绩效填报页面
PerformanceForm- 自动带出考核月份、员工基础信息
- 17 项考核指标逐项填写(完成情况描述 + 自评分 + 可选佐证上传)
- 考勤数据填写区域、工作汇总文本区域、暂存和提交按钮
- Requirements: 2.1, 2.2, 2.3, 2.4, 2.5, 2.6
- 13.2 实现个人绩效历史页面
PerformanceHistory- 绩效记录列表(含状态、总分、等级),月份筛选和分页
- 点击查看详情(含 AI 评分、AI 问题/建议、审核意见、奖惩说明)
- Requirements: 6.1, 6.2, 6.3, 6.4, 6.5
- 13.1 实现绩效填报页面
-
14. 管理层端前端页面
- 14.1 实现下属绩效列表页面
SubordinateList- 列表展示员工绩效状态,筛选条件(月份、部门、姓名、状态)
- Requirements: 4.1, 7.1, 7.2
- 14.2 实现绩效审核页面
PerformanceReview- 展示员工填报内容、自评分、AI 评分及 AI 反馈
- 可调整各考核项分数并填写说明,提交审核通过或驳回
- Requirements: 4.2, 4.3, 4.4, 4.5, 4.6
- 14.3 实现团队统计页面
TeamStatistics- 显示团队平均分、各等级人数及占比,Excel 导出按钮
- Requirements: 7.3, 7.4, 7.5
- 14.1 实现下属绩效列表页面
-
15. 总经理端前端页面
- 15.1 实现全公司绩效总览页面
CompanyOverview- 各部门、各岗位绩效整体情况,ECharts 柱状图和饼图,多维度筛选
- Requirements: 8.1, 8.2, 8.3
- 15.2 实现全量数据导出和考核规则配置页面
- 全量 Excel 导出,考核指标权重和奖惩金额配置表单
- Requirements: 8.4, 8.5, 8.6
- 15.1 实现全公司绩效总览页面
-
16. 最终检查点 — 确保所有测试通过,前后端联调完成,如有问题请告知
备注
- 标有
*的任务为可选测试任务,可跳过以加快 MVP 交付 - 每个任务引用了具体的需求条目,便于追溯
- 检查点任务确保每个阶段的增量验证
- 属性测试使用 fast-check 库,每个属性最少运行 100 次迭代