gitdataai/docs/ARCHITECTURE-LAYERS.md
2026-04-14 19:02:01 +08:00

88 KiB
Raw Blame History

Code 项目架构分层图

一个现代化的代码协作与团队沟通平台

技术栈Rust (后端) + TypeScript/React (前端) + Kubernetes (部署)


系统全景架构

┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                           用 户 层                                                   │
│                                                                                                     │
│         ┌──────────────────┐              ┌──────────────────┐              ┌──────────────────┐    │
│         │   Web 浏览器      │              │   Git 客户端      │              │   外部 CI/CD      │    │
│         │  (React SPA)     │              │ (git/SSH)        │              │ (GitHub/GitLab)  │    │
│         └────────┬─────────┘              └────────┬─────────┘              └────────┬─────────┘    │
└──────────────────┼────────────────────────────────┼────────────────────────────────┼────────────────┘
                   │                                │                                │
                   │ HTTP/WS                        │ Git Protocol                   │ Webhook
                   │                                │                                │
┌──────────────────▼────────────────────────────────▼────────────────────────────────▼────────────────┐
│                                       接入层 (Ingress/LB)                                            │
│                                                                                                     │
│         ┌──────────────────────────────────────────────────────────────────────────────────┐        │
│         │                    Load Balancer / K8s Ingress (:80/:443)                        │        │
│         └──────────────────────┬──────────────────────┬──────────────────────┬─────────────┘        │
└────────────────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┘
                                 │                      │                      │
                                 │ REST API             │ Git Ops              │ Webhook
                                 │                      │                      │
┌────────────────────────────────▼──────────────────────▼──────────────────────▼──────────────────────┐
│                                       应 用 服 务 层  (apps/)                                        │
│                                                                                                     │
│   ┌────────────────────┐  ┌────────────────────┐  ┌────────────────────┐  ┌────────────────────┐  │
│   │   apps/app          │  │  apps/gitserver     │  │  apps/git-hook     │  │  apps/email        │  │
│   │   主 Web API 服务   │  │  Git HTTP/SSH 服务  │  │  Git Hook 处理器   │  │  邮件发送 Worker   │  │
│   │   :8080             │  │  :8021/:2222        │  │  Worker            │  │  Worker            │  │
│   │  HTTP + WebSocket   │  │  HTTP + SSH         │  │  异步任务          │  │  队列消费          │  │
│   │  多实例部署         │  │  单实例             │  │  单实例            │  │  单实例            │  │
│   └─────────┬──────────┘  └─────────┬──────────┘  └─────────┬──────────┘  └─────────┬──────────┘  │
└─────────────┼───────────────────────┼───────────────────────┼───────────────────────┼───────────────┘
              │                       │                       │                       │
              │                       │                       │                       │
┌─────────────▼───────────────────────▼───────────────────────▼───────────────────────▼───────────────┐
│                                    应 用 编 排 层  (apps/operator)                                   │
│                                                                                                     │
│   ┌───────────────────────────────────────────────────────────────────────────────────────┐        │
│   │                        apps/operator (Kubernetes Operator)                            │        │
│   │                                                                                       │        │
│   │   ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐              │        │
│   │   │ App CRD  │  │GitSrv CRD│  │Email CRD │  │Hook CRD  │  │Mig  CRD  │              │        │
│   │   └────┬─────┘  └────┬─────┘  └────┬─────┘  └────┬─────┘  └────┬─────┘              │        │
│   │        │             │             │             │             │                       │        │
│   │        ▼             ▼             ▼             ▼             ▼                       │        │
│   │   ┌──────────────────────────────────────────────────────────────────────────┐       │        │
│   │   │              K8s 资源 (Deployments, Services, PVCs, Jobs)                │       │        │
│   │   └──────────────────────────────────────────────────────────────────────────┘       │        │
│   └───────────────────────────────────────────────────────────────────────────────────────┘        │
└────────────────────────────────────────────────────────────────────────────────────────────────────┘
              │                       │                       │                       │
              │                       │                       │                       │
┌─────────────▼───────────────────────▼───────────────────────▼───────────────────────▼───────────────┐
│                                        业 务 逻 辑 层  (libs/service)                                 │
│                                                                                                     │
│   ┌─────────────────────────────────────────────────────────────────────────────────────────┐      │
│   │                          AppService { 全局服务聚合 }                                     │      │
│   │                                                                                         │      │
│   │   ┌─────────┐ ┌────────┐ ┌─────┐ ┌──────────┐ ┌───────────┐ ┌────────┐ ┌───────────┐  │      │
│   │   │ agent/  │ │ auth/  │ │git/ │ │ issue/   │ │ project/  │ │ user/  │ │ pull_req/ │  │      │
│   │   │ (8文件) │ │ (10)   │ │(16) │ │  (8)     │ │  (20)     │ │ (12)   │ │   (5)     │  │      │
│   │   │ AI模型  │ │ 认证   │ │Git  │ │ Issue    │ │ 项目管理  │ │ 用户   │ │ PR审查    │  │      │
│   │   │ 管理    │ │ 会话   │ │操作  │ │ 追踪     │ │ 权限控制  │ │ 偏好   │ │ 合并      │  │      │
│   │   └─────────┘ └────────┘ └─────┘ └──────────┘ └───────────┘ └────────┘ └───────────┘  │      │
│   │                                                                                         │      │
│   │   + utils/(project,repo,user)  + ws_token  + error  + Pager                            │      │
│   └──────────────────────────────────────┬──────────────────────────────────────────────────┘      │
└──────────────────────────────────────────┼──────────────────────────────────────────────────────────┘
                                           │
                    ┌──────────────────────┼──────────────────────┐
                    │                      │                      │
┌───────────────────▼──────────┐ ┌────────▼─────────────┐ ┌──────▼────────────────────────────┐
│      HTTP 路由层 (libs/api)  │ │  WebSocket 层        │ │     后台 Worker 层                │
│      100 个路由文件          │ │  (libs/room)         │ │                                   │
│                              │ │                      │ │  libs/queue:                      │
│  /api/auth/*      (9端点)    │ │  /ws                 │ │    MessageProducer                │
│  /api/git/*       (100+端点) │ │  /ws/rooms/{id}      │ │    RedisPubSub                    │
│  /api/projects/*  (50+端点)  │ │  /ws/projects/{id}   │ │    room_worker_task               │
│  /api/issue/*     (30+端点)  │ │                      │ │    start_email_worker             │
│  /api/room/*      (40+端点)  │ │  实时消息广播         │ │                                   │
│  /api/pull_request/* (20端点)│ │  多实例同步           │ │  libs/git/hook:                   │
│  /api/agent/*     (15端点)   │ │  AI 流式输出         │ │    GitServiceHooks                │
│  /api/user/*      (20端点)   │ │                      │ │    GitHookPool                    │
│  /api/openapi/*   (文档)     │ │                      │ │                                   │
└───────────┬────────────────┘ └──────────┬───────────┘ └─────────────┬───────────────────────┘
            │                             │                           │
            └─────────────────────────────┼───────────────────────────┘
                                          │
┌─────────────────────────────────────────▼────────────────────────────────────────────────────────┐
│                                    基 础 设 施 层  (Infrastructure Libs)                          │
│                                                                                                  │
│  ┌───────────────────┐  ┌───────────────────┐  ┌───────────────────┐  ┌───────────────────┐     │
│  │  libs/models      │  │  libs/db          │  │  libs/config      │  │  libs/session     │     │
│  │  92 个实体文件     │  │  数据库连接池      │  │  全局配置管理      │  │  会话管理中间件    │     │
│  │  Sea-ORM 实体定义  │  │  缓存抽象          │  │  .env 加载        │  │  Redis Store      │     │
│  │  类型别名         │  │  重试机制          │  │  12 子模块        │  │  JWT + Cookie     │     │
│  └─────────┬─────────┘  └─────────┬─────────┘  └─────────┬─────────┘  └─────────┬─────────┘     │
│            │                      │                      │                      │                │
│  ┌─────────▼─────────┐  ┌────────▼─────────┐  ┌─────────▼─────────┐  ┌─────────▼─────────┐     │
│  │  libs/git         │  │  libs/agent      │  │  libs/email      │  │  libs/avatar      │     │
│  │  19 子模块        │  │  6 子模块        │  │  SMTP 邮件发送    │  │  图片处理         │     │
│  │  libgit2 封装     │  │  OpenAI 集成     │  │  lettre 客户端    │  │  image crate      │     │
│  │  HTTP + SSH 协议  │  │  Qdrant 向量库   │  │  模板引擎         │  │  缩放/裁剪        │     │
│  └─────────┬─────────┘  └─────────┬─────────┘  └─────────┬─────────┘  └─────────┬─────────┘     │
│            │                      │                      │                      │                │
│  ┌─────────▼─────────┐  ┌────────▼─────────┐  ┌─────────▼───────────────────────▼─────────┐     │
│  │  libs/queue       │  │  libs/room       │  │           libs/migrate                    │     │
│  │  消息队列          │  │  实时聊天室       │  │           82+ 数据库迁移脚本               │     │
│  │  Redis Streams    │  │  19 子模块        │  │           sea-orm-migration               │     │
│  │  Pub/Sub          │  │  WebSocket 管理   │  │           up/down/fresh/refresh/reset     │     │
│  └─────────┬─────────┘  └─────────┬─────────┘  └─────────────────────────────────────────┘     │
│            │                      │                                                              │
│  ┌─────────▼─────────┐  ┌────────▼─────────┐                                                    │
│  │  libs/webhook     │  │  libs/rpc        │  libs/transport                                    │
│  │  (占位)           │  │  (占位)          │  (占位)                                            │
│  └───────────────────┘  └─────────────────┘                                                    │
└────────────────────────────────────────────────────────────────────────────────────────────────┘
              │                      │
              │                      │
┌─────────────▼──────────────────────▼────────────────────────────────────────────────────────────┐
│                                        存 储 层                                                  │
│                                                                                                  │
│   ┌──────────────────┐    ┌──────────────────┐    ┌──────────────────┐    ┌──────────────────┐  │
│   │   PostgreSQL     │    │   Redis          │    │   Qdrant         │    │   文件系统        │  │
│   │   :5432          │    │   :6379          │    │   :6333          │    │                   │  │
│   │                  │    │                  │    │                  │    │  /data/avatars    │  │
│   │  • 用户数据      │    │  • 会话存储      │    │  • 向量嵌入      │    │  /data/repos      │  │
│   │  • 项目/仓库     │    │  • 缓存数据      │    │  • AI 索引       │    │  • 头像图片       │  │
│   │  • Issue/PR     │    │  • Pub/Sub       │    │  • 相似度检索    │    │  • Git 仓库       │  │
│   │  • Room 消息     │    │  • Stream 队列   │    │                  │    │  • 上传文件       │  │
│   │  • 评论/标签     │    │  • Hook 队列     │    │                  │    │                   │  │
│   └──────────────────┘    └──────────────────┘    └──────────────────┘    └──────────────────┘  │
└────────────────────────────────────────────────────────────────────────────────────────────────┘
              │
              │ 外部 API
              │
┌─────────────▼────────────────────────────────────────────────────────────────────────────────────┐
│                                      外 部 服 务                                                 │
│                                                                                                  │
│   ┌──────────────────┐    ┌──────────────────┐    ┌──────────────────┐                           │
│   │   SMTP 服务器     │    │   OpenAI API     │    │   Embedding API  │                           │
│   │   :587           │    │   HTTPS          │    │   HTTPS          │                           │
│   │                  │    │                  │    │                  │                           │
│   │  • 邮件发送      │    │  • 聊天补全      │    │  • 文本向量化    │                           │
│   │  • 通知邮件      │    │  • AI 助手       │    │  • 相似度计算    │                           │
│   └──────────────────┘    └──────────────────┘    └──────────────────┘                           │
└────────────────────────────────────────────────────────────────────────────────────────────────┘

前端架构分层

┌────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                    前 端 应 用 层  (src/)                                        │
│                                                                                                  │
│  ┌──────────────────────────────────────────────────────────────────────────────────────────┐  │
│  │                              Vite + React + TypeScript                                    │  │
│  │                                                                                          │  │
│  │   src/main.tsx ──▶ App.tsx ──▶ BrowserRouter ──▶ Routes                                   │  │
│  │                                                                                          │  │
│  │   ┌───────────────────────┐    ┌───────────────────────┐    ┌───────────────────────┐   │  │
│  │   │   页面层 (app/)       │    │   组件层 (components/) │    │   状态管理层           │   │  │
│  │   │   59 页面组件         │    │   108 UI 组件         │    │                        │   │  │
│  │   │                       │    │                       │    │   TanStack Query       │   │  │
│  │   │  auth/       (4)      │    │  ui/          (66)    │    │   (服务端状态)         │   │  │
│  │   │  init/       (2)      │    │  room/        (20)    │    │                        │   │  │
│  │   │  user/       (1)      │    │  repository/   (8)    │    │   React Context        │   │  │
│  │   │  project/    (22)     │    │  project/      (4)    │    │   (全局状态)           │   │  │
│  │   │  repository/ (12)     │    │  auth/         (2)    │    │                        │   │  │
│  │   │  settings/   (8)      │    │  layout/       (2)    │    │   Local State          │   │  │
│  │   │                       │    │                       │    │   (组件状态)           │   │  │
│  │   └───────────┬───────────┘    └───────────┬───────────┘    └───────────┬────────────┘   │  │
│  │               │                            │                            │                │  │
│  │               └────────────────────────────┼────────────────────────────┘                │  │
│  │                                            │                                             │  │
│  │   ┌────────────────────────────────────────┼────────────────────────────────────────┐   │  │
│  │   │                                    API 客户端层                                   │   │  │
│  │   │                                                                                  │   │  │
│  │   │   src/client/ ──▶ openapi-ts 自动生成 (从 openapi.json)                           │   │  │
│  │   │   400+ API 函数 + 完整 TypeScript 类型                                           │   │  │
│  │   │   Axios HTTP 客户端                                                              │   │  │
│  │   └──────────────────────────────────────────────────────────────────────────────────┘   │  │
│  │                                                                                          │  │
│  │   ┌──────────────────────────────────────────────────────────────────────────────────┐   │  │
│  │   │                              工具层                                               │   │  │
│  │   │                                                                                  │   │  │
│  │   │   src/hooks/    ──▶ 自定义 React Hooks                                          │   │  │
│  │   │   src/lib/      ──▶ 工具函数 (api-error, rsa, date 等)                            │   │  │
│  │   │   src/contexts/ ──▶ React Context (User, Theme 等)                                │   │  │
│  │   │   src/assets/   ──▶ 静态资源 (图片、图标)                                          │   │  │
│  │   └──────────────────────────────────────────────────────────────────────────────────┘   │  │
│  └──────────────────────────────────────────────────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────────────────────────────────────────────────┘

前端路由结构

/                                    首页/仪表板
│
├── /auth/                           认证路由
│   ├── /login                       登录页
│   ├── /register                    注册页
│   ├── /password/reset              密码重置
│   └── /verify-email                邮箱验证
│
├── /init/                           初始化路由
│   ├── /project                     初始化项目
│   └── /repository                  初始化仓库
│
├── /user/:user                      用户资料页
│
├── /settings/                       个人设置
│   ├── /profile                     个人资料
│   ├── /account                     账户设置
│   ├── /security                    安全设置
│   ├── /tokens                      访问令牌
│   ├── /ssh-keys                    SSH 密钥
│   ├── /preferences                 偏好设置
│   └── /activity                    活动日志
│
├── /project/:project_name/          项目路由
│   ├── /                            项目概览
│   ├── /activity                    项目活动
│   ├── /repositories                仓库列表
│   ├── /issues                      Issue 列表
│   │   ├── /new                     新建 Issue
│   │   └── /:issueNumber            Issue 详情
│   ├── /boards                      看板列表
│   │   └── /:boardId                看板详情
│   ├── /members                     成员管理
│   ├── /room                        聊天室列表
│   │   └── /:roomId                 聊天室
│   ├── /articles                    文章
│   ├── /resources                   资源
│   └── /settings/                   项目设置
│       ├── /general                 通用设置
│       ├── /labels                  标签管理
│       ├── /billing                 账单
│       ├── /members                 成员管理
│       ├── /oauth                   OAuth 配置
│       └── /webhook                 Webhook 管理
│
├── /repository/:namespace/:repoName/  仓库路由
│   ├── /                            仓库概览
│   ├── /branches                    分支管理
│   ├── /commits                     提交历史
│   │   └── /:oid                    提交详情
│   ├── /contributors                贡献者
│   ├── /files                       文件浏览
│   ├── /tags                        标签
│   ├── /pull-requests               PR 列表
│   │   ├── /new                     新建 PR
│   │   └── /:prNumber               PR 详情
│   └── /settings                    仓库设置
│
├── /search                          全局搜索
└── /notifications                   通知中心

后端服务依赖关系

┌──────────────────────────────────────────────────────────────────────────────────────┐
│                              apps/ 应用依赖关系                                       │
│                                                                                      │
│   apps/app ────────────────┐                                                         │
│   apps/email ──────────────┤                                                         │
│   apps/git-hook ───────────┤──▶ libs/config       (全局配置)                         │
│   apps/gitserver ──────────┤──▶ libs/db           (数据库连接池 + 缓存)               │
│   apps/migrate ────────────┤──▶ libs/session       (会话管理)                         │
│   apps/operator ───────────┘──▶ libs/migrate       (数据库迁移)                       │
│                                   ├──▶ libs/service    (业务逻辑层)                     │
│                                   │      │                                           │
│                                   │      ├──▶ libs/api         (HTTP 路由)            │
│                                   │      │                                           │
│                                   │      ├──▶ libs/agent       (AI 服务)              │
│                                   │      ├──▶ libs/avatar      (头像处理)             │
│                                   │      ├──▶ libs/email       (邮件发送)             │
│                                   │      ├──▶ libs/room        (聊天室)               │
│                                   │      │       │                                   │
│                                   │      │       └──▶ libs/queue  (消息队列)          │
│                                   │      │                                           │
│                                   │      └──▶ libs/git         (Git 操作)             │
│                                   │              │                                   │
│                                   │              ├──▶ git2 (libgit2 绑定)             │
│                                   │              ├──▶ git2-hooks (Git 钩子)           │
│                                   │              └──▶ russh (SSH 协议)                │
│                                   │                                                  │
│                                   └──▶ libs/models  (数据模型 - 所有层共享)            │
│                                          │                                           │
│                                          ├──▶ users/      (12 实体)                   │
│                                          ├──▶ projects/   (19 实体)                   │
│                                          ├──▶ repos/      (16 实体)                   │
│                                          ├──▶ issues/     (10 实体)                   │
│                                          ├──▶ pull_request/ (5 实体)                  │
│                                          ├──▶ rooms/      (11 实体)                   │
│                                          ├──▶ agents/     (6 实体)                    │
│                                          ├──▶ ai/         (3 实体)                    │
│                                          └──▶ system/     (3 实体)                    │
└──────────────────────────────────────────────────────────────────────────────────────┘

libs/models 实体分组

┌─────────────────────────────────────────────────────────────────────────┐
│                         libs/models 实体分组 (92 个)                     │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  Users (12 实体)                                                        │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │  user                  用户基本信息                              │   │
│  │  user_2fa              双因素认证                               │   │
│  │  user_activity_log     用户活动日志                             │   │
│  │  user_email            用户邮箱                                 │   │
│  │  user_email_change     邮箱变更历史                             │   │
│  │  user_notification     用户通知                                 │   │
│  │  user_password         用户密码                                 │   │
│  │  user_password_reset   密码重置令牌                             │   │
│  │  user_preferences      用户偏好设置                             │   │
│  │  user_relation         用户关系                                 │   │
│  │  user_ssh_key          SSH 密钥                                 │   │
│  │  user_token            访问令牌                                 │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  Projects (19 实体)                                                     │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │  project                 项目基本信息                            │   │
│  │  project_access_log      访问日志                                 │   │
│  │  project_activity        活动记录                                 │   │
│  │  project_audit_log       审计日志                                 │   │
│  │  project_billing         账单信息                                 │   │
│  │  project_billing_history 账单历史                                 │   │
│  │  project_board           看板                                     │   │
│  │  project_board_card      看板卡片                                 │   │
│  │  project_board_column    看板列                                   │   │
│  │  project_follow          项目关注                                 │   │
│  │  project_history_name    历史名称                                 │   │
│  │  project_label           项目标签                                 │   │
│  │  project_like            项目点赞                                 │   │
│  │  project_member_         成员邀请                                 │   │
│  │    invitations                                                    │   │
│  │  project_member_join_    加入问答                                 │   │
│  │    answers                                                        │   │
│  │  project_member_join_    加入请求                                 │   │
│  │    request                                                        │   │
│  │  project_member_join_    加入设置                                 │   │
│  │    settings                                                       │   │
│  │  project_members         项目成员                                 │   │
│  │  project_watch           项目观看                                 │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  Repos (16 实体)                                                        │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │  repo                    仓库基本信息                            │   │
│  │  repo_branch             分支信息                                 │   │
│  │  repo_branch_protect     分支保护                                 │   │
│  │  repo_collaborator       协作者                                   │   │
│  │  repo_commit             提交记录                                 │   │
│  │  repo_fork               仓库 Fork                               │   │
│  │  repo_history_name       历史名称                                 │   │
│  │  repo_hook               Git 钩子                                │   │
│  │  repo_lfs_lock           LFS 锁定                                │   │
│  │  repo_lfs_object         LFS 对象                                 │   │
│  │  repo_lock               仓库锁定                                 │   │
│  │  repo_star               仓库星标                                 │   │
│  │  repo_tag                仓库标签                                 │   │
│  │  repo_upstream           上游仓库                                 │   │
│  │  repo_watch              仓库观看                                 │   │
│  │  repo_webhook            仓库 Webhook                             │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  Issues (10 实体)                                                       │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │  issue                   Issue 基本信息                          │   │
│  │  issue_assignee          Issue 负责人                             │   │
│  │  issue_comment           Issue 评论                               │   │
│  │  issue_comment_reaction  评论表情                                 │   │
│  │  issue_label             Issue 标签                               │   │
│  │  issue_pull_request      Issue 关联 PR                            │   │
│  │  issue_reaction          Issue 表情                               │   │
│  │  issue_repo              Issue 仓库                               │   │
│  │  issue_subscriber        Issue 订阅者                             │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  Pull Requests (5 实体)                                                 │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │  pull_request            PR 基本信息                             │   │
│  │  pull_request_commit     PR 提交记录                              │   │
│  │  pull_request_review     PR 审查                                  │   │
│  │  pull_request_review_    PR 审查评论                              │   │
│  │    comment                                                        │   │
│  │  pull_request_review_    PR 审查请求                              │   │
│  │    request                                                        │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  Rooms (11 实体)                                                        │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │  room                    聊天室基本信息                          │   │
│  │  room_ai                 聊天室 AI 配置                           │   │
│  │  room_category           聊天室分类                               │   │
│  │  room_member             聊天室成员                               │   │
│  │  room_message            聊天消息                                 │   │
│  │  room_message_edit_      消息编辑历史                             │   │
│  │    history                                                        │   │
│  │  room_message_reaction   消息表情                                 │   │
│  │  room_notifications      聊天室通知                               │   │
│  │  room_pin                聊天室置顶                               │   │
│  │  room_thread             聊天室 Thread                            │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  Agents (6 实体)                                                        │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │  model                   AI 模型                                  │   │
│  │  model_capability        模型能力                                 │   │
│  │  model_parameter_profile  模型参数配置                             │   │
│  │  model_pricing           模型定价                                 │   │
│  │  model_provider          模型提供商                               │   │
│  │  model_version           模型版本                                 │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  AI (3 实体)                                                            │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │  ai_session              AI 会话                                  │   │
│  │  ai_tool_auth            AI 工具认证                              │   │
│  │  ai_tool_call            AI 工具调用                              │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  System (3 实体)                                                        │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │  label                   系统标签                                 │   │
│  │  notify                  系统通知                                 │   │
│  └─────────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────────────┘

libs/service 业务模块

┌─────────────────────────────────────────────────────────────────────────┐
│                     libs/service 业务模块 (93 个文件)                     │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  agent/         AI 模型管理 (8 文件)                                     │
│  ├── code_review        AI 代码审查                                     │
│  ├── model              AI 模型管理                                     │
│  ├── model_capability   模型能力管理                                    │
│  ├── model_parameter_   模型参数配置                                    │
│  │    profile                                                      │
│  ├── model_pricing      模型定价管理                                    │
│  ├── model_version      模型版本管理                                    │
│  ├── pr_summary         PR 摘要生成                                     │
│  └── provider           模型提供商管理                                  │
│                                                                         │
│  auth/            认证管理 (10 文件)                                     │
│  ├── captcha          验证码管理                                        │
│  ├── email            邮箱认证                                          │
│  ├── login            登录逻辑                                          │
│  ├── logout           登出逻辑                                          │
│  ├── me               当前用户信息                                      │
│  ├── password         密码管理                                          │
│  ├── register         注册逻辑                                          │
│  ├── rsa              RSA 加密                                          │
│  └── totp             TOTP 双因素认证                                   │
│                                                                         │
│  git/             Git 操作 (16 文件)                                     │
│  ├── archive          仓库归档                                          │
│  ├── blocking         阻塞操作                                          │
│  ├── blame            Git Blame                                         │
│  ├── blob             Blob 操作                                         │
│  ├── branch           分支操作                                          │
│  ├── branch_          分支保护                                         │
│  │    protection                                                    │
│  ├── commit           提交操作                                          │
│  ├── contributors     贡献者统计                                        │
│  ├── diff             Diff 操作                                         │
│  ├── init             仓库初始化                                        │
│  ├── refs             引用操作                                          │
│  ├── repo             仓库操作                                          │
│  ├── star             星标操作                                          │
│  ├── tag              标签操作                                          │
│  ├── tree             树操作                                            │
│  └── watch            观看操作                                          │
│                                                                         │
│  issue/           Issue 管理 (8 文件)                                    │
│  ├── assignee         负责人管理                                        │
│  ├── comment          评论管理                                          │
│  ├── issue            Issue CRUD                                        │
│  ├── label            标签管理                                          │
│  ├── pull_request     Issue 关联 PR                                     │
│  ├── reaction         表情回应                                          │
│  ├── repo             仓库 Issue                                        │
│  └── subscriber       订阅者管理                                        │
│                                                                         │
│  project/         项目管理 (20 文件)                                     │
│  ├── activity         项目活动                                          │
│  ├── audit            审计日志                                          │
│  ├── avatar           项目头像                                          │
│  ├── billing          账单管理                                          │
│  ├── board            看板管理                                          │
│  ├── can_use          权限检查                                          │
│  ├── info             项目信息                                          │
│  ├── init             项目初始化                                        │
│  ├── invitation       邀请管理                                          │
│  ├── join_answers     加入问答                                          │
│  ├── join_request     加入请求                                          │
│  ├── join_settings    加入设置                                          │
│  ├── labels           标签管理                                          │
│  ├── like             点赞管理                                          │
│  ├── members          成员管理                                          │
│  ├── repo             仓库管理                                          │
│  ├── repo_            仓库权限                                         │
│  │    permission                                                    │
│  ├── settings         项目设置                                          │
│  ├── standard         项目标准                                          │
│  ├── transfer_repo    仓库转移                                          │
│  └── watch            观看管理                                          │
│                                                                         │
│  pull_request/    PR 管理 (5 文件)                                       │
│  ├── merge            PR 合并                                           │
│  ├── pull_request     PR CRUD                                           │
│  ├── review           PR 审查                                           │
│  ├── review_comment   审查评论                                          │
│  └── review_request   审查请求                                          │
│                                                                         │
│  user/            用户管理 (12 文件)                                     │
│  ├── access_key       访问密钥                                          │
│  ├── avatar           用户头像                                          │
│  ├── chpc             用户 CHPC                                         │
│  ├── notification     通知管理                                          │
│  ├── notify           通知发送                                          │
│  ├── preferences      偏好设置                                          │
│  ├── profile          用户资料                                          │
│  ├── projects         用户项目                                          │
│  ├── repository       用户仓库                                          │
│  ├── ssh_key          SSH 密钥                                          │
│  ├── subscribe        订阅管理                                          │
│  └── user_info        用户信息                                          │
│                                                                         │
│  utils/           工具函数 (3 文件)                                      │
│  ├── project          项目工具                                          │
│  ├── repo             仓库工具                                          │
│  └── user             用户工具                                          │
│                                                                         │
│  ws_token         WebSocket Token 服务                                  │
│  error            服务层错误                                            │
│  Pager            分页结构体                                            │
└─────────────────────────────────────────────────────────────────────────┘

libs/api 路由模块

┌─────────────────────────────────────────────────────────────────────────┐
│                       libs/api 路由模块 (100 个文件)                      │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  auth/            认证路由 (9 文件)                                      │
│  ├── captcha        验证码接口                                          │
│  ├── email          邮箱认证接口                                        │
│  ├── login          登录接口                                            │
│  ├── logout         登出接口                                            │
│  ├── me             当前用户接口                                        │
│  ├── password       密码接口                                            │
│  ├── register       注册接口                                            │
│  ├── totp           TOTP 接口                                           │
│  └── ws_token       WebSocket Token 接口                                │
│                                                                         │
│  git/             Git 路由 (18 文件)                                     │
│  ├── archive        归档接口                                            │
│  ├── blame          Blame 接口                                          │
│  ├── blob           Blob 接口                                           │
│  ├── branch         分支接口                                            │
│  ├── branch_        分支保护接口                                        │
│  │    protection                                                    │
│  ├── commit         提交接口                                            │
│  ├── contributors   贡献者接口                                          │
│  ├── diff           Diff 接口                                           │
│  ├── init           初始化接口                                          │
│  ├── refs           引用接口                                            │
│  ├── repo           仓库接口                                            │
│  ├── star           星标接口                                            │
│  ├── tag            标签接口                                            │
│  ├── tree           树接口                                              │
│  └── watch          观看接口                                            │
│                                                                         │
│  project/         项目路由 (17 文件)                                     │
│  ├── activity       活动接口                                            │
│  ├── audit          审计接口                                            │
│  ├── billing        账单接口                                            │
│  ├── board          看板接口                                            │
│  ├── info           信息接口                                            │
│  ├── init           初始化接口                                          │
│  ├── invitation     邀请接口                                            │
│  ├── join_answers   加入问答接口                                        │
│  ├── join_request   加入请求接口                                        │
│  ├── join_settings  加入设置接口                                        │
│  ├── labels         标签接口                                            │
│  ├── like           点赞接口                                            │
│  ├── members        成员接口                                            │
│  ├── repo           仓库接口                                            │
│  ├── settings       设置接口                                            │
│  ├── transfer_repo  仓库转移接口                                        │
│  └── watch          观看接口                                            │
│                                                                         │
│  issue/           Issue 路由 (10 文件)                                   │
│  ├── assignee       负责人接口                                          │
│  ├── comment        评论接口                                            │
│  ├── comment_       评论表情接口                                        │
│  │    reaction                                                      │
│  ├── issue_label    Issue 标签接口                                      │
│  ├── label          标签接口                                            │
│  ├── pull_request   Issue 关联 PR 接口                                  │
│  ├── reaction       表情接口                                            │
│  ├── repo           仓库 Issue 接口                                     │
│  └── subscriber     订阅者接口                                          │
│                                                                         │
│  room/            聊天室路由 (14 文件)                                   │
│  ├── ai             AI 接口                                             │
│  ├── category       分类接口                                            │
│  ├── draft_and_     草稿和历史接口                                      │
│  │    history                                                       │
│  ├── member         成员接口                                            │
│  ├── message        消息接口                                            │
│  ├── notification   通知接口                                            │
│  ├── pin            置顶接口                                            │
│  ├── reaction       表情接口                                            │
│  ├── room           聊天室接口                                          │
│  ├── thread         Thread 接口                                         │
│  ├── ws             WebSocket 接口                                      │
│  ├── ws_handler     WebSocket 处理器                                    │
│  ├── ws_types       WebSocket 类型                                      │
│  └── ws_universal   通用 WebSocket 接口                                 │
│                                                                         │
│  pull_request/    PR 路由 (5 文件)                                       │
│  ├── merge          合并接口                                            │
│  ├── pull_request   PR CRUD 接口                                        │
│  ├── review         审查接口                                            │
│  ├── review_comment 审查评论接口                                        │
│  └── review_request 审查请求接口                                        │
│                                                                         │
│  agent/           AI Agent 路由 (8 文件)                                 │
│  ├── code_review    代码审查接口                                        │
│  ├── model          模型接口                                            │
│  ├── model_         模型能力接口                                        │
│  │    capability                                                    │
│  ├── model_         模型参数配置接口                                    │
│  │    parameter_profile                                             │
│  ├── model_pricing  模型定价接口                                        │
│  ├── model_version  模型版本接口                                        │
│  ├── pr_summary     PR 摘要接口                                         │
│  └── provider       模型提供商接口                                      │
│                                                                         │
│  user/            用户路由 (10 文件)                                     │
│  ├── access_key     访问密钥接口                                        │
│  ├── chpc           CHPC 接口                                           │
│  ├── notification   通知接口                                            │
│  ├── preferences    偏好接口                                            │
│  ├── profile        资料接口                                            │
│  ├── projects       项目接口                                            │
│  ├── repository     仓库接口                                            │
│  ├── ssh_key        SSH 密钥接口                                        │
│  ├── subscribe      订阅接口                                            │
│  └── user_info      用户信息接口                                        │
│                                                                         │
│  openapi/         OpenAPI 文档生成                                       │
│  route/           路由聚合                                               │
│  error/           API 错误处理                                           │
└─────────────────────────────────────────────────────────────────────────┘

服务间通信机制

┌────────────────────────────────────────────────────────────────────────────────────────────┐
│                                  服务间通信机制                                             │
│                                                                                            │
│  ┌──────────────────────────────────────────────────────────────────────────────────┐     │
│  │  Redis (核心通信总线)                                                             │     │
│  │                                                                                  │     │
│  │  Redis Streams ──▶ 异步消息队列                                                   │     │
│  │  ├── room:stream:{room_id}   房间消息持久化                                       │     │
│  │  └── email:stream            邮件发送队列                                         │     │
│  │                                                                                  │     │
│  │  Redis Pub/Sub ──▶ 实时事件广播                                                   │     │
│  │  ├── room:pub:{room_id}      房间级广播                                           │     │
│  │  └── project:pub:{proj_id}   项目级广播                                           │     │
│  │                                                                                  │     │
│  │  Redis Lists ──▶ 任务队列                                                         │     │
│  │  ├── {hook}:sync             Git Hook 同步任务                                    │     │
│  │  ├── {hook}:fsck             Git Hook 完整性检查                                  │     │
│  │  └── {hook}:gc               Git Hook 垃圾回收                                    │     │
│  └──────────────────────────────────────────────────────────────────────────────────┘     │
│                                                                                            │
│  ┌──────────────────────────────────────────────────────────────────────────────────┐     │
│  │  HTTP/REST API ──▶ 同步服务调用                                                   │     │
│  │  ├── app ↔ gitserver         Git 元数据查询                                       │     │
│  │  └── app → 外部 AI 服务      OpenAI 兼容 API 调用                                 │     │
│  └──────────────────────────────────────────────────────────────────────────────────┘     │
│                                                                                            │
│  ┌──────────────────────────────────────────────────────────────────────────────────┐     │
│  │  WebSocket ──▶ 客户端实时通信                                                     │     │
│  │  ├── /ws                     通用 WebSocket (多房间订阅)                           │     │
│  │  ├── /ws/rooms/{room_id}     房间级 WebSocket                                     │     │
│  │  └── /ws/projects/{proj_id}  项目级 WebSocket                                     │     │
│  └──────────────────────────────────────────────────────────────────────────────────┘     │
│                                                                                            │
│  ┌──────────────────────────────────────────────────────────────────────────────────┐     │
│  │  Kubernetes CRD + Operator ──▶ 基础设施编排                                       │     │
│  │  ├── apps.code.dev           App CRD  → Deployment + Service                      │     │
│  │  ├── gitservers.code.dev     GitServer CRD → Deployment + Service + PVC           │     │
│  │  ├── emailworkers.code.dev   EmailWorker CRD → Deployment                         │     │
│  │  ├── githooks.code.dev       GitHook CRD → Deployment + ConfigMap                 │     │
│  │  └── migrates.code.dev       Migrate CRD → Job                                    │     │
│  └──────────────────────────────────────────────────────────────────────────────────┘     │
└────────────────────────────────────────────────────────────────────────────────────────────┘

数据流详解

1. 聊天消息流程

客户端 A                 app 实例 1              Redis                app 实例 2              客户端 B
  │                       │                      │                      │                      │
  │── WS 发送消息 ───────▶│                      │                      │                      │
  │                       │── XADD ──────────────▶│                      │                      │
  │                       │  room:stream:{id}     │                      │                      │
  │                       │── PUBLISH ────────────▶│                      │                      │
  │                       │  room:pub:{id}        │                      │                      │
  │                       │                      │── 事件通知 ────────────▶│                      │
  │                       │                      │                      │── WS 推送 ────────────▶│
  │◀─ ACK ───────────────│                      │                      │                      │
  │                       │                      │                      │                      │
  │                       │◀──── XREADGROUP ─────│                      │                      │
  │                       │   (room_worker)       │                      │                      │
  │                       │── 写入 PostgreSQL ────│                      │                      │

2. Git Push 流程

客户端               gitserver              Redis              git-hook              PostgreSQL
  │                     │                     │                   │                     │
  │── git push ────────▶│                     │                   │                     │
  │  (HTTP/SSH)         │                     │                   │                     │
  │                     │── git-receive-pack──▶│                   │                     │
  │                     │── LPUSH ────────────▶│                   │                     │
  │                     │  {hook}:sync         │                   │                     │
  │◀─ ACK ─────────────│                     │                   │                     │
  │                     │                     │── BRPOPLPUSH ─────▶│                     │
  │                     │                     │                   │── 同步元数据 ────────▶│
  │                     │                     │                   │── 可选: fsck/gc ─────▶│
  │                     │                     │◀── XACK ──────────│                     │

3. 邮件发送流程

业务逻辑               app                 Redis            email-worker            SMTP
  │                     │                   │                   │                     │
  │── 触发邮件 ────────▶│                   │                   │                     │
  │                     │── XADD ───────────▶│                   │                     │
  │                     │  email:stream       │                   │                     │
  │◀─ 返回 ───────────│                   │                   │                     │
  │                     │                   │── XREADGROUP ─────▶│                     │
  │                     │                   │                   │── 渲染模板 ──────────▶│
  │                     │                   │                   │── SMTP 发送 ─────────▶│
  │                     │                   │◀── XACK ──────────│                     │

4. AI 聊天流程

客户端                   app                 OpenAI API           Qdrant             PostgreSQL
  │                       │                     │                   │                   │
  │── AI 消息 ──────────▶│                     │                   │                   │
  │                       │── 生成 Embedding ──▶│                   │                   │
  │                       │◀──── 向量 ──────────│                   │                   │
  │                       │── 存储向量 ─────────────────────────────▶│                   │
  │                       │── 流式 Chat ─────────▶│                   │                   │
  │◀─ Stream Chunk ──────│◀──── Stream ─────────│                   │                   │
  │                       │                   │                   │                   │
  │                       │── 保存消息 ────────────────────────────────────────────────▶│
  │                       │── 检索相似消息 ────────────────────────▶│                   │
  │                       │◀── 相似结果 ───────────────────────────│                   │

技术栈汇总

后端技术栈

类别 技术 版本
语言 Rust Edition 2024
Web 框架 Actix-web 4.13.0
WebSocket Actix-ws 0.4.0
ORM SeaORM 2.0.0-rc.37
数据库 PostgreSQL -
缓存/消息 Redis 1.1.0
向量库 Qdrant 1.17.0
Git git2 / russh 0.20.0 / 0.55.0
邮件 Lettre 0.11.19
AI async-openai 0.34.0
K8s kube-rs 0.98
gRPC Tonic 0.14.5
日志 slog / tracing 2.8 / 0.1.44

前端技术栈

类别 技术 版本
语言 TypeScript 5.9
框架 React 19.2
路由 React Router 7.13
构建 Vite + SWC 8.0
UI shadcn/ui + Tailwind 4.11 / 4.2
状态 TanStack Query 5.96
HTTP Axios + OpenAPI 生成 1.7
Markdown react-markdown + Shiki 10 / 1
拖拽 dnd-kit 6.3

Docker 与 K8s 部署

┌──────────────────────────────────────────────────────────────────────────────┐
│                          Docker 镜像 (6 个)                                   │
│                                                                              │
│  docker/app.Dockerfile          ──▶  apps/app 主应用镜像                      │
│  docker/email-worker.Dockerfile ──▶  apps/email 邮件 Worker 镜像              │
│  docker/git-hook.Dockerfile     ──▶  apps/git-hook Git Hook 镜像             │
│  docker/gitserver.Dockerfile    ──▶  apps/gitserver Git Server 镜像          │
│  docker/migrate.Dockerfile      ──▶  apps/migrate 数据库迁移镜像              │
│  docker/operator.Dockerfile     ──▶  apps/operator K8s Operator 镜像         │
└──────────────────────────────────────────────────────────────────────────────┘

┌──────────────────────────────────────────────────────────────────────────────┐
│                       Kubernetes CRD (5 个)                                   │
│                                                                              │
│  docker/crd/app-crd.yaml           ──▶  apps.code.dev                       │
│  docker/crd/gitserver-crd.yaml     ──▶  gitservers.code.dev                 │
│  docker/crd/email-worker-crd.yaml  ──▶  emailworkers.code.dev               │
│  docker/crd/git-hook-crd.yaml      ──▶  githooks.code.dev                   │
│  docker/crd/migrate-crd.yaml       ──▶  migrates.code.dev                   │
└──────────────────────────────────────────────────────────────────────────────┘

┌──────────────────────────────────────────────────────────────────────────────┐
│                        K8s 部署配置                                           │
│                                                                              │
│  docker/operator/deployment.yaml     ──▶  Operator Deployment                │
│  docker/operator/example/            ──▶  CRD 使用示例                        │
│    code-system.yaml                                                          │
└──────────────────────────────────────────────────────────────────────────────┘

关键设计特点

特点 描述
Monorepo 架构 Rust workspace + 前端 monorepo统一管理
清晰分层 路由层 → 业务层 → 基础设施层 → 存储层,职责明确
异步优先 基于 Redis Streams 的异步消息处理
实时通信 WebSocket + Redis Pub/Sub 实现多实例同步
K8s 原生 Operator + 5 个 CRD 管理全生命周期
类型安全 OpenAPI 自动生成 TypeScript 客户端
可扩展 服务独立部署,水平扩展
Git 兼容 完整支持 HTTP/SSH Git 协议 + LFS
AI 集成 原生集成 OpenAI 兼容 API + 向量检索
92 个数据库实体 覆盖用户、项目、仓库、Issue、PR、聊天室、AI 等完整业务域