优化
This commit is contained in:
+16
-18
@@ -10,7 +10,7 @@
|
||||
|
||||
## 1. 项目定位
|
||||
|
||||
`baiyue-firstleg` 是国内头程与海外仓后端仓库,采用 Maven 多模块单仓结构。根 POM 聚合 22 个 Maven 模块,其中 7 个是公共/依赖模块,15 个是可独立启动、构建、制作镜像的微服务。
|
||||
`baiyue-firstleg` 是国内头程与海外仓后端仓库,采用 Maven 多模块单仓结构。根 POM 聚合 20 个 Maven 模块,其中 7 个是公共/依赖模块,13 个是可独立启动、构建、制作镜像的微服务。
|
||||
|
||||
当前技术基线:
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
- SpringDoc OpenAPI / Swagger
|
||||
- GitLab、Jenkins、Docker Compose
|
||||
|
||||
国内与海外服务共享源码仓库和公共制品,但保持独立数据库、Nacos 命名空间与部署边界;跨区域业务协作使用版本化 Outbox/Inbox 事件,不共享业务数据源。
|
||||
当前源码与发布清单统一为 TEST 单机、一个 Gateway/Auth 会话和 Nacos 命名空间;业务服务保留独立 Schema,可靠事件使用 Outbox 直接投递及消费幂等。真实环境切换仍待验收,不能把本地配置视为已部署。
|
||||
|
||||
## 2. 根目录结构
|
||||
|
||||
@@ -39,7 +39,7 @@ baiyue-firstleg/
|
||||
├─ common-event-contract/ # 国内外跨区域事件统一契约
|
||||
│
|
||||
├─ gateway/ # 统一 API 网关
|
||||
├─ gateway-overseas/ # 海外区域 API 网关
|
||||
├─ gateway-overseas/ # 退役待清理,不参与构建/发布
|
||||
├─ auth/ # 统一登录与账号凭据
|
||||
├─ iam/ # 租户、成员、角色、权限、企业审核
|
||||
├─ order/ # 头程订单中心
|
||||
@@ -52,7 +52,7 @@ baiyue-firstleg/
|
||||
├─ print/ # 打印中心
|
||||
├─ audit-service/ # 审计日志中心
|
||||
├─ integration-service/ # 第三方平台集成适配
|
||||
├─ event-bridge-service/ # 国内外跨区域事件接收桥
|
||||
├─ event-bridge-service/ # 退役待清理,不参与构建/发布
|
||||
│
|
||||
├─ config/ # Nacos 配置模板
|
||||
├─ deploy/ # Jenkins、Docker 使用的部署文件
|
||||
@@ -90,7 +90,6 @@ baiyue-firstleg/
|
||||
| 文件夹 | 注册服务名 | 端口 | 数据库 | 当前职责与实现情况 |
|
||||
| --- | --- | ---: | --- | --- |
|
||||
| `gateway` | `gateway` | 9000 | 无 | 统一路由、CORS、JWT/Redis 会话校验、商户端与平台端访问域隔离、Swagger 聚合 |
|
||||
| `gateway-overseas` | `gateway-overseas` | 9300 | 无 | 海外区域 API 入口、海外 Audience/JWKS 校验及海外服务路由 |
|
||||
| `auth` | `auth-service` | 9100 | `baiyue_auth` | 登录、刷新 Token、退出、商户注册、账号密码和账号内部管理 |
|
||||
| `iam` | `iam-service` | 9201 | `baiyue_iam` | 租户、企业资料、企业审核、成员、角色、权限、按钮权限、个人资料和授权快照 |
|
||||
| `firstleg` | `firstleg-service` | 9202 | `baiyue_firstleg` | 履约任务与分配;入库单、测量审核、FBA 计费、费用发布和完成入库编排;不是订单主数据服务 |
|
||||
@@ -99,9 +98,8 @@ baiyue-firstleg/
|
||||
| `file` | `file-service` | 9206 | `baiyue_file` | 企业资质文件、公共异步导出下载、入库测量图片及重量 OCR 调用协作 |
|
||||
| `print` | `print-service` | 9207 | 无 | 无状态 PDF 渲染服务;调用方传入完整标签数据,服务在内存中生成一次性多页 PDF |
|
||||
| `integration-service` | `integration-service` | 9210 | 无 | 百度 OCR、Amazon SP-API 等第三方适配器和启停状态;默认关闭外部调用 |
|
||||
| `lastleg-service` | `lastleg-service` | 9303 | `baiyue_lastleg` | 海外尾程订单、接柜入仓、库存、海外本土业务及 IAM 安全事件投影/实时校验;不含海外出库和派送 |
|
||||
| `lastleg-service` | `lastleg-service` | 9303 | `baiyue_lastleg` | 海外尾程订单、接柜入仓、库存、出库、派送和本土业务;复用统一会话鉴权 |
|
||||
| `warehouse-overseas-service` | `warehouse-overseas-service` | 9305 | 海外仓资源库 | 海外仓库、库位、托盘和资源锁 |
|
||||
| `event-bridge-service` | `event-bridge-service` | 9312 | `baiyue_event_bridge` | 按 CN/OVERSEAS 双实例部署的跨区事件 Inbox、重试和目标服务投递 |
|
||||
| `audit-service` | `audit-service` | 9700 | `baiyue_audit` | 接收公共审计事件并持久化;平台端可按权限查询已脱敏日志,业务审计发送默认开启 |
|
||||
|
||||
MySQL、Redis、Nacos 是外部基础设施,不属于上述业务服务,也不应打包进业务镜像。
|
||||
@@ -158,9 +156,9 @@ Print 是无数据库的无状态 PDF 渲染服务。业务归属服务完成权
|
||||
|
||||
Integration 负责百度 OCR、重量识别和 Amazon Logistics/SP-API 等第三方协议适配及能力状态。入库测量与计费重量 OCR 由 File 调用,业务图片和入库状态不归 Integration;服务不使用业务数据库,真实外部调用默认关闭,密钥必须通过 Jenkins Credentials、环境变量或 Nacos 密文注入。
|
||||
|
||||
### 5.11 `event-bridge-service/`:跨区域事件桥
|
||||
### 5.11 业务事件直接投递
|
||||
|
||||
Event Bridge 负责接收国内外服务器之间的必要业务事件,并通过 Inbox 实现幂等。事件载荷遵循 `common-event-contract`,包含事件 ID、来源和目标区域、业务键、版本、时间及 Payload 哈希;头程与尾程不共享 MySQL、Redis、Nacos 或内部接口。
|
||||
Firstleg、Lastleg 与 Finance 通过内部服务身份直接投递业务事件,保留事务 Outbox、消费幂等、结构化 ACK 与失败重试;精确事件表只维护在外层 `docs/统一认证与服务通信契约.md`。旧 Event Bridge 和海外 Gateway 源码退役待清理,不作为当前实现入口。
|
||||
|
||||
头程装柜完成事件以实际集装箱为顶层批次,`orders[]` 中每项是一张实际发运的来源入仓单;一个柜可包含多张入仓单。每个货物明细携带来源明细 ID、实际装运箱数和完整的国内箱唛池。国内不要求在装柜时逐箱扫描冻结,完整箱唛池可以大于本柜实际装运箱数;海外按实际首次扫描的箱唛确认归属和实收,未扫描箱唛保留给后续子订单。海外将同柜各来源入仓单分别生成入库计划,但以同一集装箱号关联,并且只允许同一目的仓的箱子合托。
|
||||
|
||||
@@ -170,11 +168,10 @@ Event Bridge 负责接收国内外服务器之间的必要业务事件,并通
|
||||
|
||||
```text
|
||||
config/nacos/
|
||||
├─ local/ # 本地联调配置
|
||||
└─ cn/ # 国内服务器配置模板
|
||||
└─ test/ # 公共配置 + 13 服务,统一实际 Namespace ID
|
||||
```
|
||||
|
||||
`local/`、`cn/`、`overseas/` 按部署区域保存公共配置和该区域需要的服务配置。配置模板可以提交,真实密码和第三方密钥不能提交。
|
||||
`test/` 保存公共配置和全部保留服务的 14 个 Data ID;旧区域目录已退役。配置模板可以提交,真实密码和第三方密钥不能提交。
|
||||
|
||||
### `deploy/`
|
||||
|
||||
@@ -183,17 +180,16 @@ deploy/
|
||||
├─ docker/Dockerfile # 通用 Java 17 镜像
|
||||
├─ env/.env.test.example # 环境变量示例
|
||||
├─ scripts/deploy-services.sh # Jenkins 增量部署脚本
|
||||
├─ docker-compose.yml # 国内区域服务编排
|
||||
├─ docker-compose.overseas.yml # 海外区域服务编排
|
||||
├─ docker-compose.yml # 13 服务统一 TEST 编排
|
||||
├─ docker-compose.rocketmq.yml # 公共导出 RocketMQ 基础设施
|
||||
├─ sql/ # 测试/存量环境统一迁移入口与说明
|
||||
├─ sql/ # TEST 空库基线入口与执行说明
|
||||
└─ service-map.yml # 模块、JAR、端口映射
|
||||
```
|
||||
|
||||
### `scripts/`
|
||||
|
||||
- `local-env.ps1`:本地服务环境变量
|
||||
- `publish-local-nacos-config.ps1`:发布本地 Nacos 配置
|
||||
- `publish-nacos-config.ps1`:发布统一 TEST Nacos 配置;DryRun 不联网,正式发布须授权
|
||||
- `phase1-acceptance.ps1`:订单与客户验收入口
|
||||
- `phase1-business-maturity-regression.ps1`:业务成熟度回归
|
||||
- `phase1-onboarding-order-e2e.ps1`:企业入驻到订单端到端验证
|
||||
@@ -281,6 +277,8 @@ HTTP 401 / `A0401`,不得再按 HTTP 200 + 空权限处理;只有使用新
|
||||
- 平台端和商户端权限分别管理,接口与按钮权限都必须由后端校验。
|
||||
- Controller 负责协议转换,Service 负责业务编排,Repository/Mapper 负责持久化。
|
||||
- 服务之间只传 DTO 或事件契约,不能依赖其他服务的 Entity、Mapper。
|
||||
- 公共模块变化会影响多个服务,Jenkins 会按 `service-map.yml` 覆盖的全部 15 个服务执行受影响构建。
|
||||
- 公共模块变化会影响多个服务,Jenkins 会按 `service-map.yml` 覆盖的13 个保留服务执行受影响构建。
|
||||
- 单一 Git 仓库不等于单一部署单元;每个服务仍生成独立 JAR、镜像和容器。
|
||||
- 国内头程与海外仓共享 Git 仓库,但保持两套数据库、Nacos 命名空间和部署环境。
|
||||
- 国内头程与海外仓共用 TEST 单机基础设施与 Nacos 命名空间,保留各服务数据归属和 Schema。
|
||||
|
||||
前端 phase4 定向离线检查入口为 `apps/admin-web/scripts/phase4-test-frontend-acceptance.mjs`(工作区相对路径),由 Admin 的 `pnpm test:phase4:test` 使用 `vitest.phase4-test.config.ts` 执行;不替代真实HTTP、页面或PDA验收。
|
||||
|
||||
Reference in New Issue
Block a user