docs: update dev-log - AIOps快捷操作接入真实平台数据
This commit is contained in:
1 parent
32cd3b8112
commit
139bddc9d9
1 file changed
+43
@@ -1661,3 +1661,46 @@ cd ~/devops/aiops
|
||||
- 快捷操作接入真实数据("分析今日告警" -> 拉取 alertApi 注入 prompt 上下文)
|
||||
- 多会话支持(当前是单用户单历史,可扩展为多个命名会话切换)
|
||||
- 前端组件拆分候选仍未变: TopologyView.tsx(576)、ExcelServerImport.tsx(549)、DomainManager.tsx(492)
|
||||
|
||||
|
||||
## 2026-06-18 04:10 自动推进(cron)— AIOps 智能助手快捷操作接入真实平台数据
|
||||
|
||||
- **任务**: 将 AIOps 智能助手的 4 个快捷操作从"仅填入固定文本"升级为"自动拉取真实平台数据 + 注入 LLM 上下文 + 自动发送"——让助手从通用聊天机器人变为真正能感知平台状态的 AIOps 助手
|
||||
- **背景**: 上次 cron 完成了对话历史持久化,dev-log 下一步建议第 2 项明确列出"快捷操作接入真实数据(分析今日告警 -> 拉取 alertApi 注入 prompt 上下文)"。此前快捷操作只做 `setInput(action.prompt)`,用户拿到的是空泛模板(如"分析当前系统的性能瓶颈"),LLM 无任何平台数据可分析,回答只能是泛泛而谈。本次为每个快捷操作绑定真实数据加载器
|
||||
- **实现(纯前端,单文件改动)**:
|
||||
- `frontend/src/components/aiops/AIOpsAssistant.tsx`(+106/-14 行,529→612 行):
|
||||
- 新增 3 个上下文加载器(纯 async 函数):
|
||||
- `loadAlertsContext()` — 调 `alertApi.getAlerts({page_size:20})`,格式化为紧凑告警列表(severity/status/rule_name/target/value/started_at),统计 firing 数量,截断前 15 条
|
||||
- `loadMetricsContext()` — 调 `agentApi.getLatest()`,格式化主机实时指标(hostname/CPU%/内存%/核数/上报时间),自动识别高负载主机(CPU或内存≥80%)并高亮汇总
|
||||
- `loadReportContext()` — `Promise.all` 并发拉取 dashboard stats + recent-alerts + recent-releases,生成平台概览(服务器/K8s/告警/流水线/成本)+ 最近告警 + 最近发布
|
||||
- 新增 `QuickAction` 接口(contextLoader 可选,支持未来无数据加载的纯文本操作),quickActions 数组加类型注解
|
||||
- 4 个快捷操作绑定 contextLoader + 优化 prompt 文案("以下"/"基于以下数据"引导 LLM 引用注入数据):
|
||||
- 分析今日告警 → loadAlertsContext
|
||||
- 性能瓶颈分析 → loadMetricsContext
|
||||
- 生成运维报告 → loadReportContext
|
||||
- 资源优化建议 → loadMetricsContext
|
||||
- 重构: 提取 `sendMessage(text)` 核心函数(原 handleSend 内联逻辑),handleSend 改为薄包装(读 input → sendMessage)
|
||||
- 新增 `handleQuickAction(action)`: 已配置且 enabled 时 → 显示 spinner → 拉取数据(失败注入错误说明而非中断)→ 拼接 `prompt + 【平台实时数据】 + context` → 自动 sendMessage;未配置或无 loader 时 → 回退到 setInput(保持原行为)
|
||||
- 新增 `contextLoading` state(记录哪个快捷操作正在拉数据),按钮在拉取中显示 Loader2 spinner + 全局禁用其他快捷操作
|
||||
- UI: 已配置状态下快捷操作按钮右侧显示淡绿色"实时"小徽章(提示此按钮会拉取实时数据,区别于纯文本填充)
|
||||
- **字段映射验证(curl + sqlite3 对照真实 API)**:
|
||||
- `/alerts` → `{list:[{rule_name,severity,status,target,value,started_at}]}` ✓
|
||||
- `/agent/latest` → `[{hostname,cpu_usage,cpu_cores,mem_total,mem_used,mem_usage,report_time}]`(直接数组,非 {list,total})✓
|
||||
- `/dashboard/stats` → `{server_stats,k8s_stats,alert_stats,pipeline_stats,cost_stats}` ✓
|
||||
- `/dashboard/recent-alerts` + `/recent-releases` → 直接数组 ✓
|
||||
- **结果**:
|
||||
- 后端无需改动(复用现有 API);前端 npx tsc --noEmit 零错误;npm run build 通过(3.21s)
|
||||
- ./run.sh restart 后 /health 正常 + 前端 200
|
||||
- 浏览器验证(/ai-assistant):
|
||||
- 未配置态: 点"分析今日告警" → 输入框填入 prompt(回退行为正常);无"实时"徽章
|
||||
- 配置态(临时启用 ollama dummy): Header 显示"qwen2.5:7b"徽章;4 个快捷操作显示"实时"徽章
|
||||
- 点"分析今日告警" → spinner → 用户消息出现: prompt + "【平台实时数据】\n共 20 条告警(firing 6 条),前 15 条:\n1. [info|resolved] CPU 使用率严重告警 → 目标:server-033 值:72.86..."(真实告警数据成功注入)
|
||||
- 自动发送 → LLM 调用 localhost:11434 失败(无 ollama) → 红色错误气泡"LLM 服务连接失败...connection refused"(优雅降级,无崩溃)
|
||||
- console 零 JS 错误
|
||||
- 测试后清理: 清空 chat_histories + 将 LLM config enabled 重置为 false(系统恢复干净状态)
|
||||
- git push 成功 (commit 32cd3b8)
|
||||
- **下一步建议**:
|
||||
- Chat 流式输出(SSE/streaming)—— 长报告/长分析当前需等完整响应才显示,流式可显著提升体验(需后端 streaming 代理 + 前端 EventSource/fetch-stream 消费)
|
||||
- 快捷操作可扩展更多数据源: 容量预测(接入 agent history 时序数据)、K8s 集群健康(k8sApi)、云账单分析(billingApi)
|
||||
- 用户消息气泡中【平台实时数据】块较长,可考虑折叠展示(默认收起,点击展开)提升可读性
|
||||
- 前端组件拆分候选仍未变: TopologyView.tsx(576)、ExcelServerImport.tsx(549)、DomainManager.tsx(492)
|
||||
Reference in new issue
Block a user