12_refactor drop iconSvg+sellingPoint reuse description (PR HL#2091 + hotfix #2092)
这个提交包含在:
父节点
2f33d84db6
当前提交
586ba5c6db
@ -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` 单语句多列形式修复。
|
||||
正在加载...
x
在新工单中引用
屏蔽一个用户