更新依赖和调整目录结构,未修改模块

This commit is contained in:
2026-09-14 22:17:59 +08:00
parent 63aeedc2fe
commit 13e4b8e363
70 changed files with 3092 additions and 90 deletions

View File

@@ -1,8 +1,8 @@
# BSM Infra Full
BSM 后端服务 Go workspace按基础服务、电商交易、资金支付、社交关系四个服务域组织。当前 `module/` 下有 **18 个带 `go.mod` 和独立入口的服务模块**,加上 `all`19 个运行时 Go module`scripts/api-docgen` 是另一个独立的文档生成工具 module不属于业务服务。Go 版本以 `go.work` 为准,当前为 1.26.5。
BSM 后端服务 Go workspace按基础服务、电商交易、资金支付、社交关系四个服务域组织。当前 `module/` 下有 **18 个带 `go.mod` 和独立入口的服务模块**,加上聚合入口 `pkgs/all` 与电商聚合入口 `pkgs/ecmall`20 个运行时 Go module`scripts/api-docgen` 是另一个独立的文档生成工具 module不属于业务服务。Go 版本以 `go.work` 为准,当前为 1.26.5。
本文依据各模块的 `proto`、路由注册、`internal/logic`、数据模型和 `all/internal/service` 整理。功能说明描述代码职责;对已发现的空实现单独标注,不代表所有接口已经完成端到端验证。
本文依据各模块的 `proto`、路由注册、`internal/logic`、数据模型和 `pkgs/all/internal/service``pkgs/ecmall/internal/service` 整理。功能说明描述代码职责;对已发现的空实现单独标注,不代表所有接口已经完成端到端验证。
## 快速开始
@@ -21,22 +21,30 @@ Linux/macOS
cd module/base/passport
go run ./cmd/main
运行聚合服务:
运行聚合服务(全量)
cd all
cd pkgs/all
go run ./cmd/main --workspace=default
all 默认读取 all/etc/default_<runtime>.yaml。指定 --workspace=tenant01 时,开发模式读取 all/etc/tenant01_dev.yaml。workspace 仅允许字母、数字、下划线和连字符,最长 64 个字符。
运行电商聚合服务(电商、支付、平台与支撑子模块):
cd pkgs/ecmall
go run ./cmd/main --workspace=default
`pkgs/all` 默认读取 `pkgs/all/etc/default_<runtime>.yaml`,监听 gRPC `12000` / HTTP `12001`。指定 --workspace=tenant01 时,开发模式读取 `pkgs/all/etc/tenant01_dev.yaml`。workspace 仅允许字母、数字、下划线和连字符,最长 64 个字符。
`pkgs/ecmall` 使用相同的取值规则读取 `pkgs/ecmall/etc/default_<runtime>.yaml`,监听 gRPC `12300` / HTTP `12301`,因此两个聚合入口可以同时启动。
## 服务域与模块总览
| 服务域 | 目录 | 服务模块 | 主要职责 | 接入 all |
| 服务域 | 目录 | 服务模块 | 主要职责 | 接入聚合入口 |
| --- | --- | --- | --- | --- |
| 基础与平台服务 | `module/base` | ads、cloud、cms、feedback、fts、initial、logs、mgt、passport、sender10 个) | 账号、后台权限、启动配置、内容、文件、通知与运营支撑 | |
| 电商与交易服务 | `module/ec` | address、mall、market、order4 个) | 收货地址、店铺商品、代理供应商、购物车与订单 | |
| 资金与支付服务 | `module/finance` | wallet1 个) | 钱包、资金流水、支付渠道、提现申请 | |
| 基础与平台服务 | `module/base` | ads、cloud、cms、feedback、fts、initial、logs、mgt、passport、sender10 个) | 账号、后台权限、启动配置、内容、文件、通知与运营支撑 | `all`;除 cloud 外均接入 `ecmall` |
| 电商与交易服务 | `module/ec` | address、mall、market、order4 个) | 收货地址、店铺商品、代理供应商、购物车与订单 | `all``ecmall` |
| 资金与支付服务 | `module/finance` | wallet1 个) | 钱包、资金流水、支付渠道、提现申请 | `all``ecmall` |
| 社交服务 | `module/social` | feed、group、relation3 个) | 动态内容、群组成员、好友关注与匹配 | 否 |
| 服务聚合与运行入口 | `all` | all | 组合 15 个基础、电商、资金服务,共享基础设施与访问入口 | 聚合宿主 |
| 服务聚合与运行入口 | `pkgs/all` | all | 组合 15 个基础、电商、资金服务,共享基础设施与访问入口 | 聚合宿主 |
| 电商聚合运行入口 | `pkgs/ecmall` | ecmall | 组合 14 个电商、支付、平台与支撑服务,共享基础设施与独立端口 | 聚合宿主 |
此外,`module/ec/supply` 仅有说明文件,`module/finance/bill``module/finance/loan` 在当前工作区为空目录,均不计入已实现服务。具体状态见下文各服务域说明。
@@ -209,9 +217,9 @@ all 默认读取 all/etc/default_<runtime>.yaml。指定 --workspace=tenant01
- **实现边界**:四类 `Timeline` 方法、`Tag.PostList``Post.CommentList``Setting.Info``Setting.Rights` 仍为占位。因此当前不能认定已实现推荐排序、好友/关注动态分发或完整的社区内容流。
- **代码入口**[接口定义](module/social/feed/proto)、[业务逻辑](module/social/feed/internal/logic)。
### 聚合运行域all
### 聚合运行域:pkgs/all
`all` 是部署和接入宿主:在单个进程中注册 15 个基础、电商、资金服务注入共享数据库、Redis、etcd 和内存缓存,统一管理监听端口与关闭流程。
`pkgs/all` 是部署和接入宿主module 路径 `bsm/full/pkgs/all`:在单个进程中注册 15 个基础、电商、资金服务注入共享数据库、Redis、etcd 和内存缓存,统一管理监听端口与关闭流程。
| 访问方式 | 作用 |
| --- | --- |
@@ -222,7 +230,22 @@ all 默认读取 all/etc/default_<runtime>.yaml。指定 --workspace=tenant01
`Services` 配置决定启用哪些服务;非空的 `BSM_SERVICES` 环境变量优先覆盖,例如 `passport,order,wallet`;值为 `all` 时选择注册表中的全部服务。此处的“全部”不包括三个社交服务与预留目录。
模块通过 `service.Expose` 注册并接收依赖;聚合启动时复用共享对象,独立入口则初始化自身资源。注册入口见 [all/internal/service/service.go](all/internal/service/service.go),监听与请求分发见 [all/internal/server](all/internal/server)。启用模块只代表注册其访问入口,不会自动补齐其外部渠道、数据表或跨域数据依赖。
模块通过 `service.Expose` 注册并接收依赖;聚合启动时复用共享对象,独立入口则初始化自身资源。注册入口见 [pkgs/all/internal/service/service.go](pkgs/all/internal/service/service.go),监听与请求分发见 [pkgs/all/internal/server](pkgs/all/internal/server)。启用模块只代表注册其访问入口,不会自动补齐其外部渠道、数据表或跨域数据依赖。
### 电商聚合运行域pkgs/ecmall
`pkgs/ecmall` 是面向电商业务的聚合宿主module 路径 `bsm/full/pkgs/ecmall`),监听 gRPC `12300` / HTTP `12301`。它复用与 `pkgs/all` 完全相同的监听、鉴权、grpc-gateway、动态 RPC 和原生 REST 分流实现,注册表包含 14 个服务:
| 分组 | 服务 | 职责 |
| --- | --- | --- |
| 电商与交易 | address、mall、market、order | 收货地址、店铺商品、代理供应商、购物车与订单 |
| 资金与支付 | wallet | 钱包、资金流水、支付渠道、提现申请 |
| 平台与运营 | ads、cms、feedback、fts、logs、mgt | 广告位、内容管理、意见反馈、文件上传、操作日志与后台管理 |
| 基础支撑 | initial、passport、sender | 启动配置与字典、用户身份、验证码与通知发送 |
`module/base/cloud` 不接入 `ecmall``internal/config` 中因而没有对应的配置段;其余专项配置段为 `Fts``Mgt``Passport``Sender``Wallet`,并配有对应的匿名白名单。注册入口见 [pkgs/ecmall/internal/service/service.go](pkgs/ecmall/internal/service/service.go)。
`ecmall` 只是注册表的取舍,不改变各子模块自身的实现边界:它与 `pkgs/all` 使用同一份 `module/` 代码、同一个共享数据库与 Redis 配置模板,两个入口可以同时启动,也可以分别按 `Services``BSM_SERVICES` 裁剪。
## 模块协作与代码导航
@@ -251,7 +274,8 @@ all 默认读取 all/etc/default_<runtime>.yaml。指定 --workspace=tenant01
| `internal/impl` | 数据库、Redis、etcd、缓存与渠道客户端等资源 |
| `internal/config` / `etc` | 配置结构和环境配置样例 |
| `service` | 已接入聚合宿主的模块对外暴露的注册与依赖注入接口 |
| `all` | 聚合服务配置、资源初始化和统一入口 |
| `pkgs/all` | 聚合服务配置、资源初始化和统一入口 |
| `pkgs/ecmall` | 电商聚合配置:只注册电商、支付、平台和支撑子模块,端口与 `pkgs/all` 独立 |
| `scripts` | workspace 校验、构建、protobuf 和 API 文档生成工具 |
| `wiki` | 架构、接入、运维与 API 说明 |
@@ -279,13 +303,15 @@ all 默认读取 all/etc/default_<runtime>.yaml。指定 --workspace=tenant01
- [Wiki 索引](wiki/README.md)
- [API 接入与模块文档](wiki/api/00-overview.md)
- [系统架构](wiki/architecture.md)
- [电商聚合开发上下文](pkgs/ecmall/AGENT.md) — pkgs/ecmall 的 AGENT 上下文
- [开发与运维](wiki/operations.md)
- [审计报告](wiki/audit-2026-08-10.md)
## 开发约定
- 新模块必须加入 go.work不得提交本机绝对路径 replace。
- 模块保留独立 cmd/main通过 service.Expose 接入 all
- 模块保留独立 cmd/main通过 service.Expose 接入聚合入口(`pkgs/all``pkgs/ecmall` 或二者)
- 聚合入口只做注册表取舍,不得在 `pkgs/*` 内复制子模块业务逻辑。
- 默认测试不得访问网络或真实基础设施;集成测试使用 integration build tag。
- protobuf 全限定名称必须跨模块唯一。
- 提交前运行 workspace 验证脚本和 git diff --check。