Files
SuperBizAgent-java/docs/analysis/功能分析报告.md
T
zhuyongxin 60be51f4a5 docs: 重构文档结构,分离学习笔记和 MVP 架构设计
**变更概述:**
- 将 MVP 架构设计文档独立到项目根目录 `mvp/`
- 整理 `docs/` 为纯学习和分析文档目录
- 按类型分类:learning(学习)、analysis(分析)、reports(报告)、guides(指南)

**目录结构:**
```
mvp/                          # MVP 架构设计(独立)
├── README.md                 # 数据库设计总览
├── architecture/             # 架构文档
│   ├── agent-architecture-mvp.md
│   ├── implementation-plan.md
│   └── ...
└── tables/                   # 数据表设计

docs/                         # 学习和分析文档
├── learning/                 # 学习笔记(00-08 编号)
├── analysis/                 # 分析笔记 + 重构计划
├── reports/                  # 临时报告
└── guides/                   # 指南文档
```

**详细变更:**
- docs/README.md → mvp/README.md(数据库设计入口)
- docs/architecture/ → mvp/architecture/(架构设计)
- docs/tables/ → mvp/tables/(数据表设计)
- docs/学习笔记-*.md → docs/learning/07-*.md, 08-*.md
- docs/项目学习路径.md → docs/learning/00-*.md
- docs/功能分析报告.md → docs/analysis/
- docs/修复报告-*.md → docs/reports/
- docs/日志配置*.md → docs/guides/ 或 docs/reports/
- docs/design/ → docs/analysis/(问题分析和重构计划)
2026-06-23 14:14:51 +08:00

337 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SuperBizAgent-java 功能分析报告
> 分析日期:2026-05-30
> 分析站点:http://localhost:9900
> 分析工具:Playwright MCP
---
## 📊 项目概览
这是一个**智能 OnCall 助手**系统,基于 Spring AI + DeepSeek V4 Flash + BGE-M3 向量化 + Zilliz Cloud (Milvus) 构建的 AIOps 平台。
**核心定位**:为运维/SRE 团队提供 7×24 小时智能告警分析和问题诊断能力。
---
## ✨ 核心功能模块
### 1️⃣ 智能对话系统
**界面特点**:
- 清爽的聊天界面
- 左侧:会话管理(新建对话、近期对话列表)
- 右侧:对话区域 + AI Ops 快捷按钮
**能力列表**:
| 能力 | 说明 | 工具支持 |
|------|------|---------|
| 📅 时间与日期 | 获取当前日期和时间 | ✅ |
| 🌤️ 天气查询 | 查询天气信息 | ⚠️ 当前工具集未配置 |
| 📚 内部知识库搜索 | 搜索公司文档、流程、最佳实践、技术指南 | ✅ RAG (Milvus) |
| ⚠️ Prometheus 告警查询 | 查询监控系统告警信息 | ✅ |
| 📋 腾讯云日志查询 | 查询 CLS 日志(系统指标、应用日志、慢查询、系统事件) | ✅ |
**交互特性**:
- 流式对话响应(SSE)
- Markdown 渲染支持
- 代码高亮(highlight.js)
- 快速/标准模式切换
---
### 2️⃣ AI Ops 自动化分析 ⭐️
**触发方式**:点击右上角橙色 "AI Ops" 按钮
**功能流程**:
```mermaid
graph LR
A[点击 AI Ops] --> B[SSE 流式响应]
B --> C[读取 Prometheus 告警]
C --> D[关联多源数据]
D --> E[LLM 根因分析]
E --> F[生成结构化报告]
```
**实际分析案例**(从 2026-05-30 12:57:36 响应提取):
```markdown
📋 告警分析报告
活跃告警清单:
┌─────────────────┬──────────┬──────────────────┬──────────────────────┬──────┐
│ 告警名称 │ 级别 │ 目标服务 │ 首次触发时间 │ 状态 │
├─────────────────┼──────────┼──────────────────┼──────────────────────┼──────┤
│ HighCPUUsage │ WARN │ payment-service │ 2026-05-30 12:32:40 │ 活跃 │
│ HighMemoryUsage │ CRITICAL │ order-service │ 2026-05-30 12:42:40 │ 活跃 │
│ SlowResponse │ WARN │ user-service │ 2026-05-30 12:47:40 │ 活跃 │
└─────────────────┴──────────┴──────────────────┴──────────────────────┴──────┘
🔍 告警根因分析1 - HighMemoryUsage (order-service) — CRITICAL
症状描述:
- JVM 堆内存使用率持续攀升:3.4GB → 3.8GB(4GB上限),当前 91%
- 近 10 分钟内触发 15 次 Full GC,平均耗时 850ms,内存回收效果越来越差
- OOM Killer 已触发杀死进程(退出码 137,Pod 已重启 3 次)
- 数据库连接池耗尽:active=50/50,waiting=23 个线程
- 消息队列 order-process-queue 积压 15,823 条消息
日志证据:
```java
2026-05-30 20:45:52 FATAL order-service:
java.lang.OutOfMemoryError: Java heap space
at com.example.order.service.OrderService.processLargeOrder(OrderService.java:156)
StackTrace: OrderService.processLargeOrder
-> OrderRepository.findByCondition
-> HikariPool.getConnection
```
根因结论:
order-service 的 `OrderService.processLargeOrder()` 方法存在内存泄漏。
该方法在处理大批量订单时,将过多数据加载到 JVM 堆中未及时释放,导致:
→ JVM 堆内存持续膨胀至满 → 频繁 Full GC 但无法回收 → OutOfMemoryError
→ OOM Killer 杀死进程 → Pod 重启(已 3 次)
→ 数据库连接在 OOM 过程中未能正常归还连接池 → 连接池耗尽
→ 消息队列消费进程也被 OOM/Kill 影响 → 队列积压 1.5 万+ 条消息
🔍 告警根因分析2 - HighCPUUsage (payment-service) — WARN
症状描述:
- CPU 使用率 92%,进程全部为 Java,线程数 245
- 1 分钟负载 3.82,5 分钟负载 3.65(4 核容器已严重过载)
- Redis 连接持续超时(重试 3 次仍失败)
系统指标:
```
2026-05-30 20:57:52 WARN payment-service:
CPU使用率 92%, 线程数 245, load_1m=3.82, load_5m=3.65 (4核)
```
```
**分析深度**:
- ✅ 自动关联告警、日志、指标、系统事件
- ✅ 提取关键证据(OOM 日志、堆栈跟踪、系统事件)
- ✅ 推理根因链路(内存泄漏 → Full GC → OOM → Pod 重启 → 连接池耗尽)
- ✅ 识别级联影响(消息队列积压)
---
### 3️⃣ 会话管理
- **新建对话**:快速开始新一轮交互
- **近期对话列表**:保留历史会话
- **删除对话**:清理无用会话
---
## 🏗️ 技术架构
### 后端技术栈
根据 `devflow/projects/2026-05-29-chatmodel-abstraction` 文档分析:
| 组件 | 技术选型 | 说明 |
|------|---------|------|
| **Chat 模型** | DeepSeek V4 Flash | Spring AI 原生 starter |
| **Embedding** | SiliconFlow BGE-M3 | OpenAI 兼容模式,1024 维向量 |
| **向量数据库** | Zilliz Cloud (Milvus) | 存储知识库向量,collection: `biz` |
| **Web 框架** | Spring Boot | - |
| **AI 框架** | Spring AI 1.1.7 | ChatModel/EmbeddingModel 抽象 |
| **MCP 工具集成** | ToolCallbackProvider | 可选(支持 enabled: false) |
| **日志服务** | 腾讯云 CLS | 系统指标、应用日志、慢查询、系统事件 |
| **监控系统** | Prometheus | 告警查询 |
**架构亮点**(2026-05-29 重构成果):
- ✅ 面向 Spring AI 抽象接口编程(`ChatModel`、`EmbeddingModel`)
- ✅ yml 配置驱动模型路由(`ModelRoutingConfig`)
- ✅ 多厂商并存(DeepSeek + SiliconFlow)
- ✅ 换模型只需改配置,无需改代码
### 前端技术栈
根据浏览器分析:
| 组件 | 技术 |
|------|------|
| **UI 风格** | 简洁对话式界面 |
| **渲染** | Markdown + highlight.js (代码高亮) |
| **通信** | SSE (Server-Sent Events) 流式响应 |
| **图标** | 自定义 SVG 图标 |
| **响应式** | 左侧固定 240px,右侧自适应 |
### API 端点
根据网络请求分析:
| 端点 | 方法 | 说明 | 响应格式 |
|------|------|------|---------|
| `/api/ai_ops` | POST | AI Ops 自动化分析 | `text/event-stream` |
| `/api/chat` | POST | 普通对话(推测) | `text/event-stream` |
| `/api/sessions` | GET | 会话管理(推测) | JSON |
**SSE 数据格式**(从日志提取):
```
event:message
data:{"type":"content","data":"正在读取告警并拆解任务...\n"}
event:message
data:{"type":"content","data":"📋 **告警分析报告**\n\n"}
```
---
## 🐛 发现的问题
### 1. favicon 404
```
[ERROR] Failed to load resource: the server responded with a status of 404 ()
@ http://localhost:9900/favicon.ico:0
```
**影响**:浏览器标签页无图标,控制台 1 条错误
**建议**:添加 `src/main/resources/static/favicon.ico`
### 2. CDN 资源加载失败
```
[GET] https://cdn.jsdelivr.net/npm/highlight.js@11.9.0/es/highlight.min.js
=> [FAILED] net::ERR_BLOCKED_BY_ORB
```
**影响**:代码高亮功能可能失效
**建议**:
- 方案 1:下载 highlight.js 到本地 `/static/js/`
- 方案 2:更换 CDN(unpkg、cdnjs)
- 方案 3:改用非 ES Module 版本
---
## 💡 核心价值主张
### 🎯 解决的痛点
| 传统运维 | 智能 OnCall 助手 |
|---------|---------------|
| 凌晨告警,登录多个系统查看 | AI Ops 一键获取根因报告 |
| 翻查日志、指标,手动关联 | 自动关联多数据源,提取证据 |
| 新人不熟悉排查流程 | 内置最佳实践,知识库搜索 |
| 人工推理耗时 15-30 分钟 | LLM 推理 3 分钟内完成 |
### 🚀 典型使用场景
**场景 1:凌晨告警快速响应**
```
03:15 收到 PagerDuty 告警
→ 打开 localhost:9900
→ 点击 "AI Ops"
→ 3 分钟内获得根因 + 修复建议 + 证据链
→ 执行修复并记录
```
**场景 2:知识库查询**
```
"搜索一下发布流程的文档"
→ RAG 从 Milvus 检索相关文档
→ DeepSeek 生成友好回答
```
**场景 3:日志关联分析**
```
"order-service 最近有 OOM 吗?"
→ 查询腾讯云 CLS 系统事件日志
→ 关联应用日志
→ 提取关键堆栈跟踪
```
---
## 📂 相关代码文件
推荐查看以下关键文件了解实现细节:
```
src/main/java/org/example/controller/ChatController.java # 对话 API
src/main/java/org/example/service/AiOpsService.java # AI Ops 核心逻辑
src/main/java/org/example/service/ChatService.java # 聊天服务
src/main/java/org/example/service/RagService.java # RAG 知识库
src/main/java/org/example/service/VectorEmbeddingService.java # 向量化
src/main/java/org/example/config/ModelRoutingConfig.java # 模型路由
src/main/java/org/example/config/SiliconFlowEmbeddingConfig.java # BGE-M3 配置
src/main/resources/application.yml # 配置中心
```
---
## 🔬 测试验证
### 已验证功能
| 功能 | 测试结果 |
|------|---------|
| 页面加载 | ✅ 正常 |
| AI Ops 自动分析 | ✅ 正常(56s 完成分析) |
| 对话交互 | ✅ 正常(流式响应) |
| Markdown 渲染 | ✅ 正常(标题、列表、代码块、引用) |
| 会话管理 | ✅ 正常(新建、删除) |
### 冒烟测试套件
根据 `src/test/java/org/example/service/` 存在以下测试:
```
ChatAndEmbeddingSmokeTest.java # Chat + Embedding 冒烟测试(5/5 ✅)
FullPipelineSmokeTest.java # 全流程冒烟测试(5/5 ✅)
```
---
## 📈 未来改进建议
### 功能增强
1. **告警自动修复**:从根因分析 → 生成修复脚本 → 执行(需人工确认)
2. **历史告警学习**:建立告警-根因知识库,加速后续分析
3. **多租户支持**:不同团队隔离数据
4. **移动端适配**:PWA,支持推送通知
### 性能优化
1. **缓存热点查询**:Prometheus 告警缓存 5 分钟
2. **流式响应优化**:SSE 心跳保持连接
3. **向量检索加速**:Milvus IVF_FLAT → HNSW
### 可观测性
1. **分析耗时追踪**:各环节耗时(告警查询、日志查询、LLM 推理)
2. **准确率监控**:根因分析准确率
3. **用户反馈**:👍/👎 评价系统
---
## 📊 技术指标
| 指标 | 数值 |
|------|------|
| **响应时间** | AI Ops 分析 56s(含多源数据查询 + LLM 推理) |
| **向量维度** | 1024(BGE-M3) |
| **知识库规模** | Milvus collection `biz`(具体条数未知) |
| **并发能力** | SSE 流式,支持多用户(未压测) |
| **模型** | DeepSeek V4 Flash(快速模式) |
---
## 🎓 总结
**SuperBizAgent-java** 是一个生产级的智能运维助手,核心亮点在于:
1. **真正的 AI Ops**:不是简单的告警查询,而是多源数据关联 + LLM 根因推理
2. **工程化良好**:Spring AI 抽象、配置驱动、模型可切换
3. **用户体验优秀**:流式响应、Markdown 渲染、一键分析
4. **可扩展性强**:MCP 工具集成、RAG 知识库、多厂商模型
**适用场景**:中大型公司 SRE/运维团队的 7×24 小时智能值守。
---
> 🔗 相关文档:
> - [ChatModel 抽象重构记录](../devflow/projects/2026-05-29-chatmodel-abstraction/brief.md)
> - [技术决策](../devflow/projects/2026-05-29-chatmodel-abstraction/decisions.md)
> - [验收记录](../devflow/projects/2026-05-29-chatmodel-abstraction/acceptance.md)