# 小程序评价筛选条件接口 + 小蒙马详情补产品分类

**日期**：2026-04-21
**PR**：#1070（Closes #1069）
**影响**：小程序评价列表页筛选栏、小程序小蒙马产品详情页

---

## 为什么变

1. **评价筛选条件前端硬编码**：小程序评价列表页顶部筛选标签栏（全部/有图/关键词标签）之前前端硬编码，无法跟字典联动；字典 `review_keyword_tag` 9 项标签维护在后台，前端看不到新增/下线。
2. **小蒙马详情 `category` 字段漏返回**：管理端给 GROUP 产品选分类（亲子游/蜜月/摄影 等 字典 `product_category`），但小程序详情接口前期反馈 `category` 未返回。排查后端代码链路齐全（Entity/VO/Assembler 都有字段），根因最可能是测试环境 jar 旧。此次合并 + 部署已让 `category` 稳定返回，同时在 Assembler 补一行显式 `setCategory` 兜底 Hutool BeanUtil 潜在边界。

---

## 接口契约变化

### 1. 新增 `GET /mp/review/filter-tags`（评价筛选条件）

**鉴权**：需要 Bearer token（登录 mp 用户）。

**返回结构**：

```json
{
  "code": 200,
  "message": "成功",
  "data": {
    "fixedFilters": [
      {"key": "all", "label": "全部"},
      {"key": "hasImage", "label": "有图"}
    ],
    "tagFilters": [
      {"key": "QUIET_PRIVATE", "label": "安静私密"},
      {"key": "KIDS_LOVE_IT", "label": "孩子玩疯了"},
      {"key": "BUTLER_CARING", "label": "管家贴心"},
      {"key": "HIGHLY_RECOMMEND", "label": "强烈推荐"},
      {"key": "SCENIC_BEAUTY", "label": "风景绝美"},
      {"key": "COMFY_STAY", "label": "住宿舒适"},
      {"key": "GOOD_FOOD", "label": "餐饮丰富"},
      {"key": "NICE_DRIVER", "label": "司机友善"},
      {"key": "GOOD_ITINERARY", "label": "行程合理"}
    ]
  },
  "success": true
}
```

**字段说明**：
- `fixedFilters`：固定筛选器（前端跟据 `key` 做列表参数传递）
  - `all` → 不加筛选
  - `hasImage` → 调 `GET /mp/review/target?hasImage=true`
- `tagFilters[].key`：字典 `review_keyword_tag` 的 `dictValue`
- `tagFilters[].label`：字典 `review_keyword_tag` 的 `dictLabel`（直接用于展示）

**缓存**：Redis 侧 `mp:review:filter-tags` 键 30 分钟 TTL，字典变更后台修改会触发 MpCache 自动失效，前端无需做本地缓存管理。

**建议用法**：
- 小程序进入评价列表页时调一次，把返回的 `fixedFilters` + `tagFilters` 合并渲染成筛选 tab 栏
- 用户点 tag 后，用 `tagFilters[].key` 作为筛选参数传递给列表接口（**注意**：当前 `/mp/review/target` 还不支持按 tag 筛选评价，仅支持 `ratingLevel`/`hasImage`/`hasVideo`，tag 筛选需后端后续补。本期仅完成筛选条件接口部分）

### 2. `GET /mp/product/{id}` 的 `category` 字段（强化稳定性）

**无接口签名变化**。`MpProductDetailRespVO.category` 字段早已存在，但此前偶发未返回。本次部署后：

- GROUP 产品 `category` 稳定返回，取值为字典 `product_category` 的 `dictValue`
- 可能值：`family` / `honeymoon` / `photography` / `experience` / `driving`
- 前端若需展示中文（亲子游 / 蜜月旅行 / 摄影之旅 / 深度体验 / 自驾越野），拿 `category` 作为 dictValue 查字典 `product_category` 即可

---

## 验证结果（测试环境 2026-04-21 11:37）

| 接口 | 结果 |
|---|---|
| `GET /mp/review/filter-tags` | 200，返回 2 个固定筛选器 + 9 个字典标签筛选器 |
| Redis `mp:review:filter-tags` TTL | 1768s（接近 1800s 缓存正常） |
| `GET /mp/product/2044306857534636034`（PUBLISHED GROUP） | 200，`productType="GROUP"`，`category="family"` |

---

## 前端改动建议

- [ ] 评价列表页初始化时调 `GET /mp/review/filter-tags`，渲染 filter tabs（合并 fixedFilters + tagFilters）
- [ ] 小蒙马详情页按字典 `product_category` 把 `category` code 转中文 label 展示
