--- 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** - 用途:对订单状态流转、额度变更、回调处理等关键符号做语义级定义/引用导航,确认所有状态写入点与并发路径 - 预期产出:关键函数调用层次与状态变更写入点全集,避免漏查竞态路径