feat(ai): 助手浮窗聚焦日志查询页,携带当前查询结果对话
- 浮球只在 /logs 渲染(产品定位:辅助分析正在查看的查询结果,其它页面不打扰) - /logs 查询成功后写入 AI 上下文:LogQL、时间范围、结果条数、error 行数、 最新 20 条样本(去 CRI 包装);对话请求自动携带 - 后端 /ai/chat 接收 context:截断 6000 字 + RedactTextOnly 统一脱敏后并入 system (ECHO 假模型实测注入完整);空态文案改为查询导向
This commit is contained in:
1 parent
2efbed882a
commit
c216bdfdd4
8 files changed
+59
-6
No files matched your search
@@ -18,6 +18,8 @@ import { SourcesManager } from './components/SourcesManager'
|
||||
import { LogContextDialog, type LogContext } from './components/LogContextDialog'
|
||||
import { LogResultsPanel } from './components/LogResultsPanel'
|
||||
import { literalFilters } from './query-utils'
|
||||
import { setLogsAIContext } from '@/lib/ai-assistant-context'
|
||||
import { stripLogEnvelope } from '@/lib/ingress-access-log'
|
||||
import { readQueryHistory, rememberQuery } from './query-history'
|
||||
import { useDebouncedValue } from '@/hooks/useDebouncedValue'
|
||||
|
||||
@@ -173,6 +175,14 @@ export default function LogsPage() {
|
||||
if (version !== requestVersion.current) return
|
||||
if (paging && result.entries.length === 0) { setCursor(''); return }
|
||||
if (!paging) setQueryHistory(rememberQuery(data.query))
|
||||
// AI 助手上下文:当前查询 + 首页结果摘要(样本原文,服务端统一脱敏)
|
||||
setLogsAIContext({
|
||||
query: data.query,
|
||||
rangeMinutes: Math.max(1, Math.round((r.end - r.start) / 6e10)),
|
||||
totalEntries: result.entries.length,
|
||||
errorLines: result.entries.filter(e => e.level === 'error').length,
|
||||
samples: result.entries.slice(0, 20).map(e => stripLogEnvelope(e.message)),
|
||||
})
|
||||
setExecutedQuery(data.query)
|
||||
if (!paging) setExecutedRange(r)
|
||||
setSearched(true)
|
||||
|
||||
Reference in new issue
Block a user