素材库文件夹 #4

已关闭
cz2026-05-20 15:31:39 +08:00创建 · 1 评论
协作者

素材库

【工单】素材库 - 子分类素材在父分类列表重复展示

模块:资源管理 → 素材库
类型:功能优化(交互/数据展示)
优先级:中

一、现象描述

当前素材分类为树形层级结构(父分类 / 子分类)。素材被移动到子分类后,在父分类列表中仍会回显,造成父节点视图中"已下沉到子分类的素材"与"尚未归类的素材"混杂展示。

复现路径:资源管理 → 素材库 → 选中父分类「兴安神鹿园」(共 15 条)→ 其子分类「冬」下的"兴安神鹿园-1 / 兴安神鹿园-2"(标签已为 景区管理 / 冬)同时出现在父节点列表中。

二、期望行为

父分类列表默认只展示直属素材(即 categoryId = 当前分类未被分配到任何子分类的记录),不再聚合子分类下的素材。

三、建议方案

  1. 后端:列表查询接口增加参数 includeChildren(默认 false),仅返回当前分类节点直挂的素材,不做子树聚合查询。
  2. 前端:父分类视图增加切换开关:
    • 仅本级(默认):只看未下沉的素材,便于判断归类进度
    • 含子分类:聚合展示全部后代节点素材(即当前逻辑,用于全局检索场景)
  3. 分类树节点上的数量徽标(如「兴安神鹿园 15」)建议拆为 直属数 / 累计数,例如 13 / 15,便于一眼识别归类进度。

四、影响范围

当前行为下,运营人员无法区分哪些素材已完成二级归类、哪些待处理,批量整理时存在重复操作和遗漏风险,素材体量越大问题越明显。

素材库 ## 【工单】素材库 - 子分类素材在父分类列表重复展示 **模块**:资源管理 → 素材库 **类型**:功能优化(交互/数据展示) **优先级**:中 ### 一、现象描述 当前素材分类为**树形层级结构**(父分类 / 子分类)。素材被移动到子分类后,在父分类列表中**仍会回显**,造成父节点视图中"已下沉到子分类的素材"与"尚未归类的素材"混杂展示。 > 复现路径:资源管理 → 素材库 → 选中父分类「兴安神鹿园」(共 15 条)→ 其子分类「冬」下的"兴安神鹿园-1 / 兴安神鹿园-2"(标签已为 `景区管理 / 冬`)同时出现在父节点列表中。 ### 二、期望行为 父分类列表**默认只展示直属素材**(即 `categoryId = 当前分类` 且 **未被分配到任何子分类**的记录),不再聚合子分类下的素材。 ### 三、建议方案 1. **后端**:列表查询接口增加参数 `includeChildren`(默认 `false`),仅返回当前分类节点直挂的素材,不做子树聚合查询。 2. **前端**:父分类视图增加切换开关: - **仅本级**(默认):只看未下沉的素材,便于判断归类进度 - **含子分类**:聚合展示全部后代节点素材(即当前逻辑,用于全局检索场景) 3. 分类树节点上的数量徽标(如「兴安神鹿园 15」)建议拆为 `直属数 / 累计数`,例如 `13 / 15`,便于一眼识别归类进度。 ### 四、影响范围 当前行为下,运营人员**无法区分哪些素材已完成二级归类、哪些待处理**,批量整理时存在重复操作和遗漏风险,素材体量越大问题越明显。
wx2026-05-20 15:31:39 +08:00cz 指派
管理员

已完成(2026-05-20 正式部署)

关联:HL 仓库工单 #2677、PR #2682(已合 dev / dev→dev-v3 / dev→main #2684)、prod 部署 deploy_id=192 已成功。

实际实现

GET /admin/material/list 当传 categoryCode默认就是「仅本级」语义

  • 选父分类(仅 categoryCode,无 subCategoryId)→ SQL 强制 sub_category_id IS NULL,只返回直挂父级的素材
  • 选子分类(subCategoryId=X)→ SQL 严格 sub_category_id = X,不含 X 的后代
  • 「全部素材」(既无 categoryCode 也无 subCategoryId)→ 行为不变

与原方案的差异(与 cz 同步)

原建议 实际做法 原因
后端加 includeChildren 参数(默认 false) 没加参数,直接 hardcode「严格只查自身」 wx 决策:用户场景没有「含子分类」的需求点,加开关反而徒增复杂度,前端也少一个状态。如后续真有「含子分类」需求再加
前端「仅本级 / 含子分类」切换开关 不做 后端语义已变,前端无需感知,URL 参数不变
分类树节点拆为 直属数 / 累计数 暂未做 分类树 GET /admin/material/categories 仍是 selfCount + children 累加。如果你想要拆显示,再开新工单

部署验证

  • 测试服 round-trip 4 个 case 与 DB 实测全匹配(hotel/scenic/全部,详见 HL#2677 closing comment)
  • 正式服 round-trip:scenic 一级旧逻辑返回 1783 条(含所有子分类)→ 改后返回 21 条(仅直挂 scenic 一级),严格筛选生效

UI 侧注意点

左侧分类树左边的统计数字仍按「含子累计」显示(如「兴安神鹿园 15」仍会显示 15),点进列表后右侧 total 是「严格只查本级」的数字。这两个数会不一致,是已知现象,符合本次需求。如果你或运营对此体验有意见,告诉我开新工单拆数字。

关单。

## 已完成(2026-05-20 正式部署) 关联:HL 仓库工单 #2677、PR #2682(已合 dev / dev→dev-v3 / dev→main #2684)、prod 部署 deploy_id=192 已成功。 ### 实际实现 `GET /admin/material/list` 当传 `categoryCode` 时**默认就是「仅本级」语义**: - 选父分类(仅 `categoryCode`,无 `subCategoryId`)→ SQL 强制 `sub_category_id IS NULL`,只返回直挂父级的素材 - 选子分类(`subCategoryId=X`)→ SQL 严格 `sub_category_id = X`,不含 X 的后代 - 「全部素材」(既无 categoryCode 也无 subCategoryId)→ 行为不变 ### 与原方案的差异(与 cz 同步) | 原建议 | 实际做法 | 原因 | |--------|---------|------| | 后端加 `includeChildren` 参数(默认 false) | **没加参数,直接 hardcode「严格只查自身」** | wx 决策:用户场景没有「含子分类」的需求点,加开关反而徒增复杂度,前端也少一个状态。如后续真有「含子分类」需求再加 | | 前端「仅本级 / 含子分类」切换开关 | 不做 | 后端语义已变,前端无需感知,URL 参数不变 | | 分类树节点拆为 `直属数 / 累计数` | 暂未做 | 分类树 `GET /admin/material/categories` 仍是 selfCount + children 累加。如果你想要拆显示,再开新工单 | ### 部署验证 - 测试服 round-trip 4 个 case 与 DB 实测全匹配(hotel/scenic/全部,详见 HL#2677 closing comment) - 正式服 round-trip:scenic 一级旧逻辑返回 **1783** 条(含所有子分类)→ 改后返回 **21** 条(仅直挂 scenic 一级),严格筛选生效 ### UI 侧注意点 左侧分类树左边的统计数字仍按「含子累计」显示(如「兴安神鹿园 15」仍会显示 15),点进列表后右侧 `total` 是「严格只查本级」的数字。这两个数会不一致,是已知现象,符合本次需求。如果你或运营对此体验有意见,告诉我开新工单拆数字。 关单。
wx2026-05-20 15:51:38 +08:00 关闭此工单
登录 并参与到对话中。
未选择标签
2 名参与者
通知
到期时间
未设置到期时间。
依赖工单

没有设置依赖项。

参考:wx/hl-api-changelog#4
没有提供说明。