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

+54
View File
@@ -0,0 +1,54 @@
// 日志中心 API — 无状态代理查询,平台不落库海量日志 // Logan.Li
import { http } from '@/utils/request';
export interface LogDataSource {
id: number;
name: string;
type: 'loki' | 'elasticsearch';
url: string;
basic_auth?: boolean;
basic_auth_user?: string;
basic_auth_pass?: string;
skip_tls_verify?: boolean;
default_index?: string;
is_default?: boolean;
status?: number;
}
/** 查询结果行 — 仅用于当前页展示,不持久化 // Logan.Li */
export interface LogQueryEntry {
timestamp: string;
level?: string;
message: string;
labels?: Record<string, string>;
raw?: string;
}
export const logCenterApi = {
listDatasources: (type?: string) =>
http.get<LogDataSource[]>('/log-datasources', type ? { type } : undefined),
createDatasource: (data: Record<string, unknown>) => http.post('/log-datasources', data),
updateDatasource: (id: number | string, data: Record<string, unknown>) =>
http.put(`/log-datasources/${id}`, data),
deleteDatasource: (id: number | string) => http.delete(`/log-datasources/${id}`),
setDefaultDatasource: (id: number | string) => http.post(`/log-datasources/${id}/default`),
testDatasource: (data: Record<string, unknown>) => http.post('/log-datasources/test', data),
queryLoki: (data: {
datasource_id: number;
query: string;
limit?: number;
start?: string;
end?: string;
direction?: string;
}) => http.post<{ entries: LogQueryEntry[]; total: number }>('/logs/loki/query', data),
queryElasticsearch: (data: {
datasource_id: number;
index?: string;
query?: string;
query_body?: Record<string, unknown>;
size?: number;
start?: string;
end?: string;
}) => http.post<{ entries: LogQueryEntry[]; total: number }>('/logs/elasticsearch/query', data),
};