hl-api-changelog/changelogs/2026-05/11_frontend_notice_admin_product-step5-equipment-template-quick-fill.md
API Changelog Bot 2daa58f49a docs(changelog): 产品版本 Step5 装备建议加「从模板选择」快速填充按钮(前端任务)
后端 0 改动,纯前端给现有 equipmentList 区域加快速填充按钮,
复用已有 GET /admin/equipment-template/enabled + GET /admin/equipment-template/{id}
两个接口拉模板填表单,保存时仍走 equipmentList(快照,与模板脱钩)。

模板整体绑定仍在产品线(主题)层,不动 PR #1782 设计。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 16:18:50 +08:00

5.3 KiB

管理端产品编辑 Step5: 装备建议增加「从模板选择」快速填充按钮(前端任务,后端已就绪)

服务: hl-product-service-v2 (端口 8083) PR: 无(纯前端,后端 0 改动) Issue: 无(前端 BUG/feature 不建工单) 日期: 2026-05-11 影响范围: 管理后台产品(版本)编辑 → Step3 预订须知 → 装备建议区域


⚠️ 关键变化

用户反馈:装备建议组合模板已建好,但产品(版本)编辑页 Step3 「装备建议」只能逐条手动加,没法用模板。

方案定调(用户拍板)

  • 装备组合模板EquipmentTemplate整体仍绑定在「产品线主题」层 —— 不动 PR #1782 的设计
  • 模板对产品版本只是「装备池」:产品版本编辑时点按钮 → 拉模板 → 把装备项填入下方 equipmentList 表单 → 用户可继续手动增删改 → 保存的是装备项快照,与模板脱钩
  • 后端 0 改动,纯前端做"快速填充"按钮

一、背景

PR #1768 → #1782 历史:

  • #1768: 装备组合模板首次落地,绑在产品版本product_supplement
  • #1777 / #1782: 用户反馈"应该绑在主题层",已迁移 templateId 到 product_line 层
  • 但 PR #1782 配套的前端改造未完成(主题编辑页没加下拉、产品版本 Step5 还是手动逐条加)

本次 5/11 用户重新明确:

  • 模板整体绑定仍在主题层(保留 #1782
  • 产品版本编辑时的「装备建议」需要能从模板快速填充到表单(不传 templateId 给后端,前端只是借模板做填充)

二、变更接口清单

后端 0 个新接口、0 个 break,前端复用以下已存在接口:

# 接口 方法 路径 用途
1 启用模板下拉 GET /admin/equipment-template/enabled 获取所有 ENABLED 模板的 (templateId, name, itemCount)
2 模板详情 GET /admin/equipment-template/{templateId} 拿到模板的 items 数组(用于填充表单)

三、前端实现要点

UI 位置

产品版本编辑页(/product/edit?id=xxx)→ 第 3 步「预订须知」→「装备建议」区域:

当前:仅有「+ 新增装备 (N/20)」一个按钮,逐条手动加。

新增:「+ 新增装备」按钮旁边上方加一个 [ 从模板选择 ] 按钮。

交互流程

  1. 点击 [ 从模板选择 ]
  2. 弹出/下拉 GET /admin/equipment-template/enabled 列表(显示模板名 + items 条数)
    • 可选 UX默认高亮"当前主题已绑模板"(前端可在 ProductLineRespVO 取 equipmentTemplateId,匹配后置顶/打勾)
  3. 用户选中某个模板 → 调 GET /admin/equipment-template/{templateId} 拿 items 数组
  4. 填充策略(前端拍板,建议二选一):
    • 覆盖模式:清空当前 equipmentList → 填入模板 items推荐,符合"快速填充"直觉)
    • 追加模式:模板 items 追加到当前 equipmentList 末尾(注意 ≤20 条上限校验)
  5. 填充后用户可继续手动增删改单条
  6. 保存时调当前 Step5 保存接口,equipmentList 字段照常传(不要传 templateId 给 ProductSupplementSaveReqVO,该字段已删除)

与主题绑定模板的关系

  • 主题(产品线)层的 equipment_template_id 字段:保持不动,目前 MP 端读取仍以此为主
  • 产品版本「从模板选择」只是 UI 工具,不改写主题绑定
  • 保存到 equipment_list 后,MP 端渲染优先级:主题模板 items → fallback equipment_list(即用户在 Step5 手动维护的项才在主题未绑模板时生效)

模板装备项数据结构

GET /admin/equipment-template/{templateId} 返回的 items 数组结构:

[
  { "text": "防晒霜 SPF50+", "icon": "sunscreen", "color": "#FFA726" },
  { "text": "长袖防晒衣", "icon": "clothes", "color": null }
]

完全兼容 ProductSupplementSaveReqVO.EquipmentItem(字段同名 text/icon/color,前端 ES6 直接拷贝即可,无需字段映射。

校验

  • 单条 text 1-50 字(后端校验)
  • 总条数 ≤20后端校验,前端填充前先比对若超出需提示

四、不影响范围

  • MP 端装备项展示:不变(主题模板 → fallback equipment_list
  • 主题(产品线)创建/编辑表单的「装备建议组合」下拉:仍是 PR #1782 待办的前端任务,本次不收口
  • 后端任何接口、任何 VO、任何 DDL0 改动
  • 装备组合模板列表/编辑页(/product/equipment-template):不变
  • 产品保存接口:仍是 equipmentList 数组,无新字段

五、相关历史

PR Issue 说明 是否仍有效
#1768 #1767 装备组合模板首版,绑产品版本层 ⚠️ 字段已迁走
#1782 #1777 字段从 product_supplement 迁到 product_line 有效(设计仍是主题层绑)
本次 - 产品版本 Step5 加「快速填充」按钮(前端) 最新

六、相关文档

  • EquipmentTemplate 模板列表接口:AdminEquipmentTemplateController:82-97
  • 产品版本 Step5 SaveReqProductSupplementSaveReqVO(无 templateId 字段,请勿误传)
  • MP 渲染优先级:MpProductDetailAssembler:236-253