docs: update dev-log - SystemManager 拆分(useLdapManagement Hook)
This commit is contained in:
1 parent
019a9d13f3
commit
a501229cb3
1 file changed
+29
@@ -1489,3 +1489,32 @@ cd ~/devops/aiops
|
|||||||
- ExcelServerImport.tsx(549) 属导入向导,可提取步骤组件
|
- ExcelServerImport.tsx(549) 属导入向导,可提取步骤组件
|
||||||
- sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分
|
- sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分
|
||||||
- 后端 sql_audit.go(435行) 属已移除菜单死代码(保留不拆)
|
- 后端 sql_audit.go(435行) 属已移除菜单死代码(保留不拆)
|
||||||
|
|
||||||
|
|
||||||
|
## 2026-06-17 自动推进(cron)— SystemManager 拆分(自定义 Hook 模式)
|
||||||
|
|
||||||
|
- **任务**: 拆分 SystemManager.tsx(569行->308行),提取 `useLdapManagement` 自定义 Hook 封装全部 LDAP 状态与业务逻辑
|
||||||
|
- **背景**: dev-log 上次建议优先拆 SystemManager.tsx(569行) — 系统管理真实业务组件。SystemManager 作为 4-tab 容器(用户管理/角色权限/操作审计/系统设置),其中 LDAP 相关状态占 70%+ 代码量(34 个 useState + 14 个 handler + 50 行 settingsTabProps 透传对象),是典型的"胖状态容器"反模式
|
||||||
|
- **拆分方案(自定义 Hook 提取 — 首次使用此模式)**:
|
||||||
|
- `frontend/src/components/system/useLdapManagement.ts` — **新建**(336行):提取所有 LDAP 状态 + handler 为自定义 Hook。包含三大块:① LDAP 配置管理(loadLdapConfig/handleLdapSave/handleLdapTest)② LDAP 账号管理(loadLdapOUs/loadLdapOUUsers/handleCreateOU/handleCreateLDAPUser/handleDeleteLDAPEntry/openEditLdapUser/handleUpdateLdapUser/handleLdapUserTest)③ LDAP 用户导入(loadLdapUsers/handleLdapImport/loadImportDialogData)。持有 `importing` 状态(CSV+LDAP 共用)。构造 `settingsTabProps` 对象返回给 SystemSettingsTab。接受 `onUsersChanged` 回调在导入后刷新用户列表
|
||||||
|
- `frontend/src/components/system/SystemManager.tsx` — 主组件从 569 行降至 308 行(-261, -46%);移除 34 个 LDAP useState 声明 + 14 个 LDAP handler 函数 + 50 行 settingsTabProps 对象,替换为 `const ldap = useLdapManagement(loadUsers)` 一行;CSV 批量导入改用 `ldap.setImporting()`;保留用户 CRUD(openCreate/openEdit/handleSubmit/handleDelete)+ CSV 解析(handleCsvUpload/handleBatchImport)+ 4-Tab 容器布局
|
||||||
|
- **关键技术点**: Hook 调用必须在 `loadUsers` 定义之后(避免 TDZ — `const ldap = useLdapManagement(loadUsers)` 引用了尚未初始化的 `loadUsers` const);Hook 内部调用 `useConfirm()` 处理删除确认
|
||||||
|
- **结果**:
|
||||||
|
- npx tsc --noEmit 零错误 ✅
|
||||||
|
- npm run build 通过(3.16s) ✅
|
||||||
|
- ./run.sh restart 后 /health 正常 + 前端 200 ✅
|
||||||
|
- API 验证:/admin/users 返回 total=9, /admin/ldap-config 返回 LDAP 配置(host=8.217.205.92) ✅
|
||||||
|
- 浏览器验证 /system(系统管理):
|
||||||
|
- 用户管理 Tab:9 个用户完整渲染(admin/ops01/ops02/dev01/dev02/testuser1/testimport/lisi/wangwu),含来源标识(本地/LDAP)+状态徽章+最后登录时间
|
||||||
|
- 系统设置 Tab:LDAP 配置从 hook 的 loadLdapConfig() 正确加载(host=8.217.205.92, base_dn=dc=opsx,dc=vip),安全设置/审计设置/会话设置/系统信息卡片正常渲染
|
||||||
|
- LDAP 导入弹窗:OU 下拉(根/devops/test) + 5 个 LDAP 用户(zhangsan/lisi/wangwu/logan/testa)正确加载,多选 checkbox 正常
|
||||||
|
- console 零 JS 错误 ✅
|
||||||
|
- grep 确认 useLdapManagement 仅被 SystemManager.tsx 引用
|
||||||
|
- git push 成功 (commit 019a9d1) ✅
|
||||||
|
- **下一步建议**:
|
||||||
|
- SystemManager(308) 已降至安全区间。前端剩余接近上限的组件: TopologyView.tsx(576)、ExcelServerImport.tsx(549)、AIAlertAnalyzer.tsx(541)、LogManager.tsx(514)
|
||||||
|
- TopologyView.tsx(576) 拖拽+SVG 逻辑复杂,拆分需谨慎保留拖拽状态机
|
||||||
|
- TraceManager.tsx(620)/GrafanaDashboard.tsx(616) 属优雅降级组件(无后端),拆分价值低于真实业务组件
|
||||||
|
- LogManager.tsx(514) 属已移除菜单(日志能力)的死代码,可考虑直接删除
|
||||||
|
- sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分
|
||||||
|
- 后端 sql_audit.go(435行) 属已移除菜单死代码(保留不拆)
|
||||||
Reference in new issue
Block a user