# R6 真测发现 + 修复:insurance 翻页 + refund review PARTIAL 静默错位 > **服务**: hl-order-service-v3 > **PR**: #2937 > **Issue**: #2935 > **日期**: 2026-05-23 > **影响**: 1 P0 + 1 P1 + 1 P2(其中 P2 是更深的静默业务错位 bug) --- ## ⚠️ 关键变化(前端 mmg) ### 1. 🔴 退款审批 PARTIAL **必传 approvedAmount**(behavior change) **之前**:`POST /v3/admin/refund/review {decision: "PARTIAL"}` 不传 `approvedAmount` → Service fallback 到 `calculatedAmount/paidAmount`,**PARTIAL 被静默当 APPROVED 全额处理**(语义错位 bug) **之后**:必返 `code=530403 REFUND_REVIEW_PARTIAL_AMOUNT_REQUIRED "PARTIAL 审批必须传 approvedAmount"` **前端如果有 PARTIAL 审批漏传 approvedAmount 的场景必须补传**,否则会被 530403 拒绝。 ### 2. 🟢 `/v3/admin/insurance/products` 翻页边界返 400 **之前**:`page=0` → 500 IndexOutOfBoundsException / `pageSize=10000` 不拒 **之后**:`page=0` → 400 / `pageSize > 100` → 400(与其他 7/8 list 接口一致) --- ## 改动 ### P0+P1 R6L: AdminInsuranceController.listProducts 翻页校验缺失 - 新建 `InsuranceProductListReqVO` 继承 `PageParam`(`page @Min(1)` + `pageSize @Min(1) @Max(100)`,含 `isOverseas` 字段) - Controller 改 `@Valid InsuranceProductListReqVO req`,@PageParam 注解直接拦截非法 - 与其余 7 接口风格一致 ### P2 R6M: AdminRefundController.review PARTIAL 静默错位修复 - **R6-M 报告误判为 NPE**,实际是更隐蔽的语义错位 bug: - Service 层映射后枚举 APPROVE/REJECT 丢失 PARTIAL 信息 - approvedAmount=null 时 fallback 到 calculatedAmount/paidAmount - 实际行为:PARTIAL 被静默当 APPROVED 全额退款 — **业务静默 bug** - 修:Controller 持有原 decision 枚举,前置校验 `decision=PARTIAL && approvedAmount=null` → 抛 `BusinessException(530403)` - 错误码 530403 `REFUND_REVIEW_PARTIAL_AMOUNT_REQUIRED` 在 `OrderRefundErrorCode:127` 已存在(设计预留实现遗漏),复用 ## 验证 - 50 直接相关测试 0 failure - 3 新单测: - `listProducts_pageNum_zero_returns400` - `listProducts_pageSize_over100_returns400` - `review_PARTIAL_without_approvedAmount_throws530403`(断言 `refundReviewService.review` `never()` 被调,Service 完全没接到错误数据) ## R6 累计测试发现(4 agent) | Agent | 维度 | 结果 | |-------|------|------| | R6-J | 状态机异常 | 22 反例全走业务码 0 BUG + 3 UX 文案改进 | | R6-K | 并发竞态 | 5 @Lock4j + 4 @Idempotent + 1 死锁实测 0 BUG(R5-G RateLimiter 5 阈值误判 → 实际 10)| | R6-L | 翻页边界 | 8 接口 × 18 维度 = 144 点 84.7% 通过,1 P0 + 1 P1 | | R6-M | ErrorCode | 22 类 ~265 总数 50+ 真触发 段位合规 100%,1 P2 | 5 文件 +87 -8 + 1 新 VO。 ## 关联 - 工单 #2935(closed) - PR #2937(squash merged) - R6 报告 `.tmp/qa-r6{j,k,l,m}-*-report.txt`(共 4 份)