Explorar el Código

docs(story-004.001): 更新测试任务和修复设计缺陷记录

- 更新状态为"⚠️ Needs Fix",记录额度支付API设计缺陷
- 添加额度支付API订单状态更新逻辑任务
- 添加微信支付模块修复任务
- 更新测试任务:删除不合理的支付类型订单创建测试
- 添加修复支付类型枚举和实体注释任务
- 添加取消订单时支付恢复逻辑测试任务

🤖 Generated with [Claude Code](https://claude.com/claude-code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname hace 6 días
padre
commit
02c9a45b9b
Se han modificado 1 ficheros con 63 adiciones y 1 borrados
  1. 63 1
      docs/stories/004.001.credit-balance-module-mt.story.md

+ 63 - 1
docs/stories/004.001.credit-balance-module-mt.story.md

@@ -1,7 +1,7 @@
 # Story 004.001: 创建多租户信用额度模块
 
 ## Status
-✅ Completed
+⚠️ Needs Fix (发现设计缺陷:额度支付API没有联动订单服务修改订单状态)
 
 ## Story
 **As a** 系统管理员,
@@ -55,6 +55,27 @@
     - [x] `POST /api/credit-balance/checkout` - 结账恢复额度
   - [x] 添加数据验证Schema (参考:`packages/advertisements-module-mt/src/schemas/`)
   - [x] 添加权限控制和认证中间件
+  - [ ] **补充:在额度支付API中添加订单状态更新逻辑** (新发现的设计缺陷修复)
+    - [ ] **分析发现**:微信支付模块使用`updateOrderPaymentStatus`方法直接更新订单表,而不是调用订单服务
+    - [ ] **方案调整**:额度支付应遵循相同模式,直接操作订单表,保持一致性
+    - [ ] 修改`payment.mt.ts`路由文件,在额度扣减成功后直接更新订单支付状态
+    - [ ] 添加订单实体导入:`import { OrderMt } from '@d8d/orders-module-mt'`
+    - [ ] 添加支付状态和类型枚举导入:`import { PayStatus, PayType } from '@d8d/orders-module-mt'`
+    - [ ] 在额度扣减成功后调用:`await this.updateOrderPaymentStatus({...})`(参考微信支付实现)
+    - [ ] 更新订单支付状态为`PayStatus.SUCCESS`(支付成功),支付类型为`PayType.CREDIT`(额度支付)
+    - [ ] **注意**:需要同时更新`payState`和`payType`字段
+    - [ ] 添加事务处理,确保额度扣减和订单状态更新的一致性
+    - [ ] 添加错误处理,如果订单状态更新失败,回滚额度扣减操作
+
+  - [ ] **补充:修复微信支付模块的不足** (新发现的微信支付设计缺陷)
+    - [ ] **问题发现**:微信支付模块只更新`payState`字段,没有更新`payType`字段
+    - [ ] **更深层问题**:支付类型枚举(`PayType`)中没有微信支付类型,订单实体注释中也没有微信支付
+    - [ ] **修复方案**:
+      - [ ] 在支付类型枚举(`PayType`)中添加微信支付类型:`WECHAT: 4`
+      - [ ] 更新订单实体`pay_type`字段注释:添加"4微信支付"
+      - [ ] 修改微信支付模块的`updateOrderPaymentStatus`方法,同时更新`payState`和`payType`字段
+      - [ ] 微信支付成功时设置:`payState: PayStatus.SUCCESS`, `payType: PayType.WECHAT`
+      - [ ] 修复微信支付使用硬编码数字的问题,改为使用`PayStatus`枚举
 
 
 - [x] **编写测试** (AC: 6)
@@ -62,6 +83,31 @@
   - [x] **API集成测试**:测试端点功能和验证 (参考:`packages/advertisements-module-mt/tests/integration/advertisements.integration.test.ts`)
   - [x] 添加边界条件测试:额度不足、重复操作等场景
   - [x] 确保测试覆盖率 ≥ 80%
+  - [ ] **补充:在额度支付API集成测试中添加完整的订单创建→支付→状态更新流程测试**
+    - [ ] 在`credit-balance-routes.integration.test.ts`中添加新的测试用例
+    - [ ] 测试完整流程:创建测试订单→调用额度支付API→验证额度扣减→验证订单状态更新
+    - [ ] 模拟订单服务调用,验证`updatePaymentStatus`方法被正确调用
+    - [ ] 测试异常场景:订单状态更新失败时的回滚处理
+    - [ ] 测试事务一致性:额度扣减和订单状态更新必须在同一事务中
+
+  - [ ] **补充:更新微信支付模块集成测试,验证支付类型字段更新**
+    - [ ] 在微信支付集成测试中(如`payment.integration.test.ts`)添加测试用例
+    - [ ] 测试微信支付回调成功后,订单的`payType`字段是否正确设置为`PayType.WECHAT`
+    - [ ] 验证`payState`字段使用`PayStatus`枚举而不是硬编码数字
+    - [ ] 测试同时更新`payState`和`payType`字段的正确性
+    - [ ] 验证微信支付模块使用枚举而不是硬编码数字
+
+  - [ ] **补充:修复支付类型枚举和实体注释**
+    - [ ] 验证支付类型枚举(`PayType`)包含所有支付方式
+    - [ ] 在`PayType`枚举中添加微信支付类型:`WECHAT: 4`
+    - [ ] 验证订单实体`pay_type`字段注释包含所有支付类型
+    - [ ] 更新订单实体`pay_type`字段注释:添加"4微信支付"
+
+  - [ ] **补充:测试取消订单时的支付恢复逻辑**
+    - [ ] 测试取消订单时,额度支付订单的额度恢复逻辑
+    - [ ] 验证订单模块正确调用额度支付模块的`restoreBalanceForCancelOrder()`方法
+    - [ ] 测试取消订单时,微信支付订单的退款逻辑(如果存在)
+
 
 - [x] **配置包依赖和导出** (AC: 3, 4)
   - [x] 配置package.json依赖关系(TypeORM、Hono等) (参考:`packages/advertisements-module-mt/package.json`)
@@ -314,6 +360,22 @@ packages/
    - **类型验证测试**:在集成测试中添加响应数据类型验证,确保金额字段为数字类型
    - **测试验证**:所有24个测试通过,新增类型验证测试确认修复有效
 
+18. ⚠️ **发现额度支付API设计缺陷**:额度支付API没有联动订单服务修改订单状态
+   - **问题发现**:额度支付API只做额度扣减,没有更新订单的支付状态
+   - **影响**:订单创建后支付状态仍为"未支付",与实际支付成功状态不一致
+   - **正确流程**:额度支付成功后,订单支付状态应更新为`PayStatus.SUCCESS`,支付类型为`PayType.CREDIT`
+   - **对比分析**:查看了微信支付模块的实现,发现微信支付使用`updateOrderPaymentStatus`方法直接更新订单表(硬编码数字),而不是调用订单服务
+   - **更深层发现**:微信支付模块也有设计缺陷:
+     1. 只更新`payState`字段,没有更新`payType`字段
+     2. 支付类型枚举(`PayType`)中没有微信支付类型
+     3. 订单实体`pay_type`字段注释中也没有微信支付
+     4. 使用硬编码数字而不是`PayStatus`枚举
+   - **方案调整**:额度支付应遵循相同模式,直接操作订单表,保持一致性
+   - **修复方案**:
+     - 在额度支付API中添加订单状态更新逻辑,参考微信支付实现直接更新订单表
+     - **同时修复微信支付的不足**:添加微信支付类型到枚举,更新微信支付模块同时设置`payState`和`payType`
+   - **测试补充**:需要在集成测试中添加完整的订单创建→额度支付→订单状态更新流程测试
+
 ### File List
 **创建的文件:**
 1. `packages/credit-balance-module-mt/package.json` - 包配置