Skip to content

Latest commit

 

History

History
202 lines (146 loc) · 7 KB

File metadata and controls

202 lines (146 loc) · 7 KB

SmartATS 项目进度总结报告

更新日期: 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

模块完成情况

1. 公共模块 (common/) — 100% ✅

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 类型处理器

2. 认证模块 (module/auth/) — 98% ✅

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 测试认证状态

3. 职位管理模块 (module/job/) — 95% ✅

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 原子浏览计数同步。


4. 简历模块 (module/resume/) — 95% ✅

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 通知)。


5. 候选人模块 (module/candidate/) — 95% ✅

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 分页查询(多维筛选 + 脱敏)

6. 职位申请模块 (module/application/) — 95% ✅

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. 面试记录模块 (module/interview/) — 95% ✅

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} 某申请的面试轮次

8. Webhook 模块 (module/webhook/) — 95% ✅

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

9. 基础设施层 + 配置层 — 100% ✅

  • 基础设施(4 文件):EmailService, MessagePublisher, FileStorageService, MinioFileStorageService
  • 配置(6 文件):SecurityConfig, RabbitMQConfig, MinioConfig, AsyncConfig, RedissonConfig, ZhipuAiConfig

代码质量优化记录(2026-02-23)

全面审计并修复 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