# 2026-09-22 工作日志 ## 全仓逐微服务代码审计(第二轮,业务实现层) **任务**:重新分析并审计 BSM Infra Full 全部代码,按微服务名称输出 md 审计文档到 `docs/`;产品类文档放 `wiki/`;明确要求**不得提出过度设计/过度封装建议**。 **产出** - `docs/` 新增 22 篇:18 个业务服务 + `pkgs-all.md`/`pkgs-ecmall.md`/`workspace-and-scripts.md` + `README.md` 索引。 - `wiki/` 新增产品级文档 2 篇:`audit-2026-09-22-总体审计报告.md`(P0/P1 风险台账 + 共性根因 + 修复优先级)、`产品与服务目录.md`(服务域/清单/完成度/跨域耦合/拓扑)。 - 更新 `wiki/README.md`、根 `README.md` 的文档索引。 - 未修改任何源码/脚本。 **审计约定(本次确立,后续沿用)** - 每篇结构:头部信息表 → 定位职责 → 代码结构与入口 → 接口清单 → 数据模型 → 核心流程(mermaid) → 审计发现(安全/正确性/未完成/健壮性) → 风险汇总表 → 修复建议(务实项)。 - 结论必须带 `文件:行号` 证据;无法确认标【信息不足】。 - 修复建议只给最小直接动作,禁止统一框架/抽象层/DTO/VO/DDD/CQRS/拆微服务边界一类建议。 **关键结论(P0 摘要,供后续跟踪)** - 认证:passport 与 mall 的验证码登录/注册**不校验验证码**;passport `Forget.Reset` 凭 identity 即可改密且写未加盐 MD5;mgt `AppKey` 登录明文比对密码列;mgt dev 注入 `root/123456`。 - 资金:wallet 支付回调**不验签**、提现只校验不扣减无幂等、余额扣减读后写;order 模拟支付/发货生产可达、`OrderApprove` 无鉴权、优惠券金额**做加法**致应付变高、扣库存不检查 RowsAffected。 - 越权:address/cms/group/relation/feed/mall/market/feedback 共 9 个模块存在"只校验登录、不校验归属/角色"。 - 上线阻断:pkgs 无 prod 配置、JWT/session 密钥默认值恰 32 字节可用、gateway 404 与业务 NotFound 无法区分;`scripts/api-docgen` 无法构建。 - 静默故障:多处引用不存在的列(`relation_id`/`creator_id`/`createor_id`/`enabled`)与命名返回值 `reply` 未赋值。 - 测试:全仓仅 21 个 `*_test.go`,base 多数模块、wallet、social 三服务零单测。 **方法备注** - 本机 bash shim 缺 `dirname`(PATH 报错但不影响),需 `export PATH="/usr/bin:/bin:$PATH"` 后执行 `find`/`grep`/`ls`;PowerShell 输出未被捕获,改用 Bash/Glob/Grep。 - 大批量逐服务审计采用并行子代理(general-purpose)分域产出,子代理默认模型触发 429 时切换 `model: "lite"` 可用;范例先由主代理写 `docs/logs.md` 固化为模板。 - 子代理无法 SendMessage(非 team 会话),改为在回复中汇报。