Files
conti-backend/docs/README.md
T
2026-08-17 15:31:27 +08:00

45 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 后端架构决策文档
Kotlin 2.4 + Spring Boot 4.1 + Java 21 + Gradle 多模块(模块化单体)的架构决策记录,按序号阅读。
**这些文档是本仓库代码的约束来源。** 代码和文档不一致时,以文档为准改代码——包括不要为了让代码通过而把
`architecture-test` 里的 ArchUnit 规则调松。骨架落地时对文档有意偏离的几处,都在对应代码的注释里注明了原因。
| 文档 | 内容 |
| --- | --- |
| [01-project-structure.md](./01-project-structure.md) | 工程结构 / 模块划分(模块化单体,`-contract` 契约模块,版本基线) |
| [02-layering.md](./02-layering.md) | 分层规范(api/application/domain/infrastructureEntity 边界) |
| [03-persistence.md](./03-persistence.md) | 持久层方案(Spring Data JPA + Hibernate + MySQLFlyway 多实例) |
| [04-security-auth.md](./04-security-auth.md) | 安全与认证(Spring Security + JWTrefresh 轮换,门店上下文与越权隔离) |
| [05-integration-layer.md](./05-integration-layer.md) | 集成层设计(同步 RestClient + Resilience4jF6 Adapter / Mini 客户端) |
| [06-api-design.md](./06-api-design.md) | API 设计规范(统一响应、错误码、请求头、分页与序列化约定) |
| [07-config-governance.md](./07-config-governance.md) | 配置与服务治理(K8s ConfigMap/Secret、Key Vault、启动期校验) |
| [08-observability.md](./08-observability.md) | 可观测性(Micrometer Tracing、结构化日志与脱敏、指标与告警、审计) |
| [09-build-deploy.md](./09-build-deploy.md) | 构建与多环境部署(Docker、GitLab CI/CD、优雅停机、迁移与回滚协同) |
| [10-testing.md](./10-testing.md) | 测试策略(Testcontainers、WireMock、ArchUnit、覆盖率聚合) |
| [11-cross-domain-collaboration.md](./11-cross-domain-collaboration.md) | 跨域协作与聚合(契约模块、领域事件、并行 fan-out 与局部降级) |
| [12-concurrency-and-scheduling.md](./12-concurrency-and-scheduling.md) | 并发、事务与定时任务(事务边界、幂等、乐观锁、ShedLock、本地缓存) |
## 这份副本从哪来、怎么更新
原件在 **[`conti-docs`](../../conti-docs/backend/)** 仓库的 `backend/` 目录,那里是唯一事实来源。
这里是一份副本,目的是让在本仓库里干活的人(和 AI)不用切仓库就能查到约束。
代价是会漂移。**改文档去 `conti-docs` 改,然后同步过来**,不要只改这一边:
```bash
cp ../../conti-docs/backend/[0-9][0-9]-*.md ./
# 复制完把跨仓链接改回来(原件里是 ../Architecture-Diagram/ 和 ../0X-*.md
sed -i 's|](\.\./Architecture-Diagram/|](../../conti-docs/Architecture-Diagram/|g' ./[0-9][0-9]-*.md
sed -i 's|](\.\./\([0-9][0-9]-[^)]*\.md\)|](../../conti-retail-app/docs/\1|g' ./[0-9][0-9]-*.md
```
跨仓链接(架构图、App 侧文档)按 `Continental-App/` 下三个仓库平级摆放来写相对路径。
换了目录结构这些链接就断了,重跑一次上面的 `sed` 即可。
## 相关
- **App 侧架构决策**[`conti-retail-app/docs/`](../../conti-retail-app/docs/)Flutter01-14
- **架构图与 PRD**[`conti-docs/Architecture-Diagram/`](../../conti-docs/Architecture-Diagram/)
- **未决阻塞项**(错误码表未定等):见 [`conti-docs/README.md`](../../conti-docs/README.md) 的「跨文档的阻塞项」