From 586ba5c6db82cf431bf37fbfb883cbba2255e3a9 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Tue, 12 May 2026 14:44:04 +0800 Subject: [PATCH] 12_refactor drop iconSvg+sellingPoint reuse description (PR HL#2091 + hotfix #2092) --- ..._iconSvg_sellingPoint_reuse_description.md | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 changelogs/2026-05/12_refactor_admin_drop_iconSvg_sellingPoint_reuse_description.md diff --git a/changelogs/2026-05/12_refactor_admin_drop_iconSvg_sellingPoint_reuse_description.md b/changelogs/2026-05/12_refactor_admin_drop_iconSvg_sellingPoint_reuse_description.md new file mode 100644 index 0000000..ea6511f --- /dev/null +++ b/changelogs/2026-05/12_refactor_admin_drop_iconSvg_sellingPoint_reuse_description.md @@ -0,0 +1,88 @@ +# 后端 refactor 通知 — 删除冗余 iconSvg / sellingPoint, 改读 description / emojiIcon + +**日期**: 2026-05-12 +**类型**: 后端重构 (PR #2091 + hotfix #2092) +**模块**: 资源服务 (scenic_spot / activity / service_item) + 产品行程节点 (product_itinerary_node) +**通知**: @mmg +**前端是否需改动**: **需要小调整** — 改字段名读取 +**严重性**: P2 (API 响应字段下线) + +--- + +## 背景 + +PR #2076 (#2068) 给资源 3 类 + 产品行程节点各新加了 2 字段: +- `iconSvg` (TEXT, SVG 源码) +- `sellingPoint` (VARCHAR 500, 卖点简介) + +但这些表里**本来就有完全能承担相同语义的字段**: +- `description` (TEXT) — 长描述, 可以放卖点文案 +- 节点 `emojiIcon` (lucide 名字符串) — 节点图标 +- 资源 `cover_material_id` — 资源图 + +两套字段并存维护成本高且无收益, 故本次反悔, 全删新加字段, 复用现有。 + +--- + +## API 响应变化 + +### 资源 (scenic_spot / activity / service_item) + +`GET /admin/scenic/spot/{id}` / `GET /admin/activity/...` / `GET /admin/service-item/...`: +- ❌ 删除 `iconSvg` 字段 +- ❌ 删除 `sellingPoint` 字段 +- ✅ 保留 `description` (TEXT) — 用此放卖点文案 +- ✅ 保留 `coverMaterialId` (BIGINT) — 用此放资源图 + +`POST /admin/scenic/spot` / `PUT /admin/scenic/spot/{id}` 等保存接口: +- ❌ 不再接受 `iconSvg` / `sellingPoint` 字段 (Spring/Jackson 静默忽略, 不会 400) + +### 产品行程节点 (product_itinerary_node) + +`GET /admin/product/item/{id}` → `data.itinerary[].nodes[]`: +- ❌ 删除 `iconSvg` +- ❌ 删除 `sellingPoint` +- ✅ 保留 `description` (TEXT) — 用此放卖点/详细描述 +- ✅ 保留 `emojiIcon` (字符串, lucide 图标名) — 用此放节点图标 + +`POST /admin/product/item/{id}/itinerary/day` 等保存接口同上, 不再接受这两字段。 + +MP 端 `MpProductDetailRespVO`, 内部 Feign `InternalProductDetailVO` / `ItineraryNodeItem` / `MpProductDetailInternalVO` 同步去字段。 + +--- + +## 前端 mmg 行动项 + +1. **资源 admin 编辑页**: 如有 "SVG 图标" / "卖点简介" 单独输入框, 删掉; 把内容并到 description 长文本编辑器 +2. **产品行程编排页**: 节点的 "SVG 图标" 入口下线, 节点图标继续用 emojiIcon (lucide 名选择器); "卖点简介" 输入框并入 description +3. **MP 商品详情/今日体验**: 节点展示读 `description` 替代 `sellingPoint`, 读 `emojiIcon` 替代 `iconSvg` + +如果之前没改过 — 当前前端代码可能就还在读 description/emojiIcon, 那就不用动了。 + +--- + +## 测试服实测结果 + +部署版本: dev `4422274c` (PR #2091 + hotfix #2092) + +| 接口 | 字段验证 | +|------|---------| +| `GET /admin/scenic/spot/{id}` | iconSvg=❌ sellingPoint=❌ description=✅ | +| `GET /admin/product/item/{id}` 节点 (13 真实节点) | iconSvg=❌ sellingPoint=❌ description=✅ emojiIcon=✅ | +| `flyway_schema_history` V20260512.003 | success=1, 4 表对应列已删 | + +--- + +## DB Schema 变化 (前端无关, 仅记录) + +V20260512_003 迁移 (两库各一份): +```sql +ALTER TABLE scenic_spot DROP COLUMN icon_svg, DROP COLUMN selling_point; +ALTER TABLE activity DROP COLUMN icon_svg, DROP COLUMN selling_point; +ALTER TABLE service_item DROP COLUMN icon_svg, DROP COLUMN selling_point; +ALTER TABLE product_itinerary_node DROP COLUMN icon_svg, DROP COLUMN selling_point; +``` + +(P0: V001/V002 历史保留不动, 加 forward 删列 V003) + +注: 部署时遇到 MySQL 8 不支持 `DROP COLUMN IF EXISTS` 问题, hotfix PR #2092 改成 `ALTER TABLE x DROP COLUMN a, DROP COLUMN b` 单语句多列形式修复。