Skip to content

架构概览

系统架构

Sentinel 是一个基于 AI 的代码审查平台,采用现代化的全栈架构设计。

整体架构图

┌─────────────────────────────────────────────────────────────┐
│                         用户层                               │
│  Web Browser ──► Next.js Frontend (React 19 + Kumo UI)     │
└─────────────────────────────────────────────────────────────┘

                            │ HTTPS / REST API

┌─────────────────────────────────────────────────────────────┐
│                      应用服务层                              │
│                                                              │
│  ┌──────────────────────────────────────────────────────┐  │
│  │         Rust Backend (Axum Framework)                │  │
│  │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐ │  │
│  │  │   Auth      │  │  Projects   │  │  Analysis   │ │  │
│  │  │  Module     │  │   Module    │  │   Module    │ │  │
│  │  └─────────────┘  └─────────────┘  └─────────────┘ │  │
│  │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐ │  │
│  │  │Repositories │  │Integrations │  │     SSE     │ │  │
│  │  │   Module    │  │   Module    │  │   Module    │ │  │
│  │  └─────────────┘  └─────────────┘  └─────────────┘ │  │
│  └──────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

                            │ SQL / Protocol Buffer

┌─────────────────────────────────────────────────────────────┐
│                      数据存储层                              │
│                                                              │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐     │
│  │ PostgreSQL   │  │ TimescaleDB  │  │ Object Store │     │
│  │  (主数据库)  │  │  (时序数据)  │  │   (S3/R2)    │     │
│  └──────────────┘  └──────────────┘  └──────────────┘     │
└─────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────┐
│                      外部服务层                              │
│                                                              │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐     │
│  │  GitHub API  │  │ Claude API   │  │  Cloudflare  │     │
│  │   (OAuth)    │  │  (AI Model)  │  │  (Turnstile) │     │
│  └──────────────┘  └──────────────┘  └──────────────┘     │
└─────────────────────────────────────────────────────────────┘

技术栈

后端技术栈

技术版本用途
Rust1.83+主要编程语言
Axum0.8+Web 框架
SQLx0.8+数据库驱动
PostgreSQL16+主数据库
TimescaleDB2.17+时序数据
Tokio1.42+异步运行时
Tower0.5+中间件

前端技术栈

技术版本用途
Next.js16.2+React 框架
React19.2+UI 库
TypeScript6.0+类型系统
Kumo UI2.5+组件库
TanStack Query5.62+数据获取
Zustand5.0+状态管理
Tailwind CSS4.3+样式框架

架构分层

后端分层架构

┌─────────────────────────────────────────┐
│           Routes Layer                  │  HTTP 路由定义
│  (routes.rs in each module)             │
└─────────────────────────────────────────┘

┌─────────────────────────────────────────┐
│          Handler Layer                  │  请求处理和验证
│  (handlers with CurrentUser extractor)  │
└─────────────────────────────────────────┘

┌─────────────────────────────────────────┐
│         Repository Layer                │  数据访问逻辑
│  (repository.rs with SQLx)              │
└─────────────────────────────────────────┘

┌─────────────────────────────────────────┐
│          Database Layer                 │  PostgreSQL + TimescaleDB
└─────────────────────────────────────────┘

分层职责:

  • Routes Layer: 定义 HTTP 端点和路由映射
  • Handler Layer: 处理请求、参数验证、业务逻辑编排、错误处理
  • Repository Layer: 数据访问抽象、SQL 查询、事务管理
  • Database Layer: 持久化存储

前端分层架构

┌─────────────────────────────────────────┐
│            App Layer                    │  Next.js App Router
│  (pages, layouts, route groups)         │  页面和路由
└─────────────────────────────────────────┘

┌─────────────────────────────────────────┐
│            Core Layer                   │  
│  ┌──────────┐  ┌──────────┐            │
│  │   API    │  │  Hooks   │            │  业务逻辑核心
│  └──────────┘  └──────────┘            │
│  ┌──────────┐  ┌──────────┐            │
│  │  Stores  │  │  Types   │            │
│  └──────────┘  └──────────┘            │
└─────────────────────────────────────────┘

┌─────────────────────────────────────────┐
│           Shared Layer                  │
│  (UI components, layouts, utils)        │  共享组件和工具
└─────────────────────────────────────────┘

分层职责:

  • App Layer: 页面路由、布局组合、SEO 优化
  • Core Layer: API 客户端、React Query Hooks、状态管理、类型定义
  • Shared Layer: UI 组件库、布局组件、工具函数

设计原则

1. 模块化设计

每个功能模块独立组织,包含:

  • routes.rs - 路由定义
  • repository.rs - 数据访问
  • mod.rs - 模块导出

2. 类型安全

  • 后端: Rust 强类型系统,编译时类型检查
  • 前端: TypeScript 完整类型定义,无 any 类型

3. 错误处理

  • 后端: Result 类型 + 自定义 AppError
  • 前端: React Query 错误边界 + Toast 通知

4. 异步优先

  • 后端: Tokio 异步运行时
  • 前端: React Query 异步数据获取

5. 实时通信

  • Server-Sent Events (SSE) 用于分析状态实时更新
  • WebSocket 预留用于未来扩展

核心模块

模块职责技术要点
auth用户认证授权JWT Token、GitHub OAuth、Argon2 密码哈希
projects项目管理CRUD 操作、Slug 唯一性
repositories仓库管理GitHub 仓库导入、设置管理
analysis分析引擎任务调度、Agent 执行、结果收集
integrations第三方集成GitHub App、API 同步
sse实时通信事件流、连接管理
webhooksWebhook 处理GitHub 事件接收、签名验证

数据流

典型请求流程

1. 用户操作

2. 前端发起 API 请求 (Axios)

3. 后端路由匹配

4. 认证中间件验证 Token

5. Handler 处理请求

6. Repository 访问数据库

7. 返回 JSON 响应

8. React Query 缓存更新

9. UI 自动重新渲染

实时更新流程

1. 分析任务创建

2. Agent 开始执行

3. SSE 连接建立

4. 状态变更事件推送

5. 前端接收事件

6. React Query 失效缓存

7. 自动重新获取数据

8. UI 实时更新

安全设计

认证安全

  • JWT Token 有效期 24 小时
  • Argon2id 密码哈希
  • GitHub OAuth 2.0

API 安全

  • CORS 严格配置
  • Bearer Token 认证
  • 请求频率限制(计划中)

数据安全

  • 密码重置 Token 10 分钟有效期
  • OAuth State 防 CSRF
  • 用户数据隔离

性能优化

后端优化

  • 数据库连接池 (SQLx)
  • 索引优化
  • 异步 I/O

前端优化

  • React Query 缓存策略
  • 代码分割 (Next.js)
  • 图片优化 (next/image)

可扩展性

水平扩展

  • 无状态 API 设计
  • 数据库读写分离(计划中)
  • 负载均衡支持

垂直扩展

  • Agent 多线程执行
  • 数据库分区(TimescaleDB)

监控与日志

日志系统

  • tracing 结构化日志
  • 不同级别日志输出
  • 错误追踪

监控指标

  • HTTP 请求统计
  • 数据库查询性能
  • Agent 执行时间

下一步阅读

Released under the MIT License.