docs: update dev-log - AIOps对话历史持久化

This commit is contained in:
attacker committed 2026-06-18 03:06:14 +08:00
1 parent 32de3709ed
commit ae09faa780
1 file changed
+39
+39
View File
@@ -1622,3 +1622,42 @@ cd ~/devops/aiops
- 可扩展: 1) Chat 流式输出(SSE/streaming)提升长回答体验 2) 快捷操作接入真实数据(分析今日告警 -> 拉取 alertApi 注入 prompt)3) 对话历史持久化(存 DB,刷新不丢失) - 可扩展: 1) Chat 流式输出(SSE/streaming)提升长回答体验 2) 快捷操作接入真实数据(分析今日告警 -> 拉取 alertApi 注入 prompt)3) 对话历史持久化(存 DB,刷新不丢失)
- 前端剩余接近上限的组件: TopologyView.tsx(576)、ExcelServerImport.tsx(549)、DomainManager.tsx(492)、K8sClusterDetail.tsx(489) —— 仍为拆分候选 - 前端剩余接近上限的组件: TopologyView.tsx(576)、ExcelServerImport.tsx(549)、DomainManager.tsx(492)、K8sClusterDetail.tsx(489) —— 仍为拆分候选
- TraceManager.tsx(620)/GrafanaDashboard.tsx(616) 属优雅降级组件(无后端) - 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)