GitLab-Help - GitLab 增强扩展平台

4 阅读10分钟

GitLab-Help - GitLab 增强扩展平台

智能代码审查 · 团队协作管理 · 数据可视化分析 · 自动化工作流

功能特性系统架构快速开始部署指南技术栈API 接口


📖 项目介绍

GitLab-Help 是一款面向 GitLab 的增强扩展平台,为开发团队提供一站式的代码管理辅助工具。通过与 GitLab 深度集成,提供 AI 代码审查、团队贡献分析、权限守卫、自动化通知等增强功能,帮助团队提升开发效率和代码质量。

🎯 核心价值

  • 🔗 GitLab 深度集成 - 无缝对接 GitLab Webhook,自动处理 Push/MR 事件
  • 🤖 AI 智能审查 - 支持多种 LLM 模型,自动审查代码并给出改进建议
  • 📊 团队数据分析 - 成员贡献统计、提交热力图、代码质量趋势
  • 🚧 权限守卫 - 路径级访问控制,防止未授权的关键代码变更
  • 🔔 IM 通知 - 审查结果、MR 动态实时推送到企业微信/钉钉/飞书
  • 📋 日报自动生成 - 每日自动汇总团队代码活动,支持定时推送
  • 🛡️ RBAC 权限体系 - 完整的角色权限管理,支持 LDAP/AD 集成

✨ 功能特性

🔗 GitLab 集成

功能说明
Webhook 自动处理自动接收和处理 Push、Merge Request 事件
项目自动创建配置 Git 凭证后,首次 Webhook 自动创建项目
成员自动同步从 GitLab 自动同步项目成员信息
MR 评论回写审查结果自动发布到 MR 评论区
构建状态上报审查结果同步到 GitLab Pipeline 状态
私有部署支持支持自托管 GitLab 实例

🤖 AI 代码审查

特性说明
多模型支持OpenAI、Azure、Anthropic、Gemini、Ollama、DeepSeek 等
智能评分自动提取 0-100 分值,量化代码质量
分批审查大型 MR 自动拆分,避免超出 Token 限制
文件上下文自动获取相关文件内容,提高审查准确性
文件级审查按文件独立审查,精准定位问题
交互式反馈支持对审查结果提出异议并重新评估
自定义提示词可配置审查模板,支持变量替换

📊 团队数据分析

功能说明
仪表盘项目概览、审查趋势、分数分布、Top 项目/作者
成员分析个人贡献统计、提交趋势、代码质量评分
提交热力图可视化展示成员提交活跃度
日报系统自动生成每日审查报告,支持工作日检测
历史补录支持批量导入历史提交记录

🚧 权限守卫

功能说明
路径级控制限制指定成员对特定文件/目录的修改权限
自定义规则支持按事件类型(Push/MR)配置不同规则
违规通知发现违规变更时自动通知并阻止合并
自定义提示可配置违规提示消息

🔔 通知系统

平台格式字符限制特性
企业微信Markdown4096markdown_v2 格式
钉钉Markdown20000支持加签验证
飞书富文本4096支持签名密钥

🛡️ 系统管理

功能说明
RBAC 角色完整的角色权限管理,支持菜单、项目组、项目级权限
LDAP 集成支持 LDAP/AD 认证,自动同步用户
项目分组支持项目分组管理,组级访问令牌继承
Git 凭证统一管理平台凭证,支持自动创建项目
审查模板预置前端/后端/安全/通用审查模板
系统日志完整的操作审计日志,支持保留期配置
假日检测支持 22+ 国家的假日日历,日报跳过节假日

🏗️ 系统架构

项目目录结构

gitlab-help/
├── backend/                    # Go 后端服务
│   ├── cmd/
│   │   ├── server/            # 主入口
│   │   │   └── main.go        # 路由定义、服务初始化
│   │   └── scripts/           # 数据库迁移脚本
│   └── internal/
│       ├── config/            # 配置管理
│       ├── handlers/          # API 处理器 (23个)
│       ├── middleware/        # 认证、CORS 中间件
│       ├── models/            # 数据模型 (GORM)
│       ├── services/          # 业务逻辑 (50+ 服务)
│       │   └── webhook/       # Webhook 处理
│       └── utils/             # JWT、密码工具
├── frontend/                   # React 前端应用
│   └── src/
│       ├── components/        # 通用组件
│       ├── constants/         # 常量、权限定义
│       ├── hooks/             # 自定义 Hooks
│       │   └── queries/       # TanStack Query Hooks
│       ├── i18n/              # 国际化 (中/英)
│       ├── layouts/           # 布局组件
│       ├── pages/             # 页面组件 (20个)
│       ├── providers/         # Query Provider
│       ├── services/          # API 服务
│       ├── stores/            # Zustand 状态管理
│       └── types/             # TypeScript 类型
├── docker-compose.yml         # Docker 部署配置
├── Dockerfile                 # 多阶段构建
└── config.yaml.example        # 配置示例

整体架构图

graph TB
    subgraph "Git 平台"
        GL[GitLab]
    end

    subgraph "GitLab-Help 服务"
        WEB[Webhook 接收器]
        API[REST API]
        SSE[SSE 实时推送]
        
        subgraph "核心服务"
            AI[AI 审查引擎]
            GUARD[权限守卫]
            NOTIFY[通知服务]
            REPORT[日报服务]
        end
        
        subgraph "数据层"
            DB[(SQLite/MySQL/PG)]
            REDIS[(Redis 队列)]
        end
    end

    subgraph "通知渠道"
        WW[企业微信]
        DT[钉钉]
        FS[飞书]
    end

    subgraph "LLM 提供商"
        OAI[OpenAI]
        AZ[Azure]
        ANT[Anthropic]
        GEM[Gemini]
        OLL[Ollama]
    end

    GL --> WEB
    
    WEB --> AI
    WEB --> GUARD
    API --> DB
    AI --> OAI & AZ & ANT & GEM & OLL
    AI --> NOTIFY
    AI --> DB
    NOTIFY --> WW & DT & FS
    
    SSE --> DB

数据模型

erDiagram
    USER ||--o{ PROJECT : creates
    USER }o--|| ROLE : has
    ROLE ||--o{ ROLE_MENU : has
    ROLE ||--o{ ROLE_PROJECT_GROUP : has
    ROLE ||--o{ ROLE_PROJECT : has
    
    PROJECT_GROUP ||--o{ PROJECT : contains
    PROJECT ||--o{ REVIEW_LOG : has
    PROJECT ||--o{ PROJECT_MEMBER : has
    PROJECT ||--o{ PERMISSION_GUARD_RULE : has
    PROJECT }o--o| LLM_CONFIG : uses
    PROJECT }o--o| PROMPT_TEMPLATE : uses
    PROJECT }o--o| IM_BOT : notifies
    
    REVIEW_LOG ||--o{ FILE_REVIEW : has
    REVIEW_LOG ||--o{ REVIEW_FEEDBACK : receives
    
    IM_BOT ||--o{ DAILY_REPORT : sends

    USER {
        uint id PK
        string username UK
        string password
        string email
        string nickname
        uint role_id FK
        string auth_type "local/ldap"
        bool is_active
        datetime last_login
    }
    
    ROLE {
        uint id PK
        string name UK
        string display_name
        bool is_system
        bool can_write
        bool is_active
    }
    
    PROJECT {
        uint id PK
        string name UK
        string url UK
        string platform
        string access_token
        string webhook_secret
        bool ai_enabled
        uint llm_config_id FK
        uint ai_prompt_id FK
        uint im_bot_id FK
        uint group_id FK
        float min_score
        bool file_review_enabled
    }
    
    REVIEW_LOG {
        uint id PK
        uint project_id FK
        string event_type
        string commit_hash
        string branch
        string author
        float score
        string review_status
        string review_result
        bool is_manual
    }
    
    FILE_REVIEW {
        uint id PK
        uint review_log_id FK
        string file_path
        float score
        string review_result
        string review_status
    }
    
    LLM_CONFIG {
        uint id PK
        string name
        string provider
        string base_url
        string api_key
        string model
        bool is_default
    }

🚀 快速开始

环境要求

组件版本要求说明
Go≥ 1.21后端运行环境
Node.js≥ 18前端构建环境
Docker≥ 20.10容器化部署(可选)
MySQL/PostgreSQL≥ 8.0 / ≥ 13数据库(可选,默认 SQLite)
Redis≥ 6.0异步任务队列(可选)

方式一:Docker 部署(推荐)

# 1. 克隆项目
git clone https://github.com/your-repo/gitlab-help.git
cd gitlab-help

# 2. 使用 Docker Compose 启动(SQLite 版)
docker-compose -f docker-compose.sqlite.yml up -d

# 或使用 MySQL 版
docker-compose up -d

# 3. 访问应用
# http://localhost:8080
# 默认账号: admin / admin

方式二:本地开发

# 1. 克隆项目
git clone https://github.com/your-repo/gitlab-help.git
cd gitlab-help

# 2. 配置文件
cp config.yaml.example config.yaml

# 3. 启动后端
cd backend
go mod download
go run ./cmd/server

# 4. 启动前端(新终端)
cd frontend
npm install
npm run dev

# 5. 访问应用
# 前端: http://localhost:5173
# 后端: http://localhost:8080

首次配置

  1. 登录系统 - 使用默认账号 admin / admin
  2. 配置 Git 凭证 - 在「Git 凭证」添加 GitLab Access Token
  3. 配置 LLM - 在「大模型管理」添加 AI 模型(如需 AI 审查)
  4. 配置 Webhook - 将 Webhook URL 配置到 GitLab 项目
  5. 测试集成 - 提交代码或创建 MR 触发流程

📦 部署指南

Docker Compose 配置

配置文件适用场景
docker-compose.yml生产部署,MySQL
docker-compose.sqlite.yml轻量部署,SQLite
docker-compose.postgres.ymlPostgreSQL 部署
docker-compose.dev.yml开发环境

环境变量

变量名说明默认值
SERVER_HOST服务监听地址0.0.0.0
SERVER_PORT服务端口8080
SERVER_MODE运行模式 (debug/release/test)release
DB_DRIVER数据库类型 (sqlite/mysql/postgres)sqlite
DB_DSN数据库连接串gitlab-help.db
JWT_SECRETJWT 密钥随机生成
REDIS_URLRedis 连接 (可选)-

配置文件结构

# config.yaml
server:
  host: "0.0.0.0"
  port: "8080"
  mode: "release"      # debug, release, test

database:
  driver: "sqlite"     # sqlite, mysql, postgres
  dsn: "gitlab-help.db"

jwt:
  secret: "your-secret-key"
  expire_hour: 24

ldap:                  # LDAP 配置(可选)
  enabled: false
  host: "ldap.example.com"
  port: 389
  base_dn: "dc=example,dc=com"
  bind_dn: "cn=admin,dc=example,dc=com"
  bind_password: ""
  user_filter: "(uid=%s)"
  use_ssl: false

redis:                 # Redis 配置(可选)
  enabled: false
  addr: "localhost:6379"
  password: ""
  db: 0

GitLab Webhook 配置

  1. 进入 GitLab 项目 Settings → Webhooks
  2. 填写配置:
    • URL: https://your-domain/webhook
    • Secret token: 配置的 Webhook 密钥
    • Trigger:
      • ✅ Push events
      • ✅ Merge request events
  3. 点击 Add webhook

💡 提示: 配置 Git 凭证后,系统会在收到 Webhook 时自动创建对应项目,无需手动添加。


🛠️ 技术栈

后端

技术版本用途
Go1.21+主要开发语言
Ginv1.9+Web 框架
GORMv1.25+ORM 框架
Asynq-异步任务队列

前端

技术版本用途
React19UI 框架
TypeScript5类型安全
Vite6构建工具
Ant Design5UI 组件库
TanStack Query5数据获取
React Router7路由管理
Recharts-图表库
Zustand-状态管理
i18next-国际化

数据库支持

数据库说明
SQLite默认,无需额外配置,适合小团队
MySQL生产环境推荐
PostgreSQL企业级选择

📋 API 接口

认证接口

方法路径说明权限
POST/api/auth/login登录公开
GET/api/auth/config获取认证配置公开
GET/api/auth/me获取当前用户登录
POST/api/auth/logout退出登录登录
POST/api/auth/change-password修改密码登录

项目管理

方法路径说明权限
GET/api/projects项目列表登录
GET/api/projects/:id项目详情登录
POST/api/projects创建项目Admin
PUT/api/projects/:id更新项目Admin
DELETE/api/projects/:id删除项目Admin
GET/api/projects/:id/members项目成员登录
POST/api/projects/:id/members/sync同步成员Admin

代码审查

方法路径说明权限
GET/api/review-logs审查记录列表登录
GET/api/review-logs/:id审查详情登录
POST/api/review-logs/:id/retry重试审查Admin
DELETE/api/review-logs/:id删除记录Admin
POST/api/review-logs/manual手动创建Admin
POST/api/review-logs/import批量导入Admin
GET/api/review-logs/:id/file-reviews文件级审查登录
GET/api/review-logs/:id/feedbacks反馈列表登录
POST/api/review-feedbacks创建反馈登录

用户与角色

方法路径说明权限
GET/api/users用户列表Admin
POST/api/users创建用户Admin
PUT/api/users/:id更新用户Admin
DELETE/api/users/:id删除用户Admin
GET/api/roles角色列表Admin
POST/api/roles创建角色Admin
PUT/api/roles/:id更新角色Admin
DELETE/api/roles/:id删除角色Admin
GET/api/roles/:id/menus角色菜单Admin
PUT/api/roles/:id/menus更新菜单权限Admin

配置管理

方法路径说明权限
GET/api/llm-configsLLM 配置列表Admin
POST/api/llm-configs创建 LLMAdmin
GET/api/im-botsIM 机器人列表Admin
POST/api/im-bots创建机器人Admin
GET/api/prompts提示词列表登录
POST/api/prompts创建提示词Admin
GET/api/git-credentialsGit 凭证列表Admin
POST/api/git-credentials创建凭证Admin
GET/api/review-templates审查模板列表登录
POST/api/review-templates创建模板Admin

Webhook

方法路径说明
POST/webhook统一 Webhook 入口
POST/api/webhook/gitlab/:project_idGitLab Webhook(指定项目)

实时事件 (SSE)

方法路径说明
GET/api/events/reviews审查事件流
GET/api/events/imports导入事件流

数据分析

方法路径说明权限
GET/api/dashboard/stats仪表盘统计登录
GET/api/members成员列表登录
GET/api/members/detail成员详情登录
GET/api/members/overview团队概览登录
GET/api/members/heatmap提交热力图登录
GET/api/daily-reports日报列表Admin
POST/api/daily-reports/generate生成日报Admin

🖥️ 功能模块

模块功能说明
仪表盘项目概览、审查趋势、分数分布、Top 项目/作者
审查记录审查历史、筛选、重试、手动录入、批量导入、文件级详情
项目管理项目 CRUD、Webhook 配置、AI 设置、通知配置、文件过滤
项目组项目分组管理、组级访问令牌
成员分析团队统计、个人详情、提交热力图、性能趋势
成员管理全局成员档案、中文名、电话号码
权限守卫路径级访问控制规则配置
用户管理用户 CRUD、角色分配、认证类型
角色管理RBAC 角色、菜单权限、项目组权限、项目权限
大模型管理多 LLM 配置、默认模型切换
通知机器人IM 通知配置、错误通知、日报推送
提示词管理审查提示词模板、变量支持
审查模板预置审查模板(前端/后端/安全/通用)
Git 凭证平台凭证管理、自动创建项目
系统日志操作审计、日志清理、保留期配置
系统设置LDAP、日报调度、分批审查、文件上下文、假日检测
日报自动生成、手动发送、调度测试

🔐 权限说明

内置角色

角色说明
admin系统管理员,拥有所有权限
user普通用户,只读权限

权限对照表

功能模块AdminUser
仪表盘
审查记录(查看)
审查记录(重试/删除)
项目管理(查看)
项目管理(编辑)
成员分析
提示词(查看)
提示词(编辑)
大模型管理
通知机器人
Git 凭证
用户管理
角色管理
系统日志
系统设置
日报管理

🌍 国际化

系统支持中英文双语:

  • 🇨🇳 简体中文 (zh)
  • 🇺🇸 English (en)

语言自动检测浏览器设置,也可手动切换。


🎨 主题支持

  • ☀️ 亮色主题
  • 🌙 暗色主题

支持一键切换,自动保存用户偏好。


🤝 贡献指南

欢迎贡献代码!请遵循以下步骤:

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add amazing feature')
  4. 推送分支 (git push origin feature/amazing-feature)
  5. 创建 Pull Request

开发规范

  • 后端代码遵循 Go 官方代码规范
  • 前端代码使用 ESLint + TypeScript 严格模式
  • 提交信息遵循 Conventional Commits 规范