--- 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 — 不阻塞功能, 但每加一个项目都要手抄一遍亮点, 体验差。