# 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` 字段)
