Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Сервис автоматического назначения ревьюеров для Pull Request'ов

📋 Описание проекта

Сервис для автоматического назначения ревьюеров на Pull Request'ы (PR) внутри команд разработки. Позволяет управлять командами, участниками и автоматически распределять ревью между активными членами команды.

🎯 Основные возможности

  • Управление пользователями и командами
  • Создание и управление пользователями с флагом активности isActive
  • Создание и управление командами разработчиков
  • Назначение пользователей в команды

Управление Pull Request'ами

  • Создание PR с автоматическим назначением ревьюеров
  • Автоматический подбор до 2 активных ревьюеров из команды автора
  • Исключение автора PR из списка возможных ревьюеров
  • Переназначение ревьюеров при необходимости
  • Merge PR с блокировкой дальнейших изменений состава ревьюеров

API возможности

  • Получение списка PR, назначенных конкретному пользователю
  • Проверка статуса PR (OPEN/MERGED)
  • Идемпотентная операция merge

🏗️ Архитектура и технологический стек

Основной стек
Язык: Go
База данных: PostgreSQL
API: RESTful HTTP API с OpenAPI спецификацией
Контейнеризация: Docker + Docker Compose

Требования к производительности

  • Объём данных: до 20 команд и 200 пользователей
  • RPS: 5 запросов в секунду
  • Время ответа (SLI): ≤ 300 мс
  • Успешность (SLI): ≥ 99.9%
  • Порт: 8080

🔧 Логика работы

Назначение ревьюеров

  1. При создании PR система автоматически выбирает до 2 активных ревьюеров из команды автора
  2. Автор PR исключается из списка кандидатов
  3. Если доступных кандидатов меньше двух, назначается доступное количество (0 или 1)
  4. Неактивные пользователи (isActive = false) не назначаются

Переназначение ревьюеров

  • Замена одного ревьюера на случайного активного участника из команды заменяемого ревьюера
  • После merge PR изменение состава ревьюеров запрещено
  • Операция merge идемпотентна

Перед запуском создайте файл .env на основе примера .env.example

Результаты нагрузочного тестирования

📊 Обзор тестирования

Тестирование проводилось с использованием инструмента k6 для оценки производительности сервиса управления Pull Request'ами.

Сценарий тестирования:

  1. POST /pullRequest/create - создание Pull Request с назначением ревьюверов
  2. GET /stats - получение глобальной статистики и топа ревьюверов

📈 Ключевые метрики

Метрика Результат Требование ТЗ Статус
RPS (запросов/сек) 15.04 5 Выполнено
Время ответа 21.42 ms < 300 ms Выполнено
Успешность запросов 100% > 99.9% Выполнено

📊 Детальная статистика

  • Всего запросов: 554
  • Ошибок: 0 (0.00%)
  • Среднее время ответа: 10.53 ms
  • Максимальное время ответа: 78.35 ms
  • Процент успешных запросов: 100%

About

Automated Reviewer Assignment Service built with Go & PostgreSQL. Features team management, random distribution logic, and Docker support. Performance tested with k6.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages