HireFlow 是一个面向中小团队的招聘流程协同系统,目标是把“职位发布、候选人投递、简历管理、面试安排、Offer 审批、通知、看板”串成一个完整的后端工程项目。
当前版本优先落地的是 运行壳与工程化基础:
hireflow-boot已经可以作为独立启动模块运行demo/dev/test/prodProfile 已配置完成- H2 Demo 数据、Actuator、OpenAPI、Logback、Banner 已接入
- 文档、数据库脚本、根目录说明与许可证已补齐
其余业务模块正在由其他 worker 并行补充,这样做的目的,是先把项目做成一个“能启动、能讲清楚、能承接后续模块”的结构化单体。
这个项目不是“课程作业式 CRUD”,而是一个带有明确流程和状态机约束的招聘协同系统。它非常适合作为求职后端项目,因为它同时具备:
- 完整业务闭环
- 清晰模块边界
- 事务、一致性、异步和通知等工程话题
- 从单体平滑演进到分布式的空间
hireflow/
├── docs/
│ ├── api/
│ ├── architecture/
│ ├── database/
│ ├── roadmap/
│ └── screenshots/
├── hireflow-application/
├── hireflow-boot/
├── hireflow-common/
├── hireflow-domain/
├── hireflow-infra/
├── hireflow-web/
├── hireflow-worker/
├── mvnw
├── mvnw.cmd
├── pom.xml
├── README.md
└── LICENSE
| 模块 | 说明 |
|---|---|
hireflow-boot |
启动、Profile、日志、SQL 初始化、OpenAPI、Actuator、运行时打包 |
hireflow-common |
公共基础对象、异常、常量、工具 |
hireflow-domain |
领域模型、状态机、业务规则 |
hireflow-infra |
数据库、缓存、消息、文件、外部集成 |
hireflow-application |
用例编排和事务边界 |
hireflow-web |
REST、Filter、Interceptor、WebSocket |
hireflow-worker |
Outbox、重试、提醒、统计任务 |
当前已经落地并可运行的是运行壳能力:
GET /GET /api/runtime/overviewGET /actuator/healthGET /actuator/infoGET /actuator/metricsGET /actuator/loggersGET /v3/api-docsGET /swagger-ui.htmlGET /h2-console,仅dev/demoProfile 可用
规划中的业务 API 已整理在 API 总览。
当前其他业务模块仍在并行开发,建议先直接启动 hireflow-boot:
.\mvnw -f .\hireflow-boot\pom.xml spring-boot:run -Dspring-boot.run.profiles=demo如果需要打包,可使用:
.\mvnw -f .\hireflow-boot\pom.xml -DskipTests package
java -jar .\hireflow-boot\target\hireflow-boot-1.0.0-SNAPSHOT.jar --spring.profiles.active=demo- 运行态首页:
http://localhost:8080/ - Swagger UI:
http://localhost:8080/swagger-ui.html - 健康检查:
http://localhost:8080/actuator/health - 应用信息:
http://localhost:8080/actuator/info - H2 Console:
http://localhost:8080/h2-console
- JDBC URL:
jdbc:h2:mem:hireflow-demo - Username:
sa - Password:空
| Profile | 用途 | 数据源 | 说明 |
|---|---|---|---|
dev |
本地开发 | H2 文件库 | 便于保留本地开发数据 |
test |
测试 | H2 内存库 | 适合集成测试 |
demo |
演示 | H2 内存库 | 自动加载 schema.sql 和 data-demo.sql |
prod |
生产预留 | 外部数据库 | 不自动初始化数据 |
demo Profile 已预置:
- 4 个角色账号
- 3 个部门
- 2 个开放职位
- 3 个候选人
- 3 条投递主线
- 2 场面试安排
- 1 条 Offer 审批记录
- 若干通知任务和 outbox 事件
预置账号如下。当前运行壳尚未接入登录接口,但数据已经为后续认证模块预留完成:
| 用户名 | 密码 | 角色 |
|---|---|---|
admin |
hireflow123 |
SUPER_ADMIN |
recruiter.lee |
hireflow123 |
RECRUITER |
interviewer.chen |
hireflow123 |
INTERVIEWER |
manager.wang |
hireflow123 |
HIRING_MANAGER |
flowchart LR
Boot["hireflow-boot"] --> Web["hireflow-web"]
Boot --> Application["hireflow-application"]
Boot --> Infra["hireflow-infra"]
Boot --> Domain["hireflow-domain"]
Boot --> Common["hireflow-common"]
Boot --> Worker["hireflow-worker"]
Web --> Application
Worker --> Application
Application --> Domain
Application --> Infra
- Java 17
- Spring Boot 3.x
- Maven Wrapper
- Logback
- Springdoc OpenAPI
- Actuator
- H2 Demo Profile
hireflow-boot 使用 scanBasePackages = "com.hireflow",这样后续业务模块只要位于统一包名体系中,就能被运行壳自动接入。
- 当前根目录的多模块聚合构建还依赖其他 worker 补齐各子模块
pom.xml与实现。 - 因此现阶段推荐直接用
hireflow-boot/pom.xml独立启动和打包。 - 当所有模块都落地后,再回到根目录执行完整的多模块构建。
- P0:运行壳、文档、Profile、SQL、OpenAPI、Actuator
- P1:职位、候选人、投递、面试、Offer 主流程
- P2:Redis、RabbitMQ、Outbox、WebSocket
- P3:测试、监控、并发场景、工程化补强
- P4:按需演进到 Spring Cloud
详细规划见 Roadmap 文档。