2.1 KiB
2.1 KiB
Backend
Kotlin + Spring Boot 模块化单体。计划模块:boot、identity、organization、authorization、workflow、form、approval、document、notification、ai-orchestration 和 audit。
模块必须通过应用接口协作,不能直接访问其他模块拥有的表。
本地构建
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、写入幂等、租户隔离和乐观锁冲突处理
开发身份
本地 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 管理员 |
这些凭据只允许用于本地开发,生产 Realm 不得导入测试用户,也不得启用密码模式。
PostgreSQL 使用版本化开发卷 postgres-data-v1,避免复用其他项目或旧凭据初始化的数据目录。切换卷版本不会删除旧卷。
开发数据库通过宿主机端口 15432 访问,容器内部仍使用 PostgreSQL 默认端口 5432。