更新日期: 2026年2月23日
项目版本: 1.0.0
整体完成度: ~92%(核心业务逻辑)
SmartATS 是一套面向 HR 的智能招聘管理系统,基于 Spring Boot 3.2.5 + JDK 21 构建,集成了 AI 简历解析(智谱AI)、异步任务处理(RabbitMQ)、分布式锁(Redisson)、缓存机制(Redis)等现代化技术栈。
| 组件 | 技术 | 版本 | 状态 |
|---|---|---|---|
| 核心框架 | Spring Boot | 3.2.5 | ✅ |
| 运行时 | JDK | 21 | ✅ |
| ORM | MyBatis-Plus | 3.5.10.1 | ✅ |
| 数据库 | MySQL | 8.0 | ✅ |
| 缓存 | Redis | 7.0 | ✅ StringRedisTemplate |
| 分布式锁 | Redisson | 3.25.0 | ✅ |
| 消息队列 | RabbitMQ | 3.12 | ✅ |
| 对象存储 | MinIO | 8.5.10 | ✅ |
| AI 集成 | Spring AI + 智谱AI | 1.0.0-M4 | ✅ |
| 文档处理 | Apache POI + PDFBox | 5.2.5 / 2.0.29 | ✅ |
| 安全 | Spring Security + JWT | 随 Boot 3.2.5 | ✅ |
| JSON | Fastjson2 | 2.0.43 | ✅ |
| 工具库 | Hutool | 5.8.23 | ✅ |
8 个文件:
Result.java— 统一响应封装ResultCode.java— 错误码枚举(6 个模块:10xxx~43xxx)BusinessException.java— 业务异常GlobalExceptionHandler.java— 全局异常处理(8 种处理器)RedisKeyConstants.java— Redis Key 常量统一管理FileValidationUtil.java— 文件验证(类型 + 魔数检查)DataMaskUtil.java— 数据脱敏(手机号、邮箱)JsonTypeHandler.java— MyBatis JSON 类型处理器
12 个文件,5 个 API 端点:
| 方法 | 路径 | 认证 | 说明 |
|---|---|---|---|
| POST | /api/v1/auth/register |
❌ | 用户注册(BCrypt 加密,禁止自注册 ADMIN) |
| POST | /api/v1/auth/login |
❌ | 登录(accessToken 2h + refreshToken 7d) |
| POST | /api/v1/auth/send-verification-code |
❌ | 发送邮箱验证码 |
| POST | /api/v1/auth/refresh |
❌ | 刷新 Token |
| GET | /api/v1/auth/test |
✅ | 测试认证状态 |
10 个文件,8 个 API 端点:
| 方法 | 路径 | 认证 | 说明 |
|---|---|---|---|
| POST | /api/v1/jobs |
✅ | 创建职位 |
| PUT | /api/v1/jobs |
✅ | 更新职位 |
| GET | /api/v1/jobs/{id} |
❌ | 获取详情(Redis 缓存 30min) |
| GET | /api/v1/jobs |
❌ | 分页查询 |
| POST | /api/v1/jobs/{id}/publish |
✅ | 发布职位 |
| POST | /api/v1/jobs/{id}/close |
✅ | 关闭职位 |
| DELETE | /api/v1/jobs/{id} |
✅ | 删除职位 |
| GET | /api/v1/jobs/hot |
❌ | 热门排行(ZSet) |
缓存策略:cache-aside + 延迟双删(CacheEvictionService)+ GETDEL 原子浏览计数同步。
11 个文件,4 个 API 端点:
| 方法 | 路径 | 认证 | 说明 |
|---|---|---|---|
| POST | /api/v1/resumes/upload |
✅ | 单文件上传(PDF/DOC/DOCX,≤10MB) |
| GET | /api/v1/resumes/tasks/{taskId} |
✅ | 查询解析任务状态 |
| GET | /api/v1/resumes/{id} |
✅ | 获取简历详情 |
| GET | /api/v1/resumes |
✅ | 分页查询 |
处理流程:上传 → MD5 去重 → MinIO 存储 → MQ 消息 → Consumer(幂等检查 + Redisson 锁 + AI 解析 + 保存候选人 + Webhook 通知)。
7 个文件,5 个 API 端点:
| 方法 | 路径 | 认证 | 说明 |
|---|---|---|---|
| GET | /api/v1/candidates/resume/{resumeId} |
✅ | 按简历 ID 查询 |
| GET | /api/v1/candidates/{id} |
✅ | 获取详情(Redis 缓存) |
| PUT | /api/v1/candidates/{id} |
✅ | 更新候选人(@Valid) |
| DELETE | /api/v1/candidates/{id} |
✅ | 删除候选人 |
| GET | /api/v1/candidates |
✅ | 分页查询(多维筛选 + 脱敏) |
8 个文件,6 个 API 端点:
| 方法 | 路径 | 认证 | 说明 |
|---|---|---|---|
| POST | /api/v1/applications |
✅ | 创建申请(防重复) |
| PUT | /api/v1/applications/{id}/status |
✅ | 更新状态 |
| GET | /api/v1/applications/{id} |
✅ | 获取详情 |
| GET | /api/v1/applications/job/{jobId} |
✅ | 某职位的申请列表 |
| GET | /api/v1/applications/candidate/{candidateId} |
✅ | 某候选人的申请列表 |
| GET | /api/v1/applications |
✅ | 分页查询 |
状态流转:PENDING → REVIEWING → INTERVIEW → OFFER / REJECTED。
7 个文件,5 个 API 端点:
| 方法 | 路径 | 认证 | 说明 |
|---|---|---|---|
| POST | /api/v1/interviews |
✅ | 安排面试 |
| PUT | /api/v1/interviews/{id}/feedback |
✅ | 提交反馈 |
| POST | /api/v1/interviews/{id}/cancel |
✅ | 取消面试 |
| GET | /api/v1/interviews/{id} |
✅ | 获取详情 |
| GET | /api/v1/interviews/application/{applicationId} |
✅ | 某申请的面试轮次 |
10 个文件,4 个 API 端点,13 种事件类型。
| 方法 | 路径 | 认证 | 说明 |
|---|---|---|---|
| POST | /api/v1/webhooks |
✅ | 创建 Webhook |
| GET | /api/v1/webhooks |
✅ | 查询列表 |
| DELETE | /api/v1/webhooks/{id} |
✅ | 删除 Webhook |
| POST | /api/v1/webhooks/{id}/test |
✅ | 测试 Webhook |
- 基础设施(4 文件):EmailService, MessagePublisher, FileStorageService, MinioFileStorageService
- 配置(6 文件):SecurityConfig, RabbitMQConfig, MinioConfig, AsyncConfig, RedissonConfig, ZhipuAiConfig
全面审计并修复 34 项问题:
| 类别 | 修复内容 |
|---|---|
| 安全 | 移除密码日志、禁止 ADMIN 自注册、JWT 异常安全处理 |
| 性能 | N+1 查询修复(批量加载)、缓存读取逻辑修正、GETDEL 原子操作 |
| 架构 | CacheEvictionService 提取、RedisKeyConstants 统一、Controller 逻辑下沉 |
| 异常 | RuntimeException → BusinessException、GlobalExceptionHandler 增强 |
| MQ | basicNack 死循环修复为 republish、发送失败状态更新 |
| 清理 | WebhookService 内存泄漏修复、SQL 注入风险 LIMIT 修复 |
| 优先级 | 任务 | 预计时间 |
|---|---|---|
| 🔴 高 | 补充单元测试(覆盖率 ~0%) | 1-2 周 |
| 🟡 中 | 批量上传接口 | 1-2 天 |
| 🟡 中 | Swagger/OpenAPI 接入 | 0.5 天 |
| 🟡 中 | 向量数据库 + RAG 语义搜索 | 1 周 |
| 🟢 低 | 环境分离配置(dev/staging/prod) | 1 天 |
| 指标 | 数值 |
|---|---|
| Java 源文件 | 84 个 |
| 总 API 端点 | 37 个 |
| 业务模块 | 7 个 |
| 数据表 | 8 张 |
| Redis Key 类型 | 14 种 |
| Webhook 事件类型 | 13 种 |
报告生成时间: 2026-02-23