first commit

This commit is contained in:
2026-09-11 01:41:52 +08:00
commit 9f22e6ccae
263 changed files with 28935 additions and 0 deletions
@@ -0,0 +1,94 @@
---
name: 全量代码二次审查报告
overview: 对 zt-closet-backend 全量 Go 代码进行二次审查(所有模块覆盖 + 支付/虚拟支付链路深挖),输出按严重程度分级的业务逻辑/技术逻辑问题清单报告,不修改任何代码。
todos:
- id: explore-payment-chain
content: Use [subagent:code-explorer] to explore full codebase and read all payment-chain files (virtualpay, pay, order, benefit, quota, migration)
status: completed
- id: review-xpay
content: "Review virtual pay XPay chain: signing, notify push, goods sync, delivery/refund/iOS query handlers, session_key dependency"
status: completed
dependencies:
- explore-payment-chain
- id: review-wxpay-order
content: "Use [skill:lsp-code-analysis] to review WeChat Pay V3 and order state machine: callbacks, cancel, expire scan, race fallback"
status: completed
dependencies:
- explore-payment-chain
- id: review-benefit-quota
content: "Review benefit grant/revoke and quota flows: idempotency ledgers, compensation scheduler, transaction boundaries"
status: completed
dependencies:
- explore-payment-chain
- id: review-other-modules
content: "Review remaining modules and infrastructure: auth, clothes AI pipeline, community, middleware, DAO, security"
status: completed
dependencies:
- explore-payment-chain
- id: write-report
content: Compile severity-graded issue list and write Chinese review report to docs/ directory
status: completed
dependencies:
- review-xpay
- review-wxpay-order
- review-benefit-quota
- review-other-modules
---
## 产品概述
对智能衣橱微信小程序后端(Go + Gin)进行第二轮全量代码审查("二次 check"),系统性分析业务逻辑问题与技术逻辑问题。本次审查**不修改任何代码**,仅产出问题清单报告。
## 核心需求
- **审查范围**:全量代码(约 9700+ 行核心业务代码),并对支付链路做最深审查——包括最近新增的虚拟支付 XPay(`pkg/wechat/virtualpay.go`、`internal/service/virtualpay.go`)、普通微信支付 V3、订单状态机、权益发放/退款/补偿链路;其余模块(用户/衣物/穿搭/社区/分享/AI/运势/通知/中间件/DAO/迁移)全部过一遍
- **审查维度**:
- 业务逻辑:状态机流转完整性、并发竞态(回调并发/幂等锁)、资损风险(金额校验、重复发放/回收、环境串单、防篡改校验)、权益一致性、越权、边界条件
- 技术逻辑:并发安全(goroutine/锁)、事务边界、Redis/MySQL 一致性与降级、错误处理、资源泄漏、时间与金额精度、签名与验签正确性、HTTP 超时与重试、安全问题(SQL 注入/XSS/SSRF/密钥硬编码/权限)
- **复核历史**:对照此前 `.codebuddy/plans/` 中"修复支付业务逻辑问题"等计划的修复项,验证修复是否完备、是否引入新问题
- **交付物**:一份中文审查报告(写入 `docs/` 目录 markdown 文件),按严重程度分级(严重/中等/轻微),每条问题包含:问题描述、位置(文件:行号)、触发场景与影响、修复建议;不修改任何业务代码
## 审查方法论
### 审查策略
1. **支付链路深挖**:逐行审查虚拟支付 XPay 新增代码与普通支付链路,重点核对:
- 签名与验签(`pay_sig` 的 `uri+"&"+body` 规则、`signData` 字典序序列化、推送 URL SHA1 验签、V3 回调验签解密)
- 发货推送处理:幂等锁 30s、道具 ID/实付金额/环境三重防篡改校验、条件状态流转(待支付/已过期/已取消 → 已支付)的竞态兜底、`finalizeVirtualPaidOrder` 的 pay_time 兜底
- 退款推送:`RefundStatus` 为空串时是否误回退权益、`settleRefundSuccess` 重复推送幂等
- 道具同步:轮询仅 5 次×500ms 是否覆盖微信任务耗时、多商品循环重复 publish 同一 group、上传失败后 `product_status` 状态回填
- `VirtualOrderCreate`:落单与签名的先后顺序、签名失败时遗留待支付订单、iOS 最低 1 元限制、session_key 依赖 Redis 的可用性
- 取消/退款限制:虚拟支付订单禁取消、iOS 订单禁主动退款的位置与状态校验顺序
2. **订单/权益/额度链路**:状态机流转完整性、金额校验、幂等凭证唯一性、过期扫描竞态、补偿任务与 Redis 锁、事务边界(行锁+条件更新)、退款回收"已用额度不回退"规则
3. **其余模块静态审查**:用户登录/鉴权、衣物上传与 AI 流水线、穿搭与社区、衣柜分享懒过期、AI 推荐扣额回退、运势生成锁、通知未读计数一致性
4. **基础设施与安全**:中间件(JWT/限流/日志脱敏)、DAO 层 SQL 参数绑定、Redis 故障降级、配置读取、迁移脚本、错误码分段
### 工具与资源
- 使用 code-explorer 子代理做跨文件、跨目录的批量探索与调用链追踪
- 使用 lsp-code-analysis 技能做语义级导航:定位订单/额度状态变更的所有写入点、回调处理函数的定义与引用、事务边界
- 输出报告:新建 `docs/代码审查报告-二次check.md`,含分级问题清单与修复建议
### 分级标准
- **严重**:资损、安全漏洞、并发导致数据错乱/重复发放、状态机死锁或不可达
- **中等**:边界条件缺失、一致性降级风险、性能隐患、错误处理不当
- **轻微**:代码风格、冗余、注释与文档偏差
### 约束
- 全程只读,不修改任何业务代码;报告为唯一交付物
## 子代理
- **code-explorer**
- 用途:全量代码库跨目录探索,批量读取各模块核心文件,追踪支付/订单/权益链路的跨层调用(router → service → dao → pkg/wechat)
- 预期产出:完整的关键文件清单、调用链关系、各模块代码事实,支撑逐项问题分析
## 技能
- **lsp-code-analysis**
- 用途:对订单状态流转、额度变更、回调处理等关键符号做语义级定义/引用导航,确认所有状态写入点与并发路径
- 预期产出:关键函数调用层次与状态变更写入点全集,避免漏查竞态路径