Skip to content

系统架构

总体架构

text
                    GitHub
       ┌──────────────┴──────────────┐
       │                             │
 GitHub App Webhook             GitHub REST API
 自有仓库实时事件          对账 / 外部仓扩展
       │                             ▲
       ▼                             │
┌────────────────────────────────────────────────────┐
│              HTTPS 反向代理                         │
└──────────────────────┬─────────────────────────────┘

┌────────────────────────────────────────────────────┐
│                RepoSentinel                         │
│ Webhook Receiver → Event Inbox → Normalizer        │
│ Event Store → Rule Engine                          │
│ Notification Outbox → Telegram / HTTP Webhook      │
│ REST API + 嵌入式 React 管理后台                    │
└──────────────────────┬─────────────────────────────┘

              SQLite 或 PostgreSQL

单进程模块化单体:HTTP Server、后台规范化、Notification Worker、Session 清理等。异步通知持久化在数据库中,进程重启可恢复投递。

运行时结构

text
CLI (serve | version | config validate | admin reset-password)


   bootstrap / config / cryptox keyring


   store (Ent + Atlas 迁移)


   httpapi (chi)
        ├── /health/live|ready
        ├── /webhooks/github
        ├── /api/v1/setup|auth|...
        ├── /api/v1/dashboard|repositories|events|...
        └── SPA (嵌入 dist 或 fallback)


   notify worker (Outbox 投递)

后端包边界

职责
cmd/reposentinel入口
internal/cli命令分派
internal/config加载与校验
internal/cryptox主密钥与信封加密
internal/store打开库、迁移、领域持久化
internal/auth密码、Session、CSRF、登录限流
internal/githubxWebhook 验签等
internal/normalizerWebhook 规范化、指纹、乱序保护
internal/rules实时通知规则
internal/notifyOutbox 投递 Worker
internal/httpapi路由、中间件、JSON 错误、SPA
internal/app装配与生命周期
internal/buildinfoldflags 版本元数据
webReact 前端与 embed

核心数据

  • 管理员与 Session、审计、系统设置
  • GitHub Installation、Repository(含同步/基线状态)
  • Webhook Delivery、WorkItem、WorkflowRun、SecurityAlert、Event
  • NotificationChannel、NotificationOutbox、SyncCursor

前端结构

  • 认证:login / setup
  • 壳层:侧栏、健康胶囊、主题
  • 仪表盘:KPI、仓库与基线、事件、投递
  • 通知:渠道配置
  • UI 令牌:web/src/styles/tokens.css

视觉与文案

产品视觉与文案原则见仓库根目录 .impeccable.md(若存在)。

基于 VitePress 构建 · 默认 SQLite,可选 PostgreSQL