diff --git a/changelogs/2026-05/09_followup_admin_price_calendar_single_room_diff_frontend.md b/changelogs/2026-05/09_followup_admin_price_calendar_single_room_diff_frontend.md new file mode 100644 index 0000000..9e4efc1 --- /dev/null +++ b/changelogs/2026-05/09_followup_admin_price_calendar_single_room_diff_frontend.md @@ -0,0 +1,82 @@ +# admin 价格日历"单房差"前端回填 + 卡片展示遗漏 + +> **服务**: hl-product-service-v2(后端无改动) +> **PR**: 无后端 PR(后端已就位) +> **日期**: 2026-05-09 +> **影响范围**: 管理端"产品编辑 → 定价管理"页 + +--- + +## ⚠️ 现象(后端正常,前端遗漏) + +测试 + 正式环境复现: + +1. 用户在"编辑价格区间"弹窗填 `单房差 = 100` → 点"确认添加" → **接口 200 + DB 实际写入 single_room_diff=100** ✅ +2. 但页面上看不到效果: + - **卡片只读视图缺"单房差"列**(只显示 成人/儿童/小童优惠/幼童) + - **再次打开"编辑价格区间"弹窗,单房差栏回显 ¥0.00**(应该回显 100) + +后端验证: + +```bash +curl https://api.test.1814.love:9443/admin/product/item/2045345825172639746/price-calendar?month=2026-04 +# 响应每条记录都含 "singleRoomDiff": 100.0 +``` + +DB 直查也是 `single_room_diff=100.00`,**后端完全没问题**。 + +--- + +## 一、缺失项清单(@mmg 需修) + +### A. 卡片只读视图加"单房差"展示(2026.04.01 — 2026.04.30 那种卡片) + +**当前**:卡片只显示 4 列(成人 / 儿童 / 小童优惠 / 幼童)。 +**应改**:加第 5 列"单房差 ¥XXX"(条件:`singleRoomDiff > 0` 才展示这列;= 0 时可隐藏避免干扰)。 + +数据来源:`GET /admin/product/{id}/price-calendar?month=...` 响应数组每条记录的 `singleRoomDiff` 字段。 + +### B. "编辑价格区间"弹窗 form 初始化回填 `singleRoomDiff` + +**当前**:用户保存后再次点编辑,form 单房差栏初始化为 `0.00`(form default value),没读 DB 真实值。 +**应改**:打开编辑弹窗时 form.setFieldsValue 把对应区间记录的 `singleRoomDiff` 回填到单房差输入框。 + +注意:同一区间内 4-1 ~ 4-30 每天的 single_room_diff 都一样(后端按 rangeId 区间统一展开),取任一一天的值即可,或取该区间第一条记录的 `singleRoomDiff`。 + +### C. (可选)新建价格区间时单房差默认值 + +**当前**:输入框默认 `0.00`,@NotNull @DecimalMin("0.00"),0 合法(=不收单房差)。 +**建议**:维持 0.00 默认,不强制用户填 — 不收单房差是常态。 + +--- + +## 二、字段路径速查(无后端改动) + +| 场景 | 接口 | 字段路径 | 类型 | +|------|------|---------|------| +| 列表回显 | `GET /admin/product/{id}/price-calendar?month=YYYY-MM` | `data[i].singleRoomDiff` | BigDecimal(Number) | +| 弹窗保存 | `POST /admin/product/{id}/price-calendar/batch` | request body `singleRoomDiff` | BigDecimal(Number),@NotNull | +| 班期同款 | `GET /admin/product/{id}/schedule` 等 | `data[i].singleRoomDiff` | BigDecimal | + +**字段名**:`singleRoomDiff`(camelCase),不是 `single_room_diff`。 + +--- + +## 三、回归用例 + +测试服 / 正式环境随便挑一个产品: + +1. 进"产品编辑 → 定价管理 → 编辑价格区间" +2. 填日期范围 + 各栏价格 + 单房差 100 +3. 点"确认添加" → 接口 200 +4. **验收 A**:卡片视图显示"单房差 ¥100"行 / 列 +5. **验收 B**:再次点该区间编辑按钮,弹窗里单房差栏显示 100,不是 0.00 +6. 改成 200 保存 → 卡片更新为 200,再次编辑显示 200 + +--- + +## 四、@mmg 关注点 + +- 后端接口 + DB 字段 + GET 响应 **全部就位**,**只缺前端绑定** +- 不需要任何后端改动 +- 班期(GROUP 小蒙马)的"班期编辑"弹窗也应同步检查这两个问题(同样有 `singleRoomDiff` 字段)