# 组织人事管理平台 这是一个面向内部软件测评模拟检测的企业人力资源管理系统样本程序。项目采用单企业、单租户、前后端分离、模块化单体架构,覆盖员工档案、招聘、入离职、考勤、薪酬、绩效、权限审计、报表导出、接口集成等业务。 ## 技术栈 - 后端:Java 21、Spring Boot 3.5、Spring Web、Validation、Security、Data JPA、Actuator、Flyway、PostgreSQL、Redis、RabbitMQ - 前端:Vue 3、TypeScript、Vite、Pinia、Vue Router、Element Plus - 测试:JUnit 5、Testcontainers、Playwright、k6、ZAP API Scan - 部署:Dockerfile、Docker Compose、GitHub Actions ## 启动方式 ```bash scripts/dev-up.sh ``` 启动后访问: - 前端:http://localhost:5173 - 后端:http://localhost:8080 - Swagger UI:http://localhost:8080/swagger-ui.html - 健康检查:http://localhost:8080/actuator/health 停止: ```bash scripts/dev-down.sh ``` ## 默认账号 默认密码均为 `ChangeMe123!`。 | 账号 | 角色 | |---|---| | sys_admin | SYSTEM_ADMIN | | hr_admin | HR_ADMIN | | recruiter_01 | RECRUITER | | manager_01 | DEPT_MANAGER | | payroll_admin | PAYROLL_ADMIN | | employee_0001 | EMPLOYEE_SELF | | auditor_01 | AUDITOR | | integration_client | INTEGRATION_CLIENT | 登录页不提供账号密码快捷填充。完整功能验收建议手动输入 `sys_admin`;人事权限边界测试建议使用 `hr_admin`;薪酬、审计、集成等模块请分别使用对应角色账号验证最小权限。 ## 模块清单 - 员工档案:部门树、岗位、员工主档、编辑、转岗、离职流程、归档、附件元数据、敏感字段脱敏。 - 招聘:招聘需求、候选人、面试安排、面试通过/不通过/未参加、Offer 接受/拒绝、转入职、未到岗。 - 入离职:后台新建入职单和离职单、清单勾选、账号激活、离职交接、账号停用、流程取消。 - 考勤:班次、签到签退、异常识别、请假申请、同意/拒绝审批、考勤记录修正、CSV 导入任务。 - 薪酬:期间、薪资项目、部门/员工薪酬变量、公式核算、复核、审批、锁定、工资单发布。 - 绩效:周期发布与编辑、模板权重校验、目标、自评、经理评分、绩效记录修正、分布统计。 - 权限审计:JWT、Refresh Token、登录锁定、角色权限、数据范围、审计 hash 链。 - 报表导出:人员结构、招聘漏斗、考勤汇总、薪酬汇总、绩效分布、CSV/XLSX 异步导出;前端下载使用带令牌的文件请求。 - 接口集成:受限查询、签名校验、幂等键、Webhook 事件。 - 权限管理:角色、权限、角色权限关系、数据范围配置。 - 任务监控:导入任务、导出任务、集成事件、失败任务摘要。 ## 测试方式 后端单元测试: ```bash cd backend ./mvnw test ``` 前端构建: ```bash cd frontend npm ci npm run build ``` 冒烟测试: ```bash scripts/run-smoke.sh ``` 性能测试: ```bash scripts/run-k6.sh tests/perf/login.js scripts/run-k6.sh tests/perf/employee-search.js ``` 安全扫描: ```bash scripts/run-zap-api-scan.sh ``` ## 故障注入 `lab` profile 支持通过环境变量控制故障点: - `LAB_EXPORT_DELAY_MS`:导出额外延迟 - `LAB_PAYROLL_DELAY_MS`:薪酬核算额外延迟 - `LAB_WEBHOOK_FORCE_5XX`:Webhook 接收端返回失败 - `LAB_FORMULA_EXCEPTION`:薪酬公式异常 - `LAB_CACHE_DISABLED`:关闭幂等键缓存写入 ## 备份恢复 ```bash scripts/backup.sh scripts/restore.sh storage/backups/backup.sql ``` ## 常见问题 - 首次启动会生成 2000 名员工、500 名候选人和 180 天考勤数据,初始化需要一些时间。 - 如果端口被占用,请修改 `deploy/docker-compose.yml` 的端口映射。 - 如果 Docker 未启动,后端可用本地 Maven 构建,前端可用本地 Node 构建。