8.4 KiB
8.4 KiB
产品与服务目录
产品级视图:服务域划分、服务清单、对外协议、实现完成度、跨域耦合与运行拓扑。 逐服务审计明细见
docs/;风险与优先级见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 类 Timeline(recommend/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 个文件逐字节相同 |
任一入口的修复需同步两份拷贝 |
五、运行拓扑
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、feed)yaml 字段名与 SrvConfig 不匹配,需修配置才能启动 |
服务启用由聚合 Services 列表或环境变量 BSM_SERVICES 控制(非空则覆盖;值为 all 时注册全部)。
七、文档地图
| 文档 | 位置 | 内容 |
|---|---|---|
| 代码审计索引 | docs/README.md |
21 篇逐服务审计报告入口 |
| 总体审计报告 | audit-2026-09-22-总体审计报告.md |
风险台账、共性根因、修复优先级 |
| 本文 | 产品与服务目录.md |
服务域、清单、完成度、耦合、拓扑 |
| 系统架构 | architecture.md |
模块边界、聚合启动流程、依赖注入 |
| 开发与运维 | operations.md |
配置、启动、验证、构建、发布、排障 |
| API 接入 | api/00-overview.md |
gRPC / 动态 RPC / gateway / 鉴权 |
| 历史审计 | audit-2026-08-10.md |
上一轮 workspace 层审计 |