feat: 新增设备巡检模块实现完整的巡检告警功能

新增设备巡检模块核心功能,包括:
- 巡检数据存储与调度系统
- 华为/H3C交换机及Linux服务器采集器
- 设备扩展配置与告警规则管理
- 主机详情页巡检配置入口
- 产品名称自定义设置功能
- 网络设备SSH exec通道兼容处理
This commit is contained in:
2026-10-09 10:37:48 +08:00
parent 9202506c46
commit c64e00d835
75 changed files with 12087 additions and 446 deletions

View File

@@ -84,6 +84,7 @@ import {
STORAGE_KEY_SHELL_ONLY_TAB_NUMBER_SHORTCUTS,
STORAGE_KEY_SHOW_TAB_NUMBER_BADGES,
STORAGE_KEY_DISABLE_TERMINAL_FONT_ZOOM,
STORAGE_KEY_PRODUCT_NAME,
} from '../../infrastructure/config/storageKeys';
import { DEFAULT_UI_LOCALE, resolveSupportedLocale } from '../../infrastructure/config/i18n';
import {
@@ -272,6 +273,10 @@ export const useSettingsState = (options: { enableSettingsSync?: boolean; enable
const stored = readStoredString(STORAGE_KEY_UI_FONT_FAMILY);
return stored && isValidUiFontId(stored) ? stored : DEFAULT_UI_FONT_ID;
});
// 产品名称配置(用于标题栏、侧边栏 Logo 等)
const [productName, setProductName] = useState<string>(() => {
return localStorageAdapter.readString(STORAGE_KEY_PRODUCT_NAME) || 'NetMesh';
});
const [syncConfig, setSyncConfig] = useState<SyncConfig | null>(() => localStorageAdapter.read<SyncConfig>(STORAGE_KEY_SYNC));
const [terminalThemeId, setTerminalThemeId] = useState<string>(() => localStorageAdapter.readString(STORAGE_KEY_TERM_THEME) || DEFAULT_TERMINAL_THEME);
const [followAppTerminalTheme, setFollowAppTerminalThemeState] = useState<boolean>(() => {
@@ -1163,12 +1168,32 @@ export const useSettingsState = (options: { enableSettingsSync?: boolean; enable
}
}, [uiFontFamilyId, uiFontsLoaded, notifySettingsChanged]);
// Persist product name
useLayoutEffect(() => {
localStorageAdapter.writeString(STORAGE_KEY_PRODUCT_NAME, productName);
if (persistMountedRef.current) {
notifySettingsChanged(STORAGE_KEY_PRODUCT_NAME, productName);
// 更新窗口标题栏
const bridge = netcattyBridge.get();
if (bridge?.setWindowTitle) {
bridge.setWindowTitle(productName).then((result: any) => {
console.log('[productName] setWindowTitle result:', result);
}).catch((err: any) => {
console.log('[productName] setWindowTitle error:', err);
});
}
}
// 发送自定义事件通知侧边栏更新
window.dispatchEvent(new CustomEvent('productNameChanged', { detail: productName }));
}, [productName, notifySettingsChanged]);
useSettingsIpcSync({
enabled: enableSettingsSync,
syncAppearanceFromStorage,
syncCustomCssFromStorage,
setUiLanguage,
setUiFontFamilyId,
setProductName,
setTerminalThemeId,
setTerminalThemeDarkId,
setTerminalThemeLightId,
@@ -2004,6 +2029,8 @@ export const useSettingsState = (options: { enableSettingsSync?: boolean; enable
setCustomAccent,
uiFontFamilyId,
setUiFontFamilyId,
productName,
setProductName,
syncConfig,
updateSyncConfig,
uiLanguage,