chore: remove deprecated docs (superseded by CLAUDE.md)
This commit is contained in:
parent
fb91f5a6c5
commit
208b6ed84e
@ -1,903 +0,0 @@
|
||||
# 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 等完整业务域 |
|
||||
@ -1,71 +0,0 @@
|
||||
# 分支保护规则配置
|
||||
|
||||
以下规则需要在 GitHub 仓库设置界面手动配置,或通过 Terraform/Ansible 等基础设施即代码工具自动化。
|
||||
|
||||
## main 分支保护规则
|
||||
|
||||
路径:**Settings → Branches → Branch protection rules → Add rule**
|
||||
|
||||
### 必填项
|
||||
|
||||
| 配置项 | 值 | 说明 |
|
||||
|--------|-----|------|
|
||||
| Branch name pattern | `main` | 匹配 main 分支 |
|
||||
| Protect matching branches | ✅ 启用 | 开启分支保护 |
|
||||
| **Require pull request reviews** | ✅ 要求 | 合并前至少 1 人 review |
|
||||
| **Require approvals** | `1` | 最少审批数量 |
|
||||
| Dismiss stale approvals | ✅ 启用 | PR 更新后需重新审批 |
|
||||
| Require review from Code Owners | ☐ 可选 | 建议开启 |
|
||||
| **Require status checks to pass before merging** | ✅ 要求 | 必须通过 CI |
|
||||
| Required status checks | `rust-check`, `rust-test`, `frontend-check` | CI job 名称 |
|
||||
| **Require branches to be up to date before merging** | ☐ 可选 | 建议不启用,避免复杂 |
|
||||
| Do not allow bypassing the above settings | ✅ 启用 | 即使 admin 不能绕过 |
|
||||
|
||||
### 安全设置
|
||||
|
||||
| 配置项 | 值 |
|
||||
|--------|-----|
|
||||
| Lock branch | ☐ 可选(不勾选,CI 仍可推送) |
|
||||
| Allow force pushes | ☐ 禁用(禁止 force push) |
|
||||
| Allow deletions | ☐ 禁用(禁止删除分支) |
|
||||
|
||||
## develop 分支保护规则
|
||||
|
||||
路径:**Settings → Branches → Branch protection rules → Add rule**
|
||||
|
||||
| 配置项 | 值 |
|
||||
|--------|-----|
|
||||
| Branch name pattern | `develop` |
|
||||
| Protect matching branches | ✅ 启用 |
|
||||
| Require pull request reviews | ✅ 要求 |
|
||||
| Require approvals | `1` |
|
||||
| Dismiss stale approvals | ✅ 启用 |
|
||||
| Require status checks to pass before merging | ✅ 要求 |
|
||||
| Required status checks | `rust-check`, `rust-test`, `frontend-check` |
|
||||
| Do not allow bypassing | ✅ 启用 |
|
||||
| Allow force pushes | ☐ 禁用 |
|
||||
|
||||
## 自动清理已合并分支
|
||||
|
||||
建议安装 GitHub App [Branch Clean Up](https://github.com/apps/branch-cleanup) 或在 PR 合并后自动删除源分支:
|
||||
|
||||
- **Settings → General → Automatically delete head branches** → ✅ 启用
|
||||
|
||||
## 使用 GitHub CLI 配置(自动化)
|
||||
|
||||
如果需要通过代码自动化配置,可以使用 `gh` CLI:
|
||||
|
||||
```bash
|
||||
# 安装 gh
|
||||
brew install gh
|
||||
|
||||
# 登录
|
||||
gh auth login
|
||||
|
||||
# 创建 branch protection rule for main
|
||||
gh api repos/{owner}/{repo}/branches/main/protection -X PUT \
|
||||
-f required_status_checks='{"strict":true,"contexts":["rust-check","rust-test","frontend-check"]}' \
|
||||
-f enforce_admins=true \
|
||||
-f required_pull_request_reviews='{"required_approving_review_count":1,"dismiss_stale_reviews":true}' \
|
||||
-f allow_force_pushes=false
|
||||
```
|
||||
@ -1,77 +0,0 @@
|
||||
# Commit Message 规范
|
||||
|
||||
本项目采用 [Conventional Commits](https://www.conventionalcommits.org/) 规范。
|
||||
|
||||
## 格式
|
||||
|
||||
```
|
||||
<type>(<scope>): <description>
|
||||
|
||||
[optional body]
|
||||
|
||||
[optional footer(s)]
|
||||
```
|
||||
|
||||
## 示例
|
||||
|
||||
```
|
||||
feat(api): add workspace member invitation endpoint
|
||||
fix(frontend): correct sidebar collapse state on resize
|
||||
docs: update API documentation for /repos endpoints
|
||||
refactor(service): extract auth logic into separate module
|
||||
hotfix(k8s): add missing health probe for gitserver
|
||||
```
|
||||
|
||||
## Type
|
||||
|
||||
| Type | Description |
|
||||
|------|-------------|
|
||||
| `feat` | 新功能 |
|
||||
| `fix` | Bug 修复 |
|
||||
| `docs` | 仅文档变更 |
|
||||
| `style` | 代码格式(不影响功能) |
|
||||
| `refactor` | 重构(不是修复也不是新功能) |
|
||||
| `perf` | 性能优化 |
|
||||
| `test` | 添加或修正测试 |
|
||||
| `chore` | 构建或辅助工具变更 |
|
||||
| `build` | 影响构建系统或依赖 |
|
||||
| `ci` | CI/CD 配置 |
|
||||
| `revert` | 回滚之前的提交 |
|
||||
|
||||
## Scope
|
||||
|
||||
| Scope | 说明 |
|
||||
|-------|------|
|
||||
| `frontend` | React 前端 |
|
||||
| `api` | REST API 路由 |
|
||||
| `service` | 业务逻辑层 |
|
||||
| `models` | 数据库模型 |
|
||||
| `k8s` | Kubernetes 部署 |
|
||||
| `deploy` | Docker/Helm 部署 |
|
||||
| `git` | Git 仓库功能 |
|
||||
| `room` | 实时聊天 |
|
||||
| `agent` | AI Agent |
|
||||
| `db` | 数据库迁移 |
|
||||
|
||||
## 规则
|
||||
|
||||
1. **每条提交应仅包含一个逻辑变更**
|
||||
2. **description 首字母小写,使用祈使句**
|
||||
3. **禁止句号结尾**
|
||||
4. **Body 解释 what 和 why,不解释 how**
|
||||
5. **Footer 引用相关 Issue**
|
||||
|
||||
## Git Alias
|
||||
|
||||
在 `~/.gitconfig` 中添加快捷别名:
|
||||
|
||||
```ini
|
||||
[alias]
|
||||
co = checkout
|
||||
cm = commit -m
|
||||
lg = log --oneline --graph --decorate
|
||||
amend = commit --amend --no-edit
|
||||
uncommit = reset --soft HEAD~1
|
||||
```
|
||||
|
||||
或使用 commitlint 钩子自动验证(见 `.husky/commit-msg`)。
|
||||
191
docs/GITFLOW.md
191
docs/GITFLOW.md
@ -1,191 +0,0 @@
|
||||
# Git Flow 分支策略
|
||||
|
||||
## 概述
|
||||
|
||||
本项目采用 [Git Flow](https://nvie.com/posts/a-successful-git-branching-model/) 分支模型,结合 GitHub Flow 的简洁性,适合本项目的发布节奏。
|
||||
|
||||
## 分支结构
|
||||
|
||||
```
|
||||
main ← 生产环境,始终保持可发布状态
|
||||
│
|
||||
├── develop ← 开发集成分支,所有功能分支合并至此
|
||||
│ │
|
||||
│ ├── feature/xxx ← 功能分支,从 develop 创建
|
||||
│ │
|
||||
│ ├── release/0.3.0 ← 发布分支,从 develop 创建
|
||||
│ │
|
||||
│ └── hotfix/0.2.10 ← 热修复分支,从 main 创建
|
||||
```
|
||||
|
||||
## 长期分支
|
||||
|
||||
| 分支 | 用途 | 保护状态 |
|
||||
|------|------|----------|
|
||||
| `main` | 生产环境代码 | 强制保护,禁止 force push |
|
||||
| `develop` | 开发集成,所有功能最终汇入 | 建议保护 |
|
||||
|
||||
## 临时分支
|
||||
|
||||
| 前缀 | 用途 | 创建来源 | 合并目标 |
|
||||
|------|------|----------|----------|
|
||||
| `feature/` | 新功能开发 | `develop` | `develop` |
|
||||
| `release/` | 发布准备 | `develop` | `main` + `develop` |
|
||||
| `hotfix/` | 生产环境紧急修复 | `main` | `main` + `develop` |
|
||||
|
||||
## 工作流程
|
||||
|
||||
### 1. 功能开发 (feature)
|
||||
|
||||
```bash
|
||||
# 从 develop 创建功能分支
|
||||
git checkout develop
|
||||
git checkout -b feature/user-dashboard
|
||||
|
||||
# 开发完成后,提交 PR 到 develop
|
||||
git push origin feature/user-dashboard
|
||||
```
|
||||
|
||||
### 2. 发布准备 (release)
|
||||
|
||||
```bash
|
||||
# 从 develop 创建发布分支
|
||||
git checkout develop
|
||||
git checkout -b release/0.3.0
|
||||
|
||||
# 在 release 分支上做最后的修复和版本号更新
|
||||
# 修复完成后,合并到 main 并打标签
|
||||
git checkout main
|
||||
git merge release/0.3.0 --no-ff
|
||||
git tag -a v0.3.0 -m "Release v0.3.0"
|
||||
|
||||
# 同时合并回 develop
|
||||
git checkout develop
|
||||
git merge release/0.3.0 --no-ff
|
||||
|
||||
# 删除发布分支
|
||||
git branch -d release/0.3.0
|
||||
```
|
||||
|
||||
### 3. 热修复 (hotfix)
|
||||
|
||||
```bash
|
||||
# 从 main 创建热修复分支
|
||||
git checkout main
|
||||
git checkout -b hotfix/0.2.10
|
||||
|
||||
# 修复完成后,合并到 main 并打标签
|
||||
git checkout main
|
||||
git merge hotfix/0.2.10 --no-ff
|
||||
git tag -a v0.2.10 -m "Hotfix v0.2.10"
|
||||
|
||||
# 同时合并回 develop
|
||||
git checkout develop
|
||||
git merge hotfix/0.2.10 --no-ff
|
||||
|
||||
# 删除热修复分支
|
||||
git branch -d hotfix/0.2.10
|
||||
```
|
||||
|
||||
## 分支命名规范
|
||||
|
||||
```
|
||||
feature/<issue-id>-<简短描述>
|
||||
release/<版本号>
|
||||
hotfix/<版本号>
|
||||
```
|
||||
|
||||
示例:
|
||||
- `feature/123-user-dashboard`
|
||||
- `feature/456-oauth-integration`
|
||||
- `release/0.3.0`
|
||||
- `hotfix/0.2.10`
|
||||
|
||||
## 合并 (Merge) 策略
|
||||
|
||||
- **功能分支 → develop**:使用 `git merge --no-ff`,保留功能分支历史
|
||||
- **release → main + develop**:使用 `git merge --no-ff`
|
||||
- **hotfix → main + develop**:使用 `git merge --no-ff`
|
||||
- **PR 合并**:在 GitHub 界面使用 "Squash and merge" 或 "Create a merge commit"
|
||||
|
||||
## 提交信息规范
|
||||
|
||||
采用 [Conventional Commits](https://www.conventionalcommits.org/) 格式:
|
||||
|
||||
```
|
||||
<type>(<scope>): <description>
|
||||
|
||||
[optional body]
|
||||
|
||||
[optional footer]
|
||||
```
|
||||
|
||||
### Type 类型
|
||||
|
||||
| Type | 说明 |
|
||||
|------|------|
|
||||
| `feat` | 新功能 |
|
||||
| `fix` | Bug 修复 |
|
||||
| `docs` | 仅文档变更 |
|
||||
| `style` | 代码格式(不影响功能) |
|
||||
| `refactor` | 重构(不是修复也不是新功能) |
|
||||
| `perf` | 性能优化 |
|
||||
| `test` | 添加或修正测试 |
|
||||
| `chore` | 构建或辅助工具变更 |
|
||||
|
||||
### Scope 范围
|
||||
|
||||
使用受影响的主要模块:
|
||||
|
||||
| Scope | 说明 |
|
||||
|-------|------|
|
||||
| `frontend` | 前端代码 |
|
||||
| `backend` | 后端通用 |
|
||||
| `api` | API 路由/Handler |
|
||||
| `service` | 业务逻辑层 |
|
||||
| `models` | 数据库模型 |
|
||||
| `k8s` | Kubernetes 部署 |
|
||||
| `deploy` | 部署配置 |
|
||||
| `git` | Git 相关功能 |
|
||||
| `room` | 实时聊天功能 |
|
||||
| `agent` | AI Agent 功能 |
|
||||
| `db` | 数据库/迁移 |
|
||||
|
||||
### 示例
|
||||
|
||||
```
|
||||
feat(frontend): add user dashboard page
|
||||
fix(api): handle nil pointer in workspace handler
|
||||
docs: update API documentation for /repos endpoints
|
||||
refactor(service): extract auth logic into separate module
|
||||
hotfix(k8s): add missing health probe for gitserver
|
||||
```
|
||||
|
||||
## 标签 (Tag) 策略
|
||||
|
||||
使用语义化版本号:
|
||||
|
||||
```bash
|
||||
# 发布标签
|
||||
git tag -a v0.2.9 -m "Release v0.2.9"
|
||||
|
||||
# 带签名的标签(推荐)
|
||||
git tag -s v0.2.9 -m "Release v0.2.9"
|
||||
```
|
||||
|
||||
版本号格式:`v<major>.<minor>.<patch>`
|
||||
- `major`:破坏性变更
|
||||
- `minor`:新功能(向后兼容)
|
||||
- `patch`:Bug 修复
|
||||
|
||||
## 分支清理
|
||||
|
||||
功能分支合并后应删除:
|
||||
|
||||
```bash
|
||||
# 删除本地分支
|
||||
git branch -d feature/xxx
|
||||
|
||||
# 删除远程分支
|
||||
git push origin --delete feature/xxx
|
||||
```
|
||||
Loading…
Reference in New Issue
Block a user