dev-v3 5 天工作流 Round 1 review 4 张 P0/P1 工单(#2841-2844)修复落地测试服: - HOUSE 砍死代码 -1198 行(3 零订阅 Event + publishHotelSwapped + 4 薄 Service + ErrorCode 段位合并) - 红线整改反向违规修复 + CRYPTO/MD5 错误码 4 处去重 + BusinessException cause 重载 - product-v2 简化(EntityFieldDiffUtil + restore @Lock4j + meal_option 缓存) - HOUSE 收尾(DRIVER 撤 + maskPhone 复用 PiiMaskUtil + writeOpLog 统一) 前端关注: - 产品操作日志 changes 详情格式从展开收敛为聚合 summary - 大交通 mode Converter 默认值删除,后端 Service 显式补 - HOUSE 换酒店 DRIVER 通知暂撤,等 FLEET 接通后恢复
8.1 KiB
Round 1 review 跟进:HOUSE 砍 1198 行 + 红线整改反向修复 + product-v2 简化 + 出行人/大交通清理
存放目录: 二期(
order-v3标签)→changelogs-v2/2026-05/服务: hl-user-service + hl-product-service-v2 + hl-resource-service + hl-mp-service + hl-gateway + hl-order-service-v3 PR: #2845 / #2846 / #2847 / #2848 Issue: #2841 / #2842 / #2843 / #2844 日期: 2026-05-22 影响范围: 多服务接口契约无破坏性变更,内部代码简化为主,但操作日志 changes 详情格式从展开改为聚合
⚠️ 关键变化(前端需关注)
1. 🔴 产品操作日志 changes 详情格式收敛(影响:运营后台展示)
PR #2847 把 EntityFieldDiffUtil.diffCollectionDetailed(86 行 8 参展开)简化回 diffCollection 聚合:
前:每个节点 ADD/DELETE/MODIFY 单独一条 changes(改一天 5 节点 5 条),超 30 条裁断"其他 N 项变更未展开"
后:聚合为 共 N → 共 M (新增 X / 删除 Y) 单条 summary
前端 /admin/product/operation-log/search 接口返回的 changes JSON 字段格式简化,展示"动了哪个节点"如有需求需后端补 detail 端点或前端拿原 nodeList diff 渲染。
2. 🟡 大交通 TransportPlan.mode 不再有 Converter 默认值
PR #2848 删 TransportPlanConverter.fromAdminReq 中硬编码的 mode="TOGETHER"。前端如果之前 add/edit 不传 mode 依赖后端默认 TOGETHER 仍能工作(addTransportPlan Service 显式补);batchReplace 后端显式 SEPARATE,与文档 §2.6.2 一致。
3. 🟡 换酒店 DRIVER 通知暂时撤回(等 FLEET 接通再补)
PR #2848 撤回 HOUSE_HOTEL_SWAPPED_DRIVER event 发布 + Dispatcher 删 DRIVER case + V20260522_001 SQL 删 notification_event_config 行。司机暂不再收到换酒店通知,等 FLEET vehicle_plan 反查 Feign 工单接通后一次性补 publisher + V*.sql + dispatcher 三件套(独立工单)。
一、背景
dev-v3 5 天工作流 Round 1 review(2026-05-22),6 agent 并发对 05-16~05-21 wx 提交 50+ PR 复审,维度加 "反过度设计 + 简洁可读" 专项,产出 10 P0 + 30+ P1,打包 4 张工单 #2841-#2844 → 4 个 dev agent 并行修 → 4 张 PR squash 合 dev-v3 → 测试服全部署生效。
总收益:HOUSE 模块净 -1198 行,product-v2 净 -198 行,user/resource/mp 错误码段位收敛,4 处 Service 内 Wrapper 下沉 Mapper default。零功能损失,代码可读性显著提升。
二、关键改动汇总
#2845 (Closes #2841) — 红线整改反向违规 + 错误码去重 + Object 字段
- PR #2439 红线 5 整改反向引入红线 1+4 修复:LoginLogService / UserService / AdminUserService 4 处 Service 内构造 Wrapper 下沉到 Mapper default
- CRYPTO/MD5 错误码 4 处去重:全部复用
SystemErrorCode.CRYPTO_ALGORITHM_UNAVAILABLE (900102) - BusinessException 加 cause 重载:JwtAuthFilter/VariFlight/Amap/WxCrypt 异常带 cause 透传堆栈
- PR #2467 DASHBOARD 4 错误码合并 → 复用
CommonErrorCode.FEIGN_CALL_FAILED - PR #2430 7 枚举错误码合并 → 复用
CommonErrorCode.INVALID_PARAM - MpTripDetailVO.suppliesList/contracts/insurances:
Object→List<Map<String, Object>>;dailyNodes加@Deprecated - 删纯透传 facade:AdminUserService.countAll/listByAdminIds + UserService.countAll
- 决策:不新增 ErrorCode 常量(用户铁规"不引入新错误码");User 未启用 @TableLogic 保留
isNull(deletedAt)
#2846 (Closes #2842) — HOUSE 砍死代码 -1198 行
- 删 3 个零订阅 Event POJO:EnrollChangedEvent / OrderCancelledHouseEvent / RoomChangedEvent
- 删 publishHotelSwapped MQ 链路(零订阅 topic + HotelSwappedEvent POJO + TOPIC_HOTEL_SWAPPED + RocketMQTemplate 注入)
- 合并 4 个薄 Service:HouseStateChangeService → HouseStateMachineHelper / HouseInquiryTimeoutService → HouseInquiryService / HouseAssignmentInternalQueryService → HouseAssignmentService / HouseHotelSwapAdapter → HouseHotelSwapServiceImpl
- HouseFeignErrorCode 整段并入 HouseInternalErrorCode(段位重叠 + 语义重复)
- HouseInquiryErrorCode 595xxx → 808xxx 段位
- HouseE2EWalkthroughIT 8 个 @Test 改
Assertions.fail("待 QA 工单 Hxx") - 删死状态机:CUSTOMER_CHANGE 5 from(main 零 fire)+ SWAP_HOTEL_COMMIT CLAIMING→CLAIMING 自循环
- 删 HouseInventoryCheckedEvent + publish 调用(零消费方)
- swap 触发收紧:fireSwapStateChange 只在 OPEN SWAP_HOTEL/REFUND 待办存在时触发
#2847 (Closes #2844) — product-v2 简化 + 餐饮 facade 缓存
- EntityFieldDiffUtil.diffCollectionDetailed 简化(86 行 → 删,回 diffCollection 聚合)
- ProductItineraryService.buildItineraryChanges 同步简化(-63 行)
- ProductSnapshotService.restoreSnapshot 加 @Lock4j(keys="#productId")
- FieldLabelDict 抽 dict(String...) helper(-28 行)
- product-v2 改动文件 javadoc HTML 标签清零(铁规 15h)
- ProductDetailAggregator.toOperationLogVO 删,改调 ProductOperationLogService.toRespVO(消除双份实现)
- ProductItineraryAggregateFacade meal_option 缓存(7 天产品 Feign 21 次 → 0 次,类成员 volatile Map + @PostConstruct + @Scheduled 5min)
#2848 (Closes #2843) — HOUSE 收尾 + 出行人/大交通清理
- DRIVER 通知占位 noop 撤回(publisher + dispatcher + V20260522_001 SQL DELETE config 三件套)
- HouseAssignmentService.maskPhone 改调 复用现有 PiiMaskUtil(KISS)
- resolveSwapFromState 合并双查为单 IN 查询(HouseTodoMapper.selectOpenByOrderAndTypes)
- HouseAssignmentService.submit hotelName 接通 HouseHotelCacheService 真实拉(空时落 null 不再写中文占位"待拉取酒店主数据")
- HouseInquiryService.writeOpLog 签名加 operatorName 参数,5 调用方显式传(MQ/@Async 场景拿到真实姓名)
- TravelerConverter 删 2 个 0 调用 toInternalVOList 重载(单参 + 双参)
- TravelerErrorCode 删 4 个 0 调用错误码(581117/581124/581126/581133)+ 581121 @Deprecated 指向 581144
- TransportPlanConverter.fromAdminReq 不硬编码 mode(Service 显式传)
- ProductSnapshotService javadoc 措辞修正
三、变更接口清单(仅前端可感知)
| # | 接口 | 方法 | 路径 | 变更类型 | 说明 |
|---|---|---|---|---|---|
| 1 | 产品操作日志 search | GET | /admin/product/operation-log/search |
响应字段格式收敛 | changes 数组中 collection-diff 由"展开 N 条节点级"改为"1 条聚合 summary" |
| 2 | 大交通 add/edit | POST/PUT | /v3/admin/order/{id}/transport-plan/* |
不变 | mode 字段后端 Service 显式设默认值,前端可继续不传 |
| 3 | HOUSE 换酒店通知 | (后端事件) | - | DRIVER 暂撤 | 司机收不到换酒店通知,等 FLEET Feign 接通后恢复 |
四、测试服验证状态
| 服务 | 部署 commit | uptime | 验证 |
|---|---|---|---|
| hl-user-service | dev-v3 含 #2845/#2848 | 20:40 | ✅ V20260522_001 success=1 + DRIVER config 已删 |
| hl-product-service-v2 | dev-v3 含 #2845/#2847/#2848 | 20:41 | ✅ Spring 启动正常 |
| hl-resource-service | dev-v3 含 #2845 | 20:42 | ✅ |
| hl-mp-service | dev-v3 含 #2845 | 20:43 | ✅ |
| hl-gateway | dev-v3 含 #2845 | 20:44 | ✅ |
| hl-order-service-v3 | dev-v3 含 #2846/#2848 | 20:46(SSH restart 兜底) | ✅ HOUSE 接口活着(grab-pool/inquiry 返 200/400 合规) |
五、留尾(独立工单后续)
- HOUSE-SWAP DRIVER 通知 wework 真值切换 → FLEET
vehicle_plan反查 Feign 接通后补 publisher + V*.sql + dispatcher 三件套 - HOUSE-FIX-A
loadProductPool真实化 → H04 接通ProductV2FeignClient.getOrderProductId - #2515 MaterialCategory ↔ Permission 双 @Lazy 循环依赖 → 抽
PermissionGate接口重构(大改动 backlog) - EquipmentTemplateService ↔ ProductLineService 双 @Lazy → 抽
ProductEquipmentBindingService(backlog)
六、关联
- 工单: #2841 / #2842 / #2843 / #2844(全部 closed)
- PR: #2845 / #2846 / #2847 / #2848(全部 merged into dev-v3)
- Review 来源: Claude /@cr Round 1 6 agent 并发 2026-05-22(维度:反过度设计 + 简洁可读)