frontend-bug(product-v2): 卖点快速理解加入游玩项目时未回显项目亮点 (notify @mmg)

这个提交包含在:
API Changelog Bot 2026-05-13 09:52:07 +08:00
父节点 bbb120f374
当前提交 81104fc6d9

查看文件

@ -0,0 +1,68 @@
---
date: 2026-05-13
type: frontend-bug
module: admin-product-v2-supplement
priority: medium
notify: ["@mmg"]
status: pending
---
# 设计产品「产品卖点 → 快速理解」加入游玩项目后,节点描述未自动回显「项目亮点」
## 现象
正式环境 (admin.1814.love) 复现:
1. **资源管理 → 游玩项目管理** 编辑「巴尔虎马之舞实景演绎」, 「项目亮点」字段已填写: `"百马奔腾的视觉震撼,草原文化的动态浓缩。"`
2. **产品管理 → 设计产品**(私人订制类型, 编辑路径 `/product/edit?id=2884932124199674426`)
3. 第 5 步「补充信息」→ 左侧「产品卖点」→「快速理解」→ 加入游玩项目「巴尔虎马之舞实景演绎」(标签:活动)
4. **每个节点下的「节点描述」输入框是空白**(placeholder「节点描述」)
期望: 节点描述自动回显该游玩项目的「项目亮点」(`百马奔腾的视觉震撼…`), 让用户不用手抄一遍。
实际: 空白。
## 根因(纯前端,后端无关)
`/@ba` 调研,后端数据链路完整,锅在前端:
### 后端确认无问题
1. **游玩项目实体** `hl-resource-service/.../entity/ServiceItem.java:53` 已有 `highlights` 字段。
2. **游玩项目列表接口** `GET /admin/service/items``ServiceItemListVO`(`hl-resource-service/.../vo/ServiceItemListVO.java`)字段列表里**第 52 行就是 `highlights`** ✅。也就是说前端拉列表/详情时, 后端**已经把项目亮点吐过去了**, 没有漏字段。
3. **产品补充信息保存接口**`quickUnderstand` 当 JSON 透传存到 `product_supplement.quick_understand` 字段, 后端不解析节点结构, 节点描述写啥后端就存啥。
4. **产品详情接口** 原样吐 JSON, 节点描述存的什么就回什么。
结论: 后端列表接口已返回 `highlights`, 但**前端在「添加节点到快速理解」时, 没有把 `service.highlights` 复制到节点对象的描述字段**(节点 JSON 里那个 `description` / `desc` / 不管叫啥的字段), 所以保存到 DB 时该字段就是空字符串, 编辑回显当然也空。
## 修法(前端,1 处改动)
在「产品卖点 → 快速理解」添加节点的逻辑里, 当来源是游玩项目(service_item)时, 把 `service.highlights` 写进节点的描述字段作为默认值:
```js
// 大致逻辑示意 - 实际字段名以前端 quickUnderstand 节点 JSON schema 为准
function addServiceItemNode(service) {
quickUnderstand.nodes.push({
serviceId: service.serviceId,
name: service.name,
image: service.image,
type: 'service-item',
description: service.highlights || '', // ← 关键:用 highlights 预填
})
}
```
用户仍然可以手动改这个描述框(因为前端是 input 不是只读), 这只是**默认值**。
## 验证清单(前端改完自测)
- [ ] 新建私人订制产品 → 第 5 步「补充信息」→「产品卖点」→「快速理解」→ 加入任一有 `highlights` 的游玩项目 → 节点描述自动出现项目亮点文本
- [ ] 加入一个 `highlights` 为空的游玩项目 → 节点描述空(占位符正常显示), 不报错
- [ ] 用户手动改了节点描述后保存 → 重进编辑页, 显示用户改后的内容(而非再被 highlights 覆盖)
- [ ] 删除节点重新加同一个游玩项目 → 默认值再次填入
- [ ] 已存在的历史产品(节点描述本来就是空的)进入编辑: 视产品策略, 建议**不**自动用 highlights 回填历史空值(否则可能覆盖用户故意留空的意图), 仅对**新加入的节点**做预填
## 后端无需任何改动
`ServiceItemListVO.highlights` 已返回, `product_supplement.quick_understand` 是 JSON 透传, 后端没有补全逻辑也不该有(节点描述用户可改, 不能强行 join 覆盖)。这条 changelog 只为通知前端修。
@mmg 看下 hl-ui 里产品卖点(快速理解)添加游玩项目节点的组件, 优先级 P2 — 不阻塞功能, 但每加一个项目都要手抄一遍亮点, 体验差。