hl-api-changelog/changelogs/2026-05/13_frontend_bug_admin_product-v2-quick-understand-node-no-highlights-prefill.md

3.9 KiB

date, type, module, priority, notify, status
date type module priority notify status
2026-05-13 frontend-bug admin-product-v2-supplement medium
@mmg
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/itemsServiceItemListVO(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 写进节点的描述字段作为默认值:

// 大致逻辑示意 - 实际字段名以前端 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 — 不阻塞功能, 但每加一个项目都要手抄一遍亮点, 体验差。