hl-api-changelog/changelogs-v2/2026-08/07_5630_房型分类字典白名单校验与存量BIG_BED归一-修改接口-管理后台.md
API Changelog Bot 64637bb344
一些检查失败了
changelog-filename-gate / validate (push) Failing after 2s
changelog #5630:房型分类字典白名单校验 + 存量 BIG_BED 归一(#5630)
2026-08-07 11:39:19 +08:00

3.6 KiB

schema, ticket, title, consumer, author, change_type, backend_status, gateway_status, frontend_status, frontend_owner, frontend_ref, target_release, verified_at, status_note, updated_at, base, generated
schema ticket title consumer author change_type backend_status gateway_status frontend_status frontend_owner frontend_ref target_release verified_at status_note updated_at base generated
hl-changelog/v2 5630 房型分类入口字典白名单校验 + 存量 BIG_BED 归一,行程/配房房型恢复中文显示 admin wx 修改接口 deployed verified not_required 后端完成PR #5634 合并 dev-v34f881af977be50850a78c3b05ac9912758b8b87c并部署 TEST;网关实测创建/更新房型 roomCategory=BIG_BED 被 310210 拒绝,存量 BIG_BED 三处数据源归一 KING 后订单详情 roomCategoryLabel 显示中文「豪华大床」。 2026-08-07 dev-v3 2026-08-07T11:45:00+08:00

房型分类字典白名单校验 + 存量 BIG_BED 归一(#5630

背景

行程安排/配房的房型显示英文 BIG_BED 无中文。根因链TEST 库实证):

  1. 房型管理入口 RoomTypeCreate/UpdateRequest.roomCategory 只校验非空+长度,无字典 room_category 白名单校验BIG_BED 经房型管理入口写入 room_type2026-02-19
  2. 配房时 room_type.room_category 快照进 house_hotel_assignment / house_requirement_assignment_snapshot,需求 order_hotel_requirement.days JSON 亦含该 code;
  3. 房型 2026-05-28 已被人工改回 KING,但快照停留 BIG_BED;字典 room_categoryBIG_BED(有 KING=豪华大床)→ roomCategoryLabel 字典映射失败 → 原样显示英文。

变更内容

POST /admin/hotel/{hotelId}/room-typePUT /admin/hotel/room-type/{roomTypeId} 新增房型分类字典白名单校验:

  • roomCategory 必须在字典 room_category 已维护 value 集合内STANDARD/SINGLE/TWIN/QUEEN/KING/DELUXE/SUITE/FAMILY/YURT/SPECIAL/PARENT_CHILD,否则返回业务错误 310210房型分类无效:{code},仅允许字典 room_category 已维护的值),不落库。
  • 字典服务异常/字典数据缺失时降级放行warn 日志),不阻塞房型管理主流程。
  • updateRoomType 未变更 roomCategory 字段时不触发该校验。

补充说明:

  • 无 DTO 字段结构变化;非法 category 此前会静默写库,现在返回 400 业务错误码 310210,属行为收紧。
  • 前端无需适配:房型分类表单一向从字典 room_category 下拉选择,字典内值全部放行。

存量数据处理TEST 已执行,生产需按相同 SQL 归一)

BIG_BED→KING(跟随源房型 3002000000000000013 当前口径,字典映射 KING→豪华大床

-- TEST 已执行并复核清零4+2+2 需求 4 处)
UPDATE house_hotel_assignment SET room_category='KING' WHERE room_category='BIG_BED';              -- 4 条
UPDATE house_requirement_assignment_snapshot SET room_category='KING' WHERE room_category='BIG_BED'; -- 2 条
-- order_hotel_requirement.days JSON读出→递归 roomCategory BIG_BED→KING→写回2 需求 4 处)

验证

  • 定向测试 RoomTypeCategoryValidationTest 8/8BIG_BED 拒绝(不写库)/KING 放行/字典异常降级/空字典降级/update 不改 category 不触发/null 拒绝。
  • 合并后 dev-v34f881af9mvn -pl hl-resource-service -am verify2596 项 0 失败3 个 option Mapper Testcontainers 测试因 Docker Desktop 29 API≥1.40 与老 ryuk 0.7.0 不兼容排除,基线同失败已实证,与本改动无关)。
  • 网关实测 9/9创建/更新 BIG_BED → 310210 拒绝;归一前订单详情 label=BIG_BED英文实证;三处归一复核清零;归一后两订单 label 全显示「豪华大床」。