docs(architecture): 模块速览同步第一波终态——六容器/media 职责/pet 收官状态
CI / docs-build (push) Successful in 28s

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-09 09:33:30 +08:00
parent f17e6f1215
commit b3a4efd7e0
+7 -6
View File
@@ -2,7 +2,7 @@
> 本页是后端结构的**唯一权威速览**:模块怎么划分、各自负责什么、端口与依赖关系。 > 本页是后端结构的**唯一权威速览**:模块怎么划分、各自负责什么、端口与依赖关系。
> 结构性变更(新增/拆分模块)须经 ADR 决策并同步更新本页。 > 结构性变更(新增/拆分模块)须经 ADR 决策并同步更新本页。
> 最后更新:2026-09-08M3 第一波T3-02 骨架落地)。 > 最后更新:2026-09-08M3 第一波收口:六容器 + media 闭环)。
## 一图速览 ## 一图速览
@@ -15,7 +15,7 @@ patbond-apiMaven 多模块,Spring Boot 3.5 + JDK 17
└── patbond-community 社区服务 :8084 ← M3 新增(ADR-017 └── patbond-community 社区服务 :8084 ← M3 新增(ADR-017
``` ```
部署形态:docker compose 容器(postgres:18 + auth + user + pet + community),应用容器无状态(ADR-007)。 部署形态:docker compose 容器(postgres:18 + **MinIO 对象存储**ADR-016,自托管、私有桶)+ auth + user + pet + community),应用容器无状态(ADR-007)。
## 模块职责 ## 模块职责
@@ -37,6 +37,7 @@ patbond-apiMaven 多模块,Spring Boot 3.5 + JDK 17
- 用户资料:`/api/v1/me` - 用户资料:`/api/v1/me`
- **埋点接收**`/api/v1/events`(批量 ≤50、202 逐条结果、唯一允许匿名的写端点、eventId 幂等),落 `platform.product_events` - **埋点接收**`/api/v1/events`(批量 ≤50、202 逐条结果、唯一允许匿名的写端点、eventId 幂等),落 `platform.product_events`
- **media 上传流程**ADR-017):`POST /api/v1/media/uploads` 两步上传(预签名 PUT 直传 MinIO → confirm ready+ 预签名 GET 读取,存储经 ObjectStorage 适配层隔离供应商
- **Flyway 迁移链唯一持有者**:全部数据库迁移(V1 身份/媒体基线、V2 埋点表、V3 宠物健康域、V4 字典种子……)集中在本模块 `src/main/resources/db/migration/` 统一执行,**其他模块不得携带 Flyway**——避免多模块并发迁移竞争,pet 域建表也在这里 - **Flyway 迁移链唯一持有者**:全部数据库迁移(V1 身份/媒体基线、V2 埋点表、V3 宠物健康域、V4 字典种子……)集中在本模块 `src/main/resources/db/migration/` 统一执行,**其他模块不得携带 Flyway**——避免多模块并发迁移竞争,pet 域建表也在这里
### patbond-pet(宠物健康档案域,:8083M2 新增) ### patbond-pet(宠物健康档案域,:8083M2 新增)
@@ -45,8 +46,8 @@ patbond-apiMaven 多模块,Spring Boot 3.5 + JDK 17
- 成员权限模型:pet_owners 三角色(owner / caregiver 可写,viewer 只读;ADR-015),创建宠物者自动成为 primary owner - 成员权限模型:pet_owners 三角色(owner / caregiver 可写,viewer 只读;ADR-015),创建宠物者自动成为 primary owner
- 健康记录:体重(weights)、疫苗(vaccinations + vaccine catalog,状态机)、健康事件(health-events,六类)、照护提醒(care-reminders,四类,仅数据接口不做推送) - 健康记录:体重(weights)、疫苗(vaccinations + vaccine catalog,状态机)、健康事件(health-events,六类)、照护提醒(care-reminders,四类,仅数据接口不做推送)
- 档案聚合摘要:summary(最新体重 / 疫苗进度 / 下次接种 / 当月花费,事实表实时聚合不持久化展示值) - 档案聚合摘要:summary(最新体重 / 疫苗进度 / 下次接种 / 当月花费,事实表实时聚合不持久化展示值)
- 照片/附件本迭代不做(ADR-010media 域待对象存储选型) - 照片/附件 M2 未做(ADR-010);media 基础能力 M3 已落地(ADR-016/017),宠物头像/疫苗证书接线另排
- **当前状态**模块骨架 + T2-03(CRUD + 权限框架)施工中;数据表已由 V3 建好 - **当前状态**M2 已收官全量交付(18 操作 + 契约 v1.2.0 冻结)
### patbond-community(社区域,:8084M3 新增) ### patbond-community(社区域,:8084M3 新增)
@@ -68,10 +69,10 @@ patbond-apiMaven 多模块,Spring Boot 3.5 + JDK 17
- **微服务化**(ADR-002 预留):模块边界即服务边界,pet 域可整模块独立部署;届时引入配套版本 Spring Cloud Alibaba。 - **微服务化**(ADR-002 预留):模块边界即服务边界,pet 域可整模块独立部署;届时引入配套版本 Spring Cloud Alibaba。
- **M5 marketplace 域**V3 已裁剪的 4 条跨 schema 外键(vaccinations/health_events → providers/bookings)由 M5 迁移补回。 - **M5 marketplace 域**V3 已裁剪的 4 条跨 schema 外键(vaccinations/health_events → providers/bookings)由 M5 迁移补回。
- **media 域**对象存储选型拍板后另立迭代实现(宠物头像、疫苗证书、健康事件附件 - **media 域扩展**基础上传链路已随 M3 落地(自托管 MinIO,ADR-016);带宽/预算触发时迁云对象存储(适配层保证仅换配置);宠物头像、疫苗证书、健康事件附件接线另排
## 相关文档 ## 相关文档
- 技术决策记录:[decisions.md](decisions.md)ADR-001~015 - 技术决策记录:[decisions.md](decisions.md)ADR-001 起持续编号
- API 契约:`docs/api/openapi.yaml` - API 契约:`docs/api/openapi.yaml`
- 各迭代过程报告:开发文档 → 第一/第二迭代 - 各迭代过程报告:开发文档 → 第一/第二迭代