Files
2026-04-11 11:51:54 +08:00

9.5 KiB
Raw Permalink Blame History

实施计划 - 员工月度绩效考核系统

概述

按照前后端分离架构,分阶段实施:先搭建后端基础设施和核心业务逻辑,再实现前端各角色页面,最后集成 AI 评分和统计分析功能。

任务

  • 1. 项目初始化与基础设施搭建

    • 初始化后端 Node.js + TypeScript + Express 项目结构
    • 初始化前端 React + TypeScript + Ant Design 项目结构
    • 配置 MySQL 数据库连接(使用 mysql2 驱动)
    • 创建数据库初始化脚本6张表的 DDL
    • 配置环境变量(.envDB连接、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
  • 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
  • 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
  • 11. 总经理端接口

    • 11.1 实现考核规则配置接口 /api/config/rules
      • 支持修改考核指标权重、评分标准、奖惩金额
      • 修改后记录操作日志,应用于后续考核周期
      • Requirements: 8.5, 8.6
  • 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
  • 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
  • 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
  • 15. 总经理端前端页面

    • 15.1 实现全公司绩效总览页面 CompanyOverview
      • 各部门、各岗位绩效整体情况ECharts 柱状图和饼图,多维度筛选
      • Requirements: 8.1, 8.2, 8.3
    • 15.2 实现全量数据导出和考核规则配置页面
      • 全量 Excel 导出,考核指标权重和奖惩金额配置表单
      • Requirements: 8.4, 8.5, 8.6
  • 16. 最终检查点 — 确保所有测试通过,前后端联调完成,如有问题请告知

备注

  • 标有 * 的任务为可选测试任务,可跳过以加快 MVP 交付
  • 每个任务引用了具体的需求条目,便于追溯
  • 检查点任务确保每个阶段的增量验证
  • 属性测试使用 fast-check 库,每个属性最少运行 100 次迭代