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