tokenFactory/.codebuddy/memory/2026-06-02.md

37 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 2026-06-02
## 修复供应商菜单权限不生效的 Bug
- **根本原因**:管理员设置页面 `SettingsSidebarModulesAdmin.jsx` 中 personal 区域使用 `provider` key而实际侧栏 `SiderBar.jsx` 使用 `supplier` key以及 `supplier-apply`、`supplier-channel`、`supplier-pricing-settings`、`supplier-dashboard` 子菜单),导致 key 不匹配
- **修复文件**`web/src/pages/Setting/Operation/SettingsSidebarModulesAdmin.jsx`
- 初始状态中 personal 区域:`provider` → `supplier`,并补充子菜单 key
- 重置默认配置中:`provider` → `supplier`
- sectionConfigs UI 展示:`provider` → `supplier`,并补充子菜单模块
- 修复后管理员禁用供应商相关模块即可正确生效
## 新增聊天区域角色级菜单配置功能
- **需求**:管理员可针对不同角色(普通用户/管理员/超级管理员)独立配置聊天区域的操练场和聊天菜单可见性
- **修改文件**
1. `controller/misc.go`GetStatus API 新增 `SidebarModulesByRole` 配置返回
2. `web/src/hooks/common/useSidebar.js`finalConfig 计算末尾添加角色覆盖逻辑,读取用户角色和 SidebarModulesByRole 配置
3. `web/src/pages/Setting/Operation/SettingsSidebarModulesAdmin.jsx`:新增角色配置 UIRadioGroup 切换角色 + Switch 控制模块),独立保存到 `SidebarModulesByRole`
- **数据格式**`SidebarModulesByRole` = `{ "1": { "chat": { "playground": false } }, "10": {...}, "100": {...} }`,角色值与 USER_ROLES 一致
- **覆盖逻辑**:角色配置优先级高于全局 SidebarModulesAdmin 配置,显式设为 false 的模块对对应角色隐藏
- **后续优化**角色配置扩展为所有菜单区域chat/console/personal/adminUI 复用 sectionConfigs 动态渲染全部模块
## 修复超级管理员点击"系统设置"菜单异常
- **根本原因**`SettingsSidebarModulesAdmin.jsx` 中 `sectionConfigs``const` 声明在组件内部第340行`buildDefaultRoleConfig()``useState` 初始值中调用第172行引用了尚未声明的 `sectionConfigs`,触发 JavaScript Temporal Dead Zone 错误,导致整个 Setting 页面崩溃
- **修复方案**:将 `sectionConfigs` 提取为组件外部常量,内部用 `translatedSections` 做翻译映射
- **同时修复**
- `resetSidebarModules` 中 personal 缩进混乱 + 遗漏 supplier 子菜单 key
- `useEffect` fallback 中仍有旧的 `provider` key 和 `'distributor-apply'` key 未修正
## 优化菜单权限管理功能(去重+简化)
- **问题**:侧边栏管理页面存在两套重复配置(全局控制 SidebarModulesAdmin + 角色配置 SidebarModulesByRole需要保存两次
- **修改文件**
1. `web/src/pages/Setting/Operation/SettingsSidebarModulesAdmin.jsx`:移除全局控制部分,只保留角色菜单权限配置,一个保存按钮;普通用户角色不显示管理员区域配置
2. `web/src/hooks/common/useSidebar.js`:移除 `adminConfig`/`SidebarModulesAdmin` 依赖,改用角色配置(`SidebarModulesByRole`)作为基础配置与用户个人配置合并
3. `web/src/components/settings/personal/cards/NotificationSettings.jsx`:移除 `adminConfig`/`mergeAdminConfig` 引用,改用后端权限检查
4. `web/src/components/settings/OperationSetting.jsx`:移除 `SidebarModulesAdmin` state
5. `controller/misc.go`GetStatus API 移除 `SidebarModulesAdmin` 返回
- **配置流程简化**管理员只需配置角色菜单权限SidebarModulesByRole用户个人设置在此基础上自定义不需要保存两次