4.8 KiB
4.8 KiB
R5 真测发现 + 修复:PII 应急脱敏 + 配房 BLOCKER + 6 P1
服务: hl-order-service-v3 PR: #2900 / #2901 / #2902 Issue: #2894 / #2895 / #2896 日期: 2026-05-22 影响: 🔴 前端 breaking change(traveler 字段改名) + 配房链路恢复 + 订单详情补字段 + 金额格式统一
⚠️ 关键变化(前端 mmg 必读)
1. 🔴 traveler VO 字段改名(breaking change,前端必同步改 hl-ui)
| 旧字段 | 新字段 | 值格式 |
|---|---|---|
idNo |
idCardMasked |
220***********1234(17 字符变长星) |
phone |
phoneMasked |
138****2046(11 字符固定星) |
emergencyPhone |
emergencyPhoneMasked |
139****5678 |
适用接口:
GET /v3/admin/order/{id}/traveler/list列表GET /v3/admin/order/{id}详情overview.travelers- traveler 智能解析 dry-run 输出
前端如有 traveler.idNo / traveler.phone 引用必须改为 traveler.idCardMasked / traveler.phoneMasked。
2. 🟢 订单详情新增 transportPlans + itinerary 字段(BUG-3 修)
GET /v3/admin/order/{id} 顶层 data 新增:
transportPlans: List<TransportPlanVO>(大交通列表)itinerary: OrderItineraryRespVO(行程)
前端可直接用(原本就缺,现在补上)。
3. 🟢 订单金额字段格式统一 2 位小数
之前 totalAmount=3105.0(1 位)/ refundAmount=0.00(2 位)不一致,统一改为 2 位小数:
OrderListItemVO/OrderMainVO:5 字段(totalAmount/paidAmount/balanceAmount/depositAmount/singleRoomSurcharge)走OrderAmountUtil.to2()- Refund Converter 走
MoneyUtil.formatYuan()
前端如对 3105.0 字符串做精确匹配会出问题,改用 parseFloat 或宽松匹配。
4. 🟢 5 个原本经网关 503/500 的 v3 接口现在通了
POST /v3/admin/order/hotel-requirements/{rid}/assignments(原 JSON 500)→ 200GET /v3/admin/house/staff(原 504)→ 3s 内返(Feign timeout 收紧 + fallback)GET /v3/admin/contract/{id}(原 500 BadSqlGrammarException)→ 200
一、3 PR 改动
PR #2900 PII 应急脱敏(Closes #2894)
- traveler 3 字段改名(
*Masked后缀) + Converter 全 SensitiveDataUtil.maskXxx() 包装 - TravelerSmartParseService.buildDryRunVO 同步脱敏
- 6 新单测 + 红线 PII 不泄漏断言,128 traveler 测试 0 failure
- 后续独立工单:DB TypeHandler 加密(order_traveler+fleet_driver 明文存储)+ audit_log 接入
PR #2901 BLOCKER 修复(Closes #2895)
- BLOCKER-1 配房 500:删
@JsonDeserialize(using = LongDeserializer)错误用法 → 用原生 Long - BLOCKER-2 house/staff 504:houseStaffFeignClient 单独 connectTimeout=2s + readTimeout=3s,触发现有 fallback 返空
- 5 新单测 29/29 全绿
- 经验入 memory:雪花 Long 字段禁 @JsonDeserialize(LongDeserializer)
PR #2902 6 P1(Closes #2896)
- P1-1 contract_status_log 缺 4 BaseDO 列 → V20260522_001.sql 补
- P1-2 OrderDetailVO 补 transportPlans + itinerary + Service 聚合
- P1-3 OrderAmountUtil.to2 统一 2 位小数 + RefundConverter 走 MoneyUtil
- P1-4 inquiry_message.dayNumber → V20260522_002.sql + DO + Service 真实写入
- P1-5 INVENTORY_CHECK op_log operator_name → AdminContextUtil.getRealName 兜底
- P1-6 HouseGrabServiceImpl 双写 house_claim_history(opType/fromUserId/toUserId/reason)
- 180 直接相关测试 0 failure
二、QA R5 真测全量发现(5 agent 累计 22 bug)
| Agent | 方法 | 发现 |
|---|---|---|
| R5-F HOUSE 深度 | 5 业务链端到端 + 11 DB 反查 + 2 真并发 | 2 BLOCKER + 3 P1(已修) |
| R5-G 订单生命周期 | 5 业务链 + 12 DB 反查 + RateLimiter 实测 | 1 P0 + 3 P1 + 3 P2/P3(P0/P1 已修) |
| R5-H 通知字典 | 6 业务链 + 7 DB 反查 | 全 PASS,环境性 504 已处理 |
| R5-I fleet+tag+大交通 | 6 业务链 + 8 DB 反查 + 17 错误码命中 | 1 P0 + 1 mock(P0 应急已修) |
三、测试服验证
| 服务 | commit | 状态 |
|---|---|---|
| hl-gateway | dev-v3 含 #2900-2902 | 已部署 |
| hl-order-service-v3 | dev-v3 含 #2900-2902 + Flyway V20260522_001/002 | 已部署(双实例 8086+8186) |
四、留尾(独立工单 backlog)
- DB TypeHandler 加密迁移(order_traveler + fleet_driver phone/id_card 明文存储)
- audit_log 接入 admin path decrypt
- HouseModuleBoundaryTest ArchUnit 违规独立 PR 治理
- TagLibraryIntegrationTest ApplicationContext 问题独立排查
- user-service
/internal/user/admin/house-staff真实实装(H07 占位) house_claim_history表 @Deprecated 标记,前端历史轨迹切 T9 op_log 后下线本期双写
五、关联
- 工单:#2894 / #2895 / #2896(全部 closed)
- PR:#2900 / #2901 / #2902(全部 squash merged)
- QA 报告:
.tmp/qa-r5{f,g,h,i}-*-report.txt(共 4 份) - memory 升级:
feedback_snowflake-long-no-jackson-deserializer.md(雪花 Long 禁 @JsonDeserialize(LongDeserializer))