docs: 27 admin 产品线列表按 productType 筛选 (PR #1457)

主题类型筛选生效, query 加 productType 参数, 字典 product_type.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
这个提交包含在:
API Changelog Bot 2026-04-27 09:49:18 +08:00
父节点 c3e5ea13da
当前提交 66a13aeadd

查看文件

@ -0,0 +1,48 @@
# 主题列表(产品线)按主题类型筛选
**日期**: 2026-04-27
**PR**: #1457 (Closes #1456)
**影响端**: 管理端 admin
## 背景
管理后台「前端配置 → 主题列表」(项目术语「主题」=「产品线」, 接口 `/admin/product/line/list`) 筛选「主题类型 = 小蒙马」点搜索, 28 条返回不变, 后端忽略 `productType` 参数。
## 根因
后端双重缺失:
1. `ProductLinePageReqVO` 未声明 `productType` 字段, Spring 自动绑定丢弃 query
2. `ProductLineMapper``selectPage` + `selectPageWithCount` 也没消费 `productType` 字段做 WHERE 过滤
## 接口变化
`GET /admin/product/line/list` query 参数**新增 1 个可选参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `productType` | String | 否 | 产品类型过滤 (字典 `product_type`: `CORE`=核心 / `GROUP`=小蒙马 / `CUSTOM`=定制) |
不传时行为与原来一致(返回所有产品线)。
## 前端改动
筛选下拉「主题类型」选「小蒙马」时,发出 `?productType=GROUP`,本 PR 后端补齐过滤后**前端无需改动**自动生效。
## 验证 (测试服)
修复前 curl 实证:
```
?productType=GROUP total=28 (BUG, 期望 3)
?productType=CORE total=28 (BUG, 期望 5)
DB 实际分布: CORE=5 / GROUP=3 / CUSTOM=8 / NULL=12
```
修复后期望: `productType=GROUP` 返 3 条, `=CORE` 返 5 条, `=CUSTOM` 返 8 条。
## 数据权限边界
`productType` 过滤放在 `applyDataScopeFilter` **之前**, 复合 SQL 形如 `productType=? AND (datascope-OR-block)`, 超管 short-circuit, 普通管理员选 GROUP 在 datascope 收紧后仍命中 — 数据权限边界完整保留。
## C 端
`/internal` 同名筛选 `selectMpPage` 早已支持 productType 过滤, admin 漏掉, 修复后两端能力一致。