Files
AIOA/backend/README.md
T
2026-07-18 08:57:45 +08:00

2.7 KiB

Backend

Kotlin + Spring Boot 模块化单体。计划模块:bootidentityorganizationauthorizationworkflowformapprovaldocumentnotificationai-orchestrationaudit

模块必须通过应用接口协作,不能直接访问其他模块拥有的表。

本地构建

export JAVA_HOME=/usr/local/opt/openjdk@21/libexec/openjdk.jdk/Contents/Home
export GRADLE_USER_HOME=/tmp/aioa-gradle-home
./gradlew test

本机默认 ~/.gradle 原生缓存存在加载问题,因此当前建议为项目构建显式设置 GRADLE_USER_HOME

当前能力

  • Spring Boot 3.5.3 / Kotlin 2.1.21 / JDK 21
  • OAuth2 Resource Server,健康检查匿名可访问,业务 API 默认要求认证
  • X-Trace-Id 接收、校验、生成、响应回传与日志上下文
  • RFC 9457 application/problem+json 风格的统一异常处理
  • PostgreSQL、jOOQ 与 Flyway
  • 基础 Schema 和审计事件表迁移
  • 租户、用户、部门、岗位、任职关系和业务角色模型
  • /api/v1/me 根据 JWT 租户与 Subject 查询 OA 权威用户数据
  • 请假草稿创建、修改、本人查询和列表
  • UUIDv7、写入幂等、租户隔离和乐观锁冲突处理
  • 请假提交、撤回、状态时间线与事务内审计
  • Flowable 7.2 部门主管审批 BPMN、待办、批准和驳回
  • 复杂流程安全边界:中间串行/并行任务不提前结束业务申请
  • 条件串行流程:不超过 24 小时由主管审批,超过 24 小时增加 OA 管理员复核
  • 并行会签:超过 24 小时的年假由 OA 与 HR 同时复核,全部同意才通过

Flowable 开发环境自动维护 flowable Schema。生产环境必须设置 FLOWABLE_SCHEMA_UPDATE=false,并通过受控数据库变更流程管理 Flowable 表结构。

开发身份

本地 Keycloak Realm 为 aioa,移动端公共客户端为 aioa-mobile,启用 Authorization Code + PKCE。为了便于本地联调,还暂时启用了 Direct Access Grant。 开发环境的 OIDC Issuer 固定为 http://localhost:8081/realms/aioa;客户端和后端不能混用 127.0.0.1,因为 JWT Issuer 必须完全一致。

用户名 密码 角色
employee Employee123! 普通员工
manager Manager123! 员工、部门主管
admin Admin123! 员工、OA 管理员
hr HrReviewer123! 员工、人力资源复核人

这些凭据只允许用于本地开发,生产 Realm 不得导入测试用户,也不得启用密码模式。

PostgreSQL 使用版本化开发卷 postgres-data-v1,避免复用其他项目或旧凭据初始化的数据目录。切换卷版本不会删除旧卷。 开发数据库通过宿主机端口 15432 访问,容器内部仍使用 PostgreSQL 默认端口 5432