From 64637bb344e8fd2c7e085b836fa116ee3932eafd Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Fri, 7 Aug 2026 11:39:19 +0800 Subject: [PATCH] =?UTF-8?q?changelog=20#5630=EF=BC=9A=E6=88=BF=E5=9E=8B?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E5=AD=97=E5=85=B8=E7=99=BD=E5=90=8D=E5=8D=95?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=20+=20=E5=AD=98=E9=87=8F=20BIG=5FBED=20?= =?UTF-8?q?=E5=BD=92=E4=B8=80=EF=BC=88#5630=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...白名单校验与存量BIG_BED归一-修改接口-管理后台.md | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 changelogs-v2/2026-08/07_5630_房型分类字典白名单校验与存量BIG_BED归一-修改接口-管理后台.md diff --git a/changelogs-v2/2026-08/07_5630_房型分类字典白名单校验与存量BIG_BED归一-修改接口-管理后台.md b/changelogs-v2/2026-08/07_5630_房型分类字典白名单校验与存量BIG_BED归一-修改接口-管理后台.md new file mode 100644 index 0000000..90d7bff --- /dev/null +++ b/changelogs-v2/2026-08/07_5630_房型分类字典白名单校验与存量BIG_BED归一-修改接口-管理后台.md @@ -0,0 +1,59 @@ +--- +schema: "hl-changelog/v2" +ticket: "5630" +title: "房型分类入口字典白名单校验 + 存量 BIG_BED 归一,行程/配房房型恢复中文显示" +consumer: "admin" +author: "wx" +change_type: "修改接口" +backend_status: "deployed" +gateway_status: "verified" +frontend_status: "not_required" +frontend_owner: "" +frontend_ref: "" +target_release: "" +verified_at: "" +status_note: "后端完成:PR #5634 合并 dev-v3(4f881af977be50850a78c3b05ac9912758b8b87c)并部署 TEST;网关实测创建/更新房型 roomCategory=BIG_BED 被 310210 拒绝,存量 BIG_BED 三处数据源归一 KING 后订单详情 roomCategoryLabel 显示中文「豪华大床」。" +updated_at: "2026-08-07" +base: "dev-v3" +generated: "2026-08-07T11:45:00+08:00" +--- + +# 房型分类字典白名单校验 + 存量 BIG_BED 归一(#5630) + +## 背景 + +行程安排/配房的房型显示英文 `BIG_BED` 无中文。根因链(TEST 库实证): + +1. 房型管理入口 `RoomTypeCreate/UpdateRequest.roomCategory` 只校验非空+长度,**无字典 `room_category` 白名单校验** → `BIG_BED` 经房型管理入口写入 `room_type`(2026-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_category` 无 `BIG_BED`(有 `KING`=豪华大床)→ `roomCategoryLabel` 字典映射失败 → 原样显示英文。 + +## 变更内容 + +`POST /admin/hotel/{hotelId}/room-type` 与 `PUT /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→豪华大床`): + +```sql +-- 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/8:BIG_BED 拒绝(不写库)/KING 放行/字典异常降级/空字典降级/update 不改 category 不触发/null 拒绝。 +- 合并后 dev-v3(4f881af9)`mvn -pl hl-resource-service -am verify`:2596 项 0 失败(3 个 option Mapper Testcontainers 测试因 Docker Desktop 29 API≥1.40 与老 ryuk 0.7.0 不兼容排除,基线同失败已实证,与本改动无关)。 +- 网关实测 9/9:创建/更新 BIG_BED → 310210 拒绝;归一前订单详情 label=BIG_BED(英文实证);三处归一复核清零;归一后两订单 label 全显示「豪华大床」。