feat: 新增日志中心、功能优化与代码重构

- 新增 log_datasource.go / log_proxy.go / user_api_token.go 后端控制器
- 新增 log_datasource.go model
- 新增 monitor/log-center.ts API 模块
- 新增 LogCenter 前端组件及页面
- 重构 deployment 相关组件 (HPDA/UpdateImageModal/bundle-yaml 等)
- 新增 ResetPasswordDialog / code-snippet-block / copy-button 等 UI 组件
- 重构多个 k8s 相关组件 (TopologyView/ResourceVisualEditor/PodFileBrowser 等)
- 更新多个 API 和工具函数 (auth.ts/monitor/index.ts/request.ts 等)
- 更新静态资源 (index.html + 新 JS/CSS bundle)
- 删除废弃静态资源文件
This commit is contained in:
Logan committed 2026-06-26 23:18:05 +08:00
1 parent 5ca0e6d83a
commit 8d46e8f352
197 files changed
+5014 -815

No files matched your search

+32
View File
@@ -6,6 +6,8 @@ export const STORAGE_KEYS = {
token: 'token',
theme: 'aiops-theme',
user: 'user-storage',
/** API 访问密钥明文(本机 localStorage,生成/重新生成后写入,吊销时清除)// Logan.Li */
apiAccessKey: 'aiops_api_access_key',
} as const;
export function getItem(key: string): string | null {
@@ -48,4 +50,34 @@ export function setToken(token: string): void {
export function clearToken(): void {
removeItem(STORAGE_KEYS.token);
useUserStore.getState().setToken(null);
}
/** 本机缓存的 API 密钥明文(用于 CI/CD curl 自动填入)// Logan.Li */
export function getSessionApiAccessKey(): string {
const cached = getItem(STORAGE_KEYS.apiAccessKey);
if (cached) return cached;
// 迁移旧版 sessionStorage 缓存 // Logan.Li
if (typeof window === 'undefined') return '';
try {
const legacy = sessionStorage.getItem(STORAGE_KEYS.apiAccessKey);
if (legacy) {
setItem(STORAGE_KEYS.apiAccessKey, legacy);
sessionStorage.removeItem(STORAGE_KEYS.apiAccessKey);
return legacy;
}
} catch {
/* ignore */
}
return '';
}
export function setSessionApiAccessKey(token: string): void {
if (token) setItem(STORAGE_KEYS.apiAccessKey, token);
else removeItem(STORAGE_KEYS.apiAccessKey);
if (typeof window === 'undefined') return;
try {
sessionStorage.removeItem(STORAGE_KEYS.apiAccessKey);
} catch {
/* ignore */
}
}