ArjunRai1/IncidentOps
GitHub: ArjunRai1/IncidentOps
基于 Spring Boot 和 React 构建的全栈事件管理系统,结合 RAG 实现 AI 驱动的事件摘要、根因分析和语义搜索。
Stars: 1 | Forks: 0
# IncidentOps






## IncidentOps 是一个使用 Spring Boot 和 React 构建的、生产就绪的全栈事件管理平台。它提供安全的身份验证、完整的事件生命周期管理、通过评论和时间线的协作,以及使用检索增强生成 (RAG) 的 AI 驱动的事件分析。该应用程序已完全容器化并部署在 AWS 上,展示了面向生产的架构。
# 技术栈
## 后端
- Java 21
- Spring Boot
- Spring Security
- JWT 身份验证
- Spring Data JPA
- Spring AI
- Flyway
- Docker
## 前端
- React
- Vite
- React Router
- Axios
- Tailwind CSS
- Context API
## 数据库
- PostgreSQL
- Redis
- PgVector
## AI
- Spring AI
- Gemini
- RAG

## 亮点
- 基于 OTP 邮件验证的 JWT 身份验证
- 基于角色的访问控制 (RBAC)
- 事件生命周期管理
- AI 驱动的事件摘要与根因分析
- 使用 RAG 的语义搜索
- 使用 Docker Compose 的 Docker 化部署
- 在 AWS EC2 上的生产部署
- 使用 RAG 的 AI 驱动事件分析
# 已实现的功能
## 身份验证
### 用户注册
新用户使用其邮箱和密码进行注册。
流程:
1. 用户输入注册详情。
2. 后端验证请求。
3. 用户信息被临时存储。
4. 生成 OTP。
5. OTP 带有有效期存储在 Redis 中。
6. OTP 通过邮件发送给用户。
7. 前端重定向到验证页面。

### 邮箱验证
流程:
1. 用户输入 OTP。
2. 后端针对 Redis 验证 OTP。
3. 如果有效:
- 在 PostgreSQL 中创建用户。
- 移除 Redis 中的记录。
4. 用户被重定向到登录页面。

### 登录
流程:
1. 用户输入邮箱和密码。
2. 验证凭据。
3. 生成 JWT token。
4. Token 返回给前端。
5. 前端存储该 token。
6. 随后的每个 API 请求都会自动包含此 JWT。

### 受保护的路由
已认证的用户可以访问:
- 仪表板
- 事件
- 个人资料
未认证的用户将被重定向到登录页面。
### 忘记密码
流程:
1. 用户输入已注册的邮箱。
2. 后端生成密码重置 OTP。
3. OTP 存储在 Redis 中。
4. OTP 通过邮件发送。
5. 前端重定向到重置密码页面。
### 重置密码
流程:
1. 用户输入:
- OTP
- 新密码
2. 后端验证 OTP。
3. 更新密码。
4. 删除 Redis 中的记录。
5. 用户被重定向到登录页面。
# 事件管理
## 事件列表
已实现:
- 列出事件
- 服务端分页
- 服务端搜索
- 状态过滤
- 优先级过滤
- 排序
- 加载状态
- 空状态
- 错误处理
## 所有的过滤和排序均由后端执行。

## 创建事件
用户可以创建新的事件。
捕获的信息:
- 标题
- 描述
- 优先级
- 处理人(如果有)
状态由后端自动初始化为 **OPEN**。

## 查看事件
显示完整的事件信息,包括:
- 标题
- 描述
- 状态
- 优先级
- 创建者
- 处理人
- 创建时间戳
- 更新时间戳

## 更新事件
用户可以更新事件详情。
可编辑字段:
- 标题
- 描述
- 优先级
- 状态
- 处理人
仅在编辑状态下可用保存操作。
## 评论
已实现:
- 查看评论
- 添加新评论
评论按时间顺序显示,包含:
- 作者
- 时间戳
- 评论内容
评论无法被编辑。
## 时间线
显示事件历史。
每个事件包含:
- 事件类型
- 描述
- 时间戳
时间线是只读的。

# 个人资料
已实现:
显示已认证用户的:
- 用户 ID
- 邮箱
- 角色

信息从以下位置获取:
```
GET /api/v1/auth/me
```
# 更新个人资料:
已实现
- 用户能够更新邮箱地址,OTP 将发送到新邮箱进行验证。
- 用户能够通过已注册邮箱完成的 OTP 验证来更新密码。

# 前端架构
## API 层
专门的 API 模块:
- authApi
- incidentApi
- commentApi
- timelineApi
- profileApi
- aiApi
## 身份验证
使用 React Context 实现。
职责:
- 登录
- 登出
- 身份验证状态
- 当前用户
- 路由保护
## 路由
公开路由
- 登录
- 注册
- 验证 OTP
- 忘记密码
- 重置密码
受保护的路由
- 仪表板
- 事件
- 个人资料
## 可复用组件
已实现的可复用组件:
- Button
- Card
- Loader
- EmptyState
- Retrieval Pipeline
# 后端基础设施
已实现
- PostgreSQL 持久化
- PgVector
- Flyway 迁移
- Redis
- JWT 身份验证
- Spring Security
- Spring AI
- Ollama
- Docker Compose
Redis 目前用于:
- 注册 OTP
- 密码重置 OTP
# 部署
IncidentOps 在 AWS 上使用容器化架构进行部署。
## 基础设施
- 后端部署在 AWS EC2 上
- PostgreSQL 在 Docker 内运行
- Redis 在 Docker 内运行
- Ollama 在 EC2 实例本地运行以进行 AI 推理
## 部署工作流
1. 代码被推送到 GitHub。
2. 在 EC2 实例上构建 Docker 镜像。
3. Docker Compose 启动所有必需的服务。
4. AI 请求通过本地 Ollama 服务进行处理。
# 当前应用程序流程
```
Register
│
▼
Email OTP Verification
│
▼
Login
│
▼
JWT Authentication
│
▼
Dashboard
│
├──────────────► Profile
│ │
│ ├── Change Email
│ └── Change Password
│
└──────────────► Incidents
│
├── Create
├── Search
├── Filter
├── Update
├── Comments
├── Timeline
├── AI Summary
├── Similar Incidents
└── AI Chat
```
# AI 模块
IncidentOps 现在包含一个使用 Spring AI、Ollama 和 PgVector 构建的检索增强生成 (RAG) pipeline。
## AI 对话
功能:
- 自然语言对话界面
- 检索增强生成 (RAG)
- 对已索引事件进行语义搜索
- 使用检索到的事件提供结合上下文的响应
- 针对未知查询的幻觉防护机制
流程:
1. 用户提交问题。
2. 使用向量相似性搜索从 PgVector 中检索相关的事件文档。
3. 使用检索到的文档构建基础 prompt。
4. 将 prompt 发送给 LLM。
5. AI 仅使用检索到的上下文生成响应。

## 自动事件索引
每个新创建的事件都会被自动索引。
流程:
1. 将事件转换为结构化的 AI 文档。
2. 将元数据附加到文档中。
3. 将文档拆分为 chunks。
4. 使用 Ollama 生成 embeddings。
5. 将 chunks 和 embeddings 存储在 PgVector 中。
这使得向量数据库与事件数据库保持同步。
## 相似事件检索
已实现:
- 语义相似性搜索
- 使用 PgVector 进行向量搜索
- 检索相关的历史事件
相似的事件是基于语义含义检索的,而不是通过匹配关键字。

## AI 事件摘要
已实现:
- AI 生成的事件摘要
- 利用相似事件进行结合上下文的摘要
- 仅使用检索到的文档生成有依据的响应
生成的摘要包括:
- 发生了什么
- 受影响的组件
- 可能的影响
模型不会凭空捏造检索上下文之外的信息。

## AI 根因分析与解决建议
已实现:
- AI 生成的根因分析
- 利用相似的历史事件进行结合上下文的分析
- 基于检索到的事件提供可操作的解决建议
- 仅使用检索到的文档生成有依据的响应
生成的分析包括:
- 可能的根本原因
- 来自相似事件的支持性证据
- 建议的解决步骤
- 预防性建议(如适用)
模型不会凭空捏造检索上下文之外的原因或建议。


# 项目状态
| 模块 | 状态 |
|-----------------------------|--------|
| 身份验证 | ✅ 完成 |
| 注册 OTP | ✅ 完成 |
| 密码重置 | ✅ 完成 |
| JWT 身份验证 | ✅ 完成 |
| 个人资料 | ✅ 完成 |
| 事件 CRUD | ✅ 完成 |
| 评论 | ✅ 完成 |
| 时间线 | ✅ 完成 |
| 搜索 | ✅ 完成 |
| 过滤器 | ✅ 完成 |
| 排序 | ✅ 完成 |
| 分页 | ✅ 完成 |
| AI 对话 (RAG) | ✅ 完成 |
| 自动事件索引 | ✅ 完成 |
| 语义搜索 | ✅ 完成 |
| 相似事件检索 | ✅ 完成 |
| AI 事件摘要 | ✅ 完成 |
| 根因分析 | ✅ 完成 |
| 解决建议 | ✅ 完成 |
| 最终 UI 优化 | ✅ 完成 |
| Docker 化 | ✅ 完成 |
| 部署 (AWS EC2) | ✅ 完成 |
标签:AI风险缓解, DevOps运维, React, Spring Boot, Syscalls, 事件管理系统, 全栈应用, 搜索引擎查询, 检索增强生成 (RAG), 测试用例, 自定义脚本, 请求拦截