feat(log-center): v0.96 日志库/查询页数据源打通 + AgentCLI 输入修复 + AI助手按钮去重

This commit is contained in:
attacker committed 2026-06-27 14:07:11 +08:00
1 parent ba8a4b5f19
commit 8dd5a07b70
4 files changed
+53 -32

No files matched your search

@@ -4,7 +4,7 @@ import { Navigate, useParams } from 'react-router-dom';
import { ScrollText } from 'lucide-react';
import { LogQueryProvider } from './LogQueryContext';
import { UnifiedQueryPanel } from './UnifiedQueryPanel';
import { LogLibraryPage } from './LogLibraryPage';
import { LogDatasourcePage } from './LogDatasourcePage';
import { LogAlertsPanel } from './LogAlertsPanel';
import type { LogEngine } from './types-v3';
@@ -42,7 +42,7 @@ export default function LogCenter() {
{(tab === 'loki' || tab === 'es') && meta.engine && (
<UnifiedQueryPanel engine={meta.engine} onRuleCreated={() => setAlertReloadKey(k => k + 1)} />
)}
{tab === 'datasources' && <LogLibraryPage />}
{tab === 'datasources' && <LogDatasourcePage />}
{tab === 'alerts' && <LogAlertsPanel key={alertReloadKey} />}
</div>
</LogQueryProvider>
@@ -53,19 +53,26 @@ export const STATUS_CONFIG: Record<string, StatusConfigItem> = {
untested: { color: 'var(--dg-text-muted)', label: '未测试', dot: '#94a3b8' },
};
/** Mock 数据源 */
/** Mock 数据源(仅演示用 — demo-loki / demo-es 各一个) */
export const MOCK_DATASOURCES: LogDatasource[] = [
{ id: 1, engine: 'loki', name: 'prod-loki', url: 'http://loki.prod.local:3100', status: 'connected', description: '生产环境 Loki', isDefault: true, auth: null },
{ id: 2, engine: 'loki', name: 'dev-loki', url: 'http://loki.dev.local:3100', status: 'connected', description: '开发环境 Loki', isDefault: false, auth: null },
{ id: 3, engine: 'elasticsearch', name: 'prod-es', url: 'http://es.prod.local:9200', status: 'connected', description: '生产环境 ES', isDefault: true, auth: null },
{ id: 4, engine: 'elasticsearch', name: 'dev-es', url: 'http://es.dev.local:9200', status: 'error', description: '开发环境 ES', isDefault: false, auth: null },
{ id: 1, engine: 'loki', name: 'demo-loki', url: '', status: 'connected', description: 'Loki 模拟数据', isDefault: true, auth: null },
{ id: 2, engine: 'elasticsearch', name: 'demo-es', url: '', status: 'connected', description: 'ES 模拟数据', isDefault: true, auth: null },
];
/** 从 localStorage 加载数据源 */
/** 从 localStorage 加载数据源(迁移旧数据自动清理) */
export function loadDatasources(): LogDatasource[] {
try {
const raw = localStorage.getItem(STORAGE_KEY);
if (raw) return JSON.parse(raw);
if (raw) {
const list: LogDatasource[] = JSON.parse(raw);
// 版本迁移:旧数据(含 prod-loki / dev-loki 等)强制重置为 demo
const oldNames = list.map((d) => d.name);
if (oldNames.includes('prod-loki') || oldNames.includes('dev-es') || oldNames.includes('prod-es') || oldNames.includes('dev-loki')) {
localStorage.removeItem(STORAGE_KEY);
return [...MOCK_DATASOURCES];
}
return list;
}
} catch { /* ignore */ }
return [...MOCK_DATASOURCES];
}