更新依赖和调整目录结构,未修改模块
This commit is contained in:
56
README.md
56
README.md
@@ -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、sender(10 个) | 账号、后台权限、启动配置、内容、文件、通知与运营支撑 | 是 |
|
||||
| 电商与交易服务 | `module/ec` | address、mall、market、order(4 个) | 收货地址、店铺商品、代理供应商、购物车与订单 | 是 |
|
||||
| 资金与支付服务 | `module/finance` | wallet(1 个) | 钱包、资金流水、支付渠道、提现申请 | 是 |
|
||||
| 基础与平台服务 | `module/base` | ads、cloud、cms、feedback、fts、initial、logs、mgt、passport、sender(10 个) | 账号、后台权限、启动配置、内容、文件、通知与运营支撑 | `all`;除 cloud 外均接入 `ecmall` |
|
||||
| 电商与交易服务 | `module/ec` | address、mall、market、order(4 个) | 收货地址、店铺商品、代理供应商、购物车与订单 | `all`、`ecmall` |
|
||||
| 资金与支付服务 | `module/finance` | wallet(1 个) | 钱包、资金流水、支付渠道、提现申请 | `all`、`ecmall` |
|
||||
| 社交服务 | `module/social` | feed、group、relation(3 个) | 动态内容、群组成员、好友关注与匹配 | 否 |
|
||||
| 服务聚合与运行入口 | `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。
|
||||
|
||||
Reference in New Issue
Block a user