revert(changelog): 撤回 15_*remove_season_filter*,Claude 误解需求
用户真实需求是:前端传 productLineId,后端反查产品线 seasons 自动过滤 不是去掉筛选,而是把筛选从前端透传 seasons 改成后端按 productLineId 自动做。 新方案后端 PR 进行中。
这个提交包含在:
父节点
a096b34762
当前提交
522b22b55f
@ -1,92 +0,0 @@
|
||||
---
|
||||
date: 2026-05-15
|
||||
type: frontend-feature
|
||||
module: admin-product-v2-itinerary-picker
|
||||
priority: medium
|
||||
backend_pr: null
|
||||
backend_issue: null
|
||||
supersedes:
|
||||
- "14_frontend_feature_admin_scenic-season-filter-and-tags.md"
|
||||
- "14_frontend_feature_admin_activity-season-filter-and-tags.md"
|
||||
notify: ["@mmg"]
|
||||
status: pending
|
||||
---
|
||||
|
||||
# 产品设计「从资源库添加活动」弹窗 — 去掉季节筛选 + 标签只显示匹配项
|
||||
|
||||
## 业务变更
|
||||
|
||||
用户(产品)05-15 反转了 05-14 刚定的"按产品线季节过滤"需求。新需求:
|
||||
|
||||
1. **去掉筛选** — 弹窗列表展示当前 tab 下**全部**资源(景区/游玩项目/餐厅/服务),不再按当前产品线的 `seasons` 过滤
|
||||
2. **标签只显示匹配项** — 资源行右侧的季节标签,只渲染"当前产品季节 ∩ 资源支持季节"的交集。
|
||||
- 例:产品季节 = `["summer"]`,资源支持 `["spring","summer","autumn"]` → 只显示 `summer` 一个标签
|
||||
- 例:产品季节 = `["summer"]`,资源支持 `["spring","autumn","winter"]` → **不显示任何季节标签**(没交集)
|
||||
3. **范围** — 弹窗 4 个 tab(景区景点 / 游玩项目 / 餐厅 / 服务)全部按此规则。
|
||||
|
||||
## 后端 — 完全不用动
|
||||
|
||||
后端的 `seasons` query 参数本来就是**可选**(空/不传 = 不过滤),所以:
|
||||
|
||||
| 接口 | 行为 |
|
||||
|------|------|
|
||||
| `GET /admin/scenic/spots` | 不传 `seasons` 参数即可,返全部景区 |
|
||||
| `GET /admin/activity/items` | 不传 `seasons` 参数即可,返全部游玩项目 |
|
||||
| `GET /admin/restaurant/items` | 本就无 seasons 参数 |
|
||||
| `GET /admin/service/items` | 本就无 seasons 参数 |
|
||||
|
||||
VO 中 `seasons: List<String>` 字段保留(前端要用它做交集渲染),无变化。
|
||||
|
||||
> ⚠️ 副作用:不传 `seasons` 后,景区/活动列表的 `coverUrl` 会回落到主表的默认封面,不再按季节切图。这是用户预期的(整体去掉季节相关效果)。
|
||||
|
||||
## 前端实现要点
|
||||
|
||||
### 弹窗调用列表接口
|
||||
|
||||
```js
|
||||
// 旧(05-14 版,需删掉透传 seasons 的逻辑):
|
||||
// const params = new URLSearchParams()
|
||||
// productLineSeasons.forEach(s => params.append('seasons', s))
|
||||
// await api.get(`/admin/scenic/spots?${params}&pageSize=20`)
|
||||
|
||||
// 新:
|
||||
await api.get('/admin/scenic/spots', { params: { pageSize: 20 } })
|
||||
```
|
||||
|
||||
同样适用 `/admin/activity/items`。
|
||||
|
||||
### 季节标签渲染逻辑
|
||||
|
||||
```js
|
||||
// 取交集
|
||||
const productSeasons = currentProductLine.seasons || [] // 当前产品线季节
|
||||
const resourceSeasons = vo.seasons || [] // 资源支持季节
|
||||
const visibleSeasons = resourceSeasons.filter(s => productSeasons.includes(s))
|
||||
|
||||
// 4 色保持不变(与 05-14 版一致):
|
||||
// spring → #67C23A / summer → #409EFF / autumn → #E6A23C / winter → #909399
|
||||
|
||||
// 不再显示春夏秋冬全部 4 个标签 — 只渲染 visibleSeasons
|
||||
```
|
||||
|
||||
### 节点卡片(已选节点)
|
||||
|
||||
**已添加进行程的节点卡片的季节标签**,**同样规则**:只显示与当前产品线季节匹配的部分。
|
||||
节点 VO `InternalProductDetailVO.NodeItem.seasons` 字段保留,前端做同样的交集过滤渲染。
|
||||
|
||||
### 餐厅/服务 tab
|
||||
|
||||
后端这两个接口本来就没有 `seasons` 字段(VO 无 `seasons`),所以餐厅/服务 tab:
|
||||
- 列表本来就不会按季节过滤(无变化)
|
||||
- 资源行右侧**无季节标签**渲染(无变化)
|
||||
- 但**主题标签**(如"自然风光""历史人文")若仍存在,**保持现状**(用户本次只反转季节相关行为)
|
||||
|
||||
## 涉及前端文件 (仅供参考定位)
|
||||
|
||||
- 弹窗组件: `D:\work2\hl-ui\src\views\product-v2\` 下行程编辑器子组件(05-14 改过的位置)
|
||||
- 季节标签组件: 05-14 新建的季节 Tag 组件,渲染逻辑改成交集即可
|
||||
|
||||
## 关联
|
||||
|
||||
- 推翻 (supersedes): 05-14 的 `frontend_feature_admin_scenic-season-filter-and-tags.md`(后端 #2229)、`frontend_feature_admin_activity-season-filter-and-tags.md`(后端 #2234)
|
||||
- 后端 PR #2229 / #2234 **不回滚**,新增的 `seasons` 子表 / VO 字段 / query 参数全部保留(前端不传即可,未来若再要可直接复用)
|
||||
正在加载...
x
在新工单中引用
屏蔽一个用户