Files
junhong_cmp_fiber/openspec/changes/archive/2026-03-28-fix-code-quality-cleanup/proposal.md
huang f339fb1987
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m8s
fix: 资产钱包自动创建机制 — 修复C端购买时钱包不存在报错
- client_order: 新增 getOrCreateWallet 兜底,钱包不存在时自动创建
- device_import: 设备导入事务内同步创建设备钱包
- iot_card_import: IoT卡批量导入后批量创建卡钱包
- queue/handler: 传递 AssetWalletStore 给两个导入 handler
- migration 000098: 为存量IoT卡和设备补建资产钱包
2026-03-30 11:37:41 +08:00

33 lines
2.7 KiB
Markdown
Raw 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.
## Why
修正业务方案审查后,发现 5 处代码质量问题仍未修复废弃代码残留、错误被吞、权限前置校验缺失、停复机回调未注入、C端状态枚举映射冗余。这些问题不影响核心链路运行但会导致排查困难错误被吞、文档/代码不一致(废弃代码)、潜在越权(权限缺失)、联动功能失效(回调未注入)。趁当前无大功能并行,集中清理。
## What Changes
- **F-2 删除废弃 SIM 状态同步代码**:删除 `internal/task/sim.go` 整个文件、`pkg/queue/handler.go` 中的注册行、`pkg/constants/constants.go` 中的 `TaskTypeSIMStatusSync` 常量。该功能已被轮询系统完全覆盖,消费者核心是 `time.Sleep`,生产者全局零调用。
- **F-3 修复资产服务错误吞没**`internal/service/asset/service.go` 中至少 2 处 `cards, _ := s.iotCardStore.GetByIDs(...)` 吞掉了数据库错误,改为记录日志但不中断主流程。
- **F-5 后台订单 Handler 钱包权限补齐**`internal/handler/admin/order.go` 创建订单时,钱包支付缺少"仅代理可用"的前置校验,与 Service 层的校验不一致,补齐 Handler 层拦截。
- **F-6 停复机回调注入**`internal/bootstrap/` 初始化时未调用 `SetStopResumeCallback` / `SetResumeCallback`,导致停复机后套餐联动回调不触发。在 bootstrap 初始化完成后补充调用。
- **J-4 删除 C端支付状态映射函数**`internal/service/client_order/service.go``orderStatusToClientStatus()` 将管理端 1/2/3/4 映射为 C端 0/1/2造成前后端枚举不一致。删除该函数C端直接使用管理端枚举。**BREAKING**C端前端需同步更新状态枚举解析1=待支付, 2=已支付, 3=已取消, 4=已退款)。
## Capabilities
### New Capabilities
_无新增能力,全部为现有代码的修正和清理。_
### Modified Capabilities
- `asset-queries`: 修复错误吞没,查询失败时记录日志
- `asset-suspend-resume`: 注入停复机回调,停复机后套餐联动生效
- `admin-order-creation`: Handler 层补齐钱包支付权限前置校验
- `client-order-purchase`: 移除 C端支付状态映射统一枚举
## Impact
- **代码删除**`internal/task/sim.go``internal/service/sync/service.go`(如存在)、相关常量和注册行
- **修改文件**`internal/service/asset/service.go``internal/handler/admin/order.go``internal/bootstrap/services.go``internal/service/client_order/service.go``pkg/queue/handler.go``pkg/constants/constants.go`
- **前端影响**C端需将支付状态枚举从 0/1/2 改为 1/2/3/4J-4BREAKING
- **无 DB 迁移**
- **无新增依赖**