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