From ae09faa780dd3d2185eaede3bbb6358e51ba4b3a Mon Sep 17 00:00:00 2001 From: attacker Date: Thu, 18 Jun 2026 03:06:14 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20update=20dev-log=20-=20AIOps=E5=AF=B9?= =?UTF-8?q?=E8=AF=9D=E5=8E=86=E5=8F=B2=E6=8C=81=E4=B9=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/dev-log.md | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/docs/dev-log.md b/docs/dev-log.md index b92dbf7..2475604 100644 --- a/docs/dev-log.md +++ b/docs/dev-log.md @@ -1622,3 +1622,42 @@ cd ~/devops/aiops - 可扩展: 1) Chat 流式输出(SSE/streaming)提升长回答体验 2) 快捷操作接入真实数据(分析今日告警 -> 拉取 alertApi 注入 prompt)3) 对话历史持久化(存 DB,刷新不丢失) - 前端剩余接近上限的组件: TopologyView.tsx(576)、ExcelServerImport.tsx(549)、DomainManager.tsx(492)、K8sClusterDetail.tsx(489) —— 仍为拆分候选 - TraceManager.tsx(620)/GrafanaDashboard.tsx(616) 属优雅降级组件(无后端) + + +## 2026-06-18 自动推进(cron)— AIOps 智能助手对话历史持久化 + +- **任务**: 为 AIOps 智能助手增加对话历史持久化 —— 对话刷新/重登后仍可见,按用户隔离;"新对话"按钮真正清空后端历史 +- **背景**: 上次 cron 完成了 AIOpsAssistant 接入真实 LLM 后端,但消息仅存于前端 React state,刷新即丢失。dev-log 下一步建议明确列出"对话历史持久化(存 DB,刷新不丢失)"。本次实现完整持久化层 +- **实现(后端 4 步)**: + - backend/internal/models/llm.go — 新增 ChatHistory 模型: ID/UserID(index)/Role(user|assistant)/Content(text)/Model/CreatedAt,TableName=chat_histories + - backend/internal/api/handlers/llm.go — + - 修改 Chat handler: 成功时成对写入 user + assistant 两条记录(取 req.Messages 最后一条用户消息 + LLM 回复),错误气泡不入库(瞬时 UI) + - 新增 GetChatHistory: GET /aiops/chat-history,按 id DESC 取最近 100 条再反转为时间正序返回 {list,total} + - 新增 ClearChatHistory: DELETE /aiops/chat-history,WHERE user_id 删除当前用户全部历史 + - 新增 import ezops/internal/api/middleware(用 GetUserID 取当前用户) + - backend/internal/api/routes/routes.go — aiopsGroup 注册 GET + DELETE /chat-history + - backend/pkg/database/database.go — AutoMigrate 添加 ChatHistory +- **实现(前端 2 步)**: + - frontend/src/services/api.ts — 新增 ChatHistoryItem 接口 + aiApi.getHistory()/clearHistory() + - frontend/src/components/aiops/AIOpsAssistant.tsx — + - 新增 loadHistory(): mount 时拉取后端历史填充 messages(刷新后仍可见) + - handleNewChat() 改为 async: 先调 clearHistory() 清空后端,再清本地 state + toast 反馈 + - import ChatHistoryItem 类型 +- **结果**: + - 后端 go build 通过;前端 npx tsc --noEmit 零错误;npm run build 通过(3.05s) + - ./run.sh restart 后 /health 正常 + - API 验证(curl + sqlite3): + - chat_histories 表自动创建(含 idx_chat_histories_user_id 索引) + - GET /aiops/chat-history(空)-> {code:200, data:{list:[], total:0}} + - 插入 4 条测试数据 -> GET 返回正确时间正序(user/assistant 配对) + - DELETE /aiops/chat-history -> 清空,SELECT COUNT=0 确认 + - 浏览器验证 /ai-assistant: + - 页面正常渲染(无白屏),空状态正确(LLM 未配置显示"前往配置") + - loadHistory 从 Zustand token 鉴权调用 GET 返回 200/total:0 + - console 零 JS 错误 + - git push 成功 (commit 32de370) +- **下一步建议**: + - Chat 流式输出(SSE/streaming)提升长回答体验(需后端 streaming 代理 + 前端 EventSource 消费) + - 快捷操作接入真实数据("分析今日告警" -> 拉取 alertApi 注入 prompt 上下文) + - 多会话支持(当前是单用户单历史,可扩展为多个命名会话切换) + - 前端组件拆分候选仍未变: TopologyView.tsx(576)、ExcelServerImport.tsx(549)、DomainManager.tsx(492)