From c872297deaf475f64945d320546e3db7ea5ec892 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Tue, 12 May 2026 12:00:26 +0800 Subject: [PATCH] =?UTF-8?q?2026-05-12:=20=E6=92=A4=E9=94=80+=E9=87=8D?= =?UTF-8?q?=E5=8F=91=20-=20icon=20=E5=AD=97=E6=AE=B5=E4=BB=8E=20material?= =?UTF-8?q?=5Fid=20=E6=94=B9=20SVG=20=E6=96=87=E6=9C=AC=20(PR=20#2087,=20R?= =?UTF-8?q?efs=20#2068)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 前一份 12_frontend_notice_admin_resource-product-icon-selling-point.md 提到的 iconMaterialId / iconUrl 两字段已撤销, 后端最终用单字段 iconSvg (TEXT) 直接存 SVG 源码. sellingPoint 字段保持不变. Co-Authored-By: Claude Opus 4.7 (1M context) --- ...min_resource-product-icon-CHANGE-to-svg.md | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 changelogs/2026-05/12_frontend_notice_admin_resource-product-icon-CHANGE-to-svg.md diff --git a/changelogs/2026-05/12_frontend_notice_admin_resource-product-icon-CHANGE-to-svg.md b/changelogs/2026-05/12_frontend_notice_admin_resource-product-icon-CHANGE-to-svg.md new file mode 100644 index 0000000..88cc339 --- /dev/null +++ b/changelogs/2026-05/12_frontend_notice_admin_resource-product-icon-CHANGE-to-svg.md @@ -0,0 +1,114 @@ +# ⚠️ 撤销 + 重发: 资源 / 产品节点图标字段改为 SVG 文本 iconSvg + +> **服务**: hl-resource-service (端口 8082) + hl-product-service-v2 (端口 8083) +> **PR**: [#2087](https://git.1814.love:8443/wx/HL/pulls/2087) — 已合并 dev + 测试服部署 +> **撤销**: 同日早些时候的 [`12_frontend_notice_admin_resource-product-icon-selling-point.md`](./12_frontend_notice_admin_resource-product-icon-selling-point.md) 中 `iconMaterialId` / `iconUrl` 两字段**已撤销**, 见下 +> **Issue**: [#2068](https://git.1814.love:8443/wx/HL/issues/2068) (已关闭) +> **日期**: 2026-05-12 +> **影响范围**: 管理端「资源管理 → 景区/活动/服务」+「产品编辑 → 行程编排/产品卖点」+ 小程序「今日体验」节点 + +--- + +## ⚠️ 关键变化 + +**前一份 changelog 说 iconMaterialId 和 iconUrl 两字段** — **这个设计已撤销**。 + +后端最终方案是**单字段 `iconSvg` (String)** 直接存 SVG 源码文本,不走素材库: +- 前端**不需要选择素材库图片**了 +- 前端**不需要拼 OSS URL** 了 +- 前端**收到 iconSvg 直接 v-html 或 SVG 渲染** + +`sellingPoint` 字段保持不变, 仍是 VARCHAR(500)。 + +--- + +## 一、撤销的字段 vs 新字段 + +| 撤销字段(请删) | 新字段(请用) | 类型 | +|----------|---------|------| +| `iconMaterialId` | `iconSvg` | String (TEXT) | +| `iconUrl` | (合并到 `iconSvg`, 不再单独存 URL) | - | + +`sellingPoint` 不变 ✅ + +--- + +## 二、测试服已验证 (硬性凭证) + +``` +hl-resource-service 测试服 V20260512_002 已 apply: + ALTER TABLE scenic_spot/activity/service_item DROP COLUMN icon_material_id, ADD COLUMN icon_svg TEXT +hl-product-service-v2 测试服 V20260512_002 已 apply: + ALTER TABLE product_itinerary_node 同上 + +接口测试: + POST /admin/scenic/spot { iconSvg: "..." } → 存取一致 ✓ + GET 产品行程详情节点 → iconSvg 字段就位 ✓ + 「资源默认值复制」「前端覆盖优先」「不回写资源」三铁规仍守住 ✓ +``` + +--- + +## 三、变更接口清单 + +### 资源端 (12 接口 = 3 类资源 × 4 个接口) + +| # | 接口 | 方法 | 路径 | 变更 | +|---|------|------|------|------| +| 1 | 景区 创建 | POST | `/admin/scenic/spot` | 请求/响应 `iconMaterialId` 改 `iconSvg` String | +| 2 | 景区 更新 | PUT | `/admin/scenic/spot` | 同上 | +| 3 | 景区 详情 | GET | `/admin/scenic/spot/{id}` | 响应字段重命名 | +| 4 | 景区 列表 | GET | `/admin/scenic/spots` | ListVO 字段重命名 | +| 5-8 | 活动 同上 | - | `/admin/activity/item*` | - | +| 9-12 | 服务 同上 | - | `/admin/service/item*` | - | + +### 产品端 + +| # | 接口 | 方法 | 路径 | 变更 | +|---|------|------|------|------| +| 13 | 行程保存 | PUT | `/admin/product/item/{id}/itinerary` | 节点入参 `iconMaterialId(Long)` → `iconSvg(String)` | +| 14 | 产品详情 (admin) | GET | `/admin/product/item/{id}` | 节点响应 `iconMaterialId/iconUrl` → `iconSvg` | +| 15 | 产品详情 (mp) | GET | `/mp/product/{id}` | 同上,小程序「今日体验」用 | + +--- + +## 四、前端字段约束 + +| 字段 | 类型 | 必填 | 约束 | 备注 | +|------|------|------|------|------| +| iconSvg | String(TEXT, 最大 64KB) | 否 | 应为有效 SVG XML 文本(`...`) | 前端直接 v-html / innerHTML 渲染或 svg-loader | +| sellingPoint | String | 否 | 最多 500 字符 | 不变 | + +--- + +## 五、UI 层面建议 + +### 资源管理页 (3 类资源) + +之前建议「素材库选择器选小图」的方案撤销, 改成: +- **图标**: 文本框(或 SVG 上传组件), 后端存 SVG 源码 +- 可参考方案: 前端给个 SVG 图标库(如 Material Icons / Heroicons 的 SVG 集合)让用户选, 选完拷 SVG 源码进表单字段 +- 或允许用户直接粘贴 SVG XML(给个 textarea + 预览) + +### 产品编辑 - 行程编排 + +- 节点上的图标控件改用 SVG 源码(同上) +- **后端自动复制规则不变**: 节点选完资源后, 若前端不传 iconSvg → 后端从资源端拷贝默认 SVG 进节点快照 +- 修改节点 iconSvg 不回写资源, 这条铁规也不变 + +--- + +## 六、不影响的地方 + +- `sellingPoint` 字段(包括位置 + 长度 + 行为)不动 +- 「资源默认值复制」「前端覆盖优先」「永不回写资源」三铁规不动 +- Bean Validation 用 @ApiModelProperty 标注新字段, 后端无校验 SVG XML 合法性(前端必要时自检) + +--- + +## 七、需要前端做的事(替代上一份 changelog) + +1. ⏰ **3 类资源管理页**: 把之前规划的「图片素材选择器」换成 **SVG 文本输入/选择** +2. ⏰ **产品编辑 → 行程编排** / **产品卖点**: 节点的 icon 编辑从 materialId 改 SVG 文本字段 +3. ⏰ 「今日体验」小程序: 节点前的图标直接 `wx:html="{{ iconSvg }}"` (或 rich-text) +4. swagger 实时核对: `https://api.test.1814.love:9443/hl-resource-service/v2/api-docs?group=资源服务` + `https://api.test.1814.love:9443/hl-product-service-v2/v2/api-docs?group=产品服务` (账号 hulalv / HuLaLv@Doc2026)