Skip to content

Repository files navigation

HireFlow

HireFlow 是一个面向中小团队的招聘流程协同系统,目标是把“职位发布、候选人投递、简历管理、面试安排、Offer 审批、通知、看板”串成一个完整的后端工程项目。

当前版本优先落地的是 运行壳与工程化基础

  • hireflow-boot 已经可以作为独立启动模块运行
  • demo/dev/test/prod Profile 已配置完成
  • 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/overview
  • GET /actuator/health
  • GET /actuator/info
  • GET /actuator/metrics
  • GET /actuator/loggers
  • GET /v3/api-docs
  • GET /swagger-ui.html
  • GET /h2-console,仅 dev/demo Profile 可用

规划中的业务 API 已整理在 API 总览

快速启动

1. 以独立运行壳方式启动

当前其他业务模块仍在并行开发,建议先直接启动 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

2. 访问入口

  • 运行态首页: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

3. H2 Console 连接信息

  • JDBC URL:jdbc:h2:mem:hireflow-demo
  • Username:sa
  • Password:空

Profiles

Profile 用途 数据源 说明
dev 本地开发 H2 文件库 便于保留本地开发数据
test 测试 H2 内存库 适合集成测试
demo 演示 H2 内存库 自动加载 schema.sqldata-demo.sql
prod 生产预留 外部数据库 不自动初始化数据

Demo 数据

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
Loading

文档

工程化约定

  • 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 独立启动和打包。
  • 当所有模块都落地后,再回到根目录执行完整的多模块构建。

Roadmap

  • P0:运行壳、文档、Profile、SQL、OpenAPI、Actuator
  • P1:职位、候选人、投递、面试、Offer 主流程
  • P2:Redis、RabbitMQ、Outbox、WebSocket
  • P3:测试、监控、并发场景、工程化补强
  • P4:按需演进到 Spring Cloud

详细规划见 Roadmap 文档

About

Recruitment workflow collaboration system built as a Spring Boot modular monolith.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages