Files
full/wiki/产品与服务目录.md
2026-09-22 18:53:53 +08:00

110 lines
8.4 KiB
Markdown
Raw Permalink 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.
# 产品与服务目录
> 产品级视图:服务域划分、服务清单、对外协议、实现完成度、跨域耦合与运行拓扑。
> 逐服务审计明细见 [`docs/`](../docs/README.md);风险与优先级见 [`audit-2026-09-22-总体审计报告.md`](audit-2026-09-22-总体审计报告.md)。
## 一、产品定位
BSM Infra Full 是 BSM 后端服务的 Go workspace按**四个服务域**组织,提供账号与身份、后台权限、内容与运营、文件与个人云空间、电商交易、资金支付、社交关系等能力。既有"每服务独立进程"的部署形态(`module/*/cmd/main`),也有"多服务单进程聚合"的部署形态(`pkgs/all` 全量、`pkgs/ecmall` 电商)。
## 二、服务域与服务清单
| 服务域 | 服务 | 模块路径 | 主要职责 | 对外协议 | 聚合归属 |
| --- | --- | --- | --- | --- | --- |
| 基础与平台 | passport | `module/base/passport` | 账号、密码/验证码登录、找回、KYC 核验 | gRPC + gateway | all、ecmall |
| 基础与平台 | mgt | `module/base/mgt` | 后台登录、组织/角色/权限/部门 | 原生 REST `/rest/mgt` | all、ecmall |
| 基础与平台 | initial | `module/base/initial` | 服务探测、客户端配置、版本、国家/区划/字典 | gRPC + gateway | all、ecmall |
| 基础与平台 | sender | `module/base/sender` | 短信、邮件、验证码生成与校验 | gRPC + gateway | all、ecmall |
| 基础与平台 | fts | `module/base/fts` | 文件上传(本地/MinIO、上传配置 | 原生 REST `/rest/fts` | all、ecmall |
| 基础与平台 | cloud | `module/base/cloud` | 网盘、相册、笔记、书签、私人资料、分享、空间 | gRPC + gateway | 仅 all |
| 基础与平台 | cms | `module/base/cms` | 文章、页面、分类、标签、评论、赞踩 | gRPC + gateway | all、ecmall |
| 基础与平台 | ads | `module/base/ads` | 按广告位分发广告素材 | gRPC + gateway | all、ecmall |
| 基础与平台 | feedback | `module/base/feedback` | 意见反馈的增删改查与备注 | gRPC + gateway | all、ecmall |
| 基础与平台 | logs | `module/base/logs` | 业务操作日志写入与查询 | 原生 REST `/rest/logs` | all、ecmall |
| 电商与交易 | address | `module/ec/address` | 收货地址簿 | gRPC + gateway | all、ecmall |
| 电商与交易 | mall | `module/ec/mall` | 店铺、商品、规格、图片、分类、广告、公告、运费、员工 | gRPC + gateway | all、ecmall |
| 电商与交易 | market | `module/ec/market` | 代理商、供应商、审核 | gRPC + gateway | all、ecmall |
| 电商与交易 | order | `module/ec/order` | 购物车、下单、拆单、订单状态、优惠券 | gRPC + gateway | all、ecmall |
| 资金与支付 | wallet | `module/finance/wallet` | 钱包、流水、银行卡、提现、支付渠道、回调 | gRPC + gateway | all、ecmall |
| 社交 | relation | `module/social/relation` | 好友、标签、关注、匹配 | gRPC + gateway | **未接入** |
| 社交 | group | `module/social/group` | 群组、成员、入群申请 | gRPC + gateway | **未接入** |
| 社交 | feed | `module/social/feed` | 动态、标签、评论、互动计数、时间线 | gRPC + gateway | **未接入** |
| 聚合 | all | `pkgs/all` | 15 服务聚合宿主gRPC 12000 / HTTP 12001 | gRPC + HTTP 多路 | — |
| 聚合 | ecmall | `pkgs/ecmall` | 14 服务电商聚合宿主gRPC 12300 / HTTP 12301 | gRPC + HTTP 多路 | — |
预留/空目录(不计入已实现服务):`module/ec/supply`(仅 README`module/finance/bill``module/finance/loan`(空目录)。
## 三、实现完成度
> "占位"指接口已声明但逻辑为空/返回成功/TODO。以下为本次核实结论明细见对应 `docs/*.md`。
| 服务 | 完成度 | 已确认的占位/缺口 |
| --- | --- | --- |
| cloud | 方法齐全 | 全部 gRPC 方法均有实现;但容量配额只统计不限制、分享链路断裂、私人资料未真正加密 |
| passport | 方法齐全 | `Verify.JumioCallback` 为空 stub`Forget.Verify` 为伪实现 |
| sender | 部分 | **腾讯云短信空实现**`TencentSender`);邮件仅 `qq` 渠道 |
| cms | 部分 | `Site` 全系列占位get/fetch/create/modify/delete 均为 TODO |
| feed | 大量占位 | 4 类 Timelinerecommend/hot/friend/follow`Tag.PostList``Post.CommentList``Setting.Info``Setting.Rights` 共 9 处 |
| wallet | 大量占位 | 支付宝 page/app/wap 支付与转账、微信 APP/Native 下单与转账共 7 处 TODO`WxCallback` 验签后无业务逻辑 |
| mall | 部分 | 入驻、授权、小程序码、按规格查询、商品批量操作、运费与禁运区域占位;员工验证码登录明确未实现 |
| market | 部分 | `Data` 概况/会员/订单统计 5 个文件全部占位 |
| order | 部分 | 管理端 `OrderModify` 占位;`SimulatePay/SimulateShipments/SimulateReceiving` 为模拟实现(生产可达,见总体报告 S8 |
| group | 部分 | `Basic.Disband` 占位但返回成功 |
| relation | 方法齐全 | 无占位函数,但存在遗留死代码 `follow.Do` |
| ads | 方法齐全 | 仅 1 个只读接口README 宣称的 Redis/内存缓存**未实现** |
| initial / fts / logs / address / mgt / feedback | 方法齐全 | 无占位,但存在本报告所列的越权/鉴权/分页/键名等缺陷 |
## 四、跨域耦合
| 耦合 | 说明 | 影响 |
| --- | --- | --- |
| order → mall / address 数据表 | `order` 直接读写 `mall_product``mall_product_spec``mall_store``address_library`(散落 8 个文件) | 任一表结构变更即运行期报错;订单侧可直接改商品库存 |
| passport ↔ sender | 验证码生成/校验依赖 sender但 passport 登录/注册路径实际未调用校验 | 验证码形同虚设 |
| mall ↔ wallet / order | 店铺支付配置由 mall 维护、支付执行在 wallet、订单在 order | 店铺凭据当前可被任意登录用户读改 |
| cloud ↔ fts | cloud 维护文件/照片业务记录fts 执行实际二进制上传 | 两者未自动组成完整上传链路 |
| 聚合入口 | `pkgs/all``pkgs/ecmall` 复用 `module/` 同一份代码,仅注册表与端口不同;两入口 `internal/server` 4 个文件逐字节相同 | 任一入口的修复需同步两份拷贝 |
## 五、运行拓扑
```mermaid
flowchart TD
C["客户端 / 后台"] --> GA["pkgs/all<br/>gRPC 12000 / HTTP 12001"]
C --> GE["pkgs/ecmall<br/>gRPC 12300 / HTTP 12301"]
C --> S1["module/*/cmd/main<br/>独立服务进程"]
GA --> M1["module/base/* 10"]
GA --> M2["module/ec/* 4"]
GA --> M3["module/finance/wallet"]
GE --> M4["module/base/* 9<br/>不含 cloud"]
GE --> M2
GE --> M3
M1 --> DB[("共享 MySQL")]
M2 --> DB
M3 --> DB
M1 --> R[("共享 Redis / etcd")]
S2["module/social/*<br/>未接入聚合"] --> DB
```
`pkgs/all``pkgs/ecmall` 的 HTTP 入口依次承载grpc-gateway → 动态 RPC `/rpc/{package}/{service}/{method}` → 原生 REST `/rest/{module}/...`。请求先进入 grpc-gateway返回 404 时回退 Gin此回退判定存在缺陷见总体报告 S29
## 六、配置与运行入口
| 入口 | 配置 | 端口 | 备注 |
| --- | --- | --- | --- |
| `pkgs/all` | `etc/default_<runtime>.yaml` | gRPC 12000 / HTTP 12001 | **仅有 dev 配置**prod 模式启动即 `log.Fatalf` |
| `pkgs/ecmall` | `etc/default_<runtime>.yaml` | gRPC 12300 / HTTP 12301 | 同上 |
| 各业务模块 | `etc/<service>_<runtime>.yaml` | 各自 `Port` | 部分模块wallet、feedyaml 字段名与 `SrvConfig` 不匹配,需修配置才能启动 |
服务启用由聚合 `Services` 列表或环境变量 `BSM_SERVICES` 控制(非空则覆盖;值为 `all` 时注册全部)。
## 七、文档地图
| 文档 | 位置 | 内容 |
| --- | --- | --- |
| 代码审计索引 | [`docs/README.md`](../docs/README.md) | 21 篇逐服务审计报告入口 |
| 总体审计报告 | [`audit-2026-09-22-总体审计报告.md`](audit-2026-09-22-总体审计报告.md) | 风险台账、共性根因、修复优先级 |
| 本文 | `产品与服务目录.md` | 服务域、清单、完成度、耦合、拓扑 |
| 系统架构 | [`architecture.md`](architecture.md) | 模块边界、聚合启动流程、依赖注入 |
| 开发与运维 | [`operations.md`](operations.md) | 配置、启动、验证、构建、发布、排障 |
| API 接入 | [`api/00-overview.md`](api/00-overview.md) | gRPC / 动态 RPC / gateway / 鉴权 |
| 历史审计 | [`audit-2026-08-10.md`](audit-2026-08-10.md) | 上一轮 workspace 层审计 |