摘要
当批量将主题从一个子类别移动到另一个子类别时,如果源类别有必需的标签组,而目标类别的标签设置尚未明确初始化,该操作可能会静默失败(没有错误、没有用户界面反馈、没有管理员日志)。
这对管理员来说很令人困惑,因为用户界面允许该操作,但什么都没有发生。
重现步骤
- 创建一个带有标签约束的子类别 A,例如:
- 要求新主题至少有一个来自标签组的标签
- 例如:“2025–26 学年”
- 在同一父类别下创建子类别 B。
- 保持标签设置不变(默认值,从未打开/保存过)。
- 在子类别 A 中创建主题(它们将带有来自必需组的标签)。
- 在子类别 A 中:
- 选择多个主题
- 使用批量操作 → 更改类别
- 选择子类别 B
预期行为
以下任一情况:
- 主题成功移动
或 - 显示一条信息性错误消息,例如:
- “某些主题包含目标类别不允许的标签”
- “目标类别不允许必需的标签组 X”
实际行为
- 什么都没有发生
- 没有错误消息
- 没有提示通知
- 没有管理员操作日志条目
- 没有可见的后台作业
- 用户界面接受该操作,但移动操作被静默中止。
变通方法
打开目标类别的标签选项卡并保存它(即使没有进行有意义的更改)会立即解决问题。
一旦目标类别的标签规则被明确初始化,批量类别更改就会按预期工作。
备注
这似乎与批量操作期间的标签约束验证有关:
- 源类别有必需的标签组
- 目标类别的标签设置处于未初始化/默认状态
- 验证器失败但未向用户界面显示错误
单主题移动似乎受影响较小;该问题在批量操作中最为明显。
为什么这很麻烦
从管理员/版主的角度来看,这看起来像是:
- 一个损坏的批量操作
- 一个权限问题
- 或一个回归
实际上,这是一个静默的验证失败,没有任何反馈,这使得诊断非常困难。
即使是一个简单的警告消息也会使情况更清晰。