ReviewBot/requirements.md
2026-02-19 11:37:53 +04:00

5.8 KiB
Raw Permalink Blame History

Требования к боту CodeReview

Составлено на основе встречи 18.02.2026


1. Назначение

Telegram-бот для автоматизации процесса Code Review: назначение ревьюеров, уведомления и балансировка нагрузки внутри команды.


2. Функциональные требования

2.1 Регистрация пользователей

  • Каждый участник команды должен самостоятельно зарегистрироваться в боте (написать /start или аналогичную команду), чтобы бот мог отправлять личные сообщения.
  • При регистрации пользователь указывает свой email-адрес из Git — это необходимо для связки аккаунта Gitea с аккаунтом Telegram.
  • Без регистрации бот не может писать пользователю в ЛС (ограничение Telegram API).

2.2 Автоматическое назначение ревьюеров

  • При создании Pull Request (PR) бот автоматически назначает ревьюера, если он не был указан вручную.
  • Автор PR исключается из пула кандидатов.
  • Участники, указавшие период недоступности, также исключаются из пула на это время.
  • Если бот назначил ревьюера (а не пользователь вручную), на PR автоматически вешается лейбл (например, auto-assigned).

2.3 Уведомления

  • Бот отправляет уведомления в личные сообщения, а не в общий чат, чтобы не создавать шум.
  • Уведомления отправляются в следующих случаях:
    • назначение ревьюером на PR;
    • появление новых комментариев в PR, где пользователь является автором или ревьюером;
    • добавление новых коммитов в PR, назначенный на пользователя (например, после запроса правок);
    • изменение статуса PR (approved, changes requested, merged, closed).

2.4 Балансировка нагрузки

  • Бот ведёт счётчик активных (открытых) ревью для каждого участника.
  • При выборе ревьюера назначается тот, у кого наименьшее количество активных ревью.
  • Если несколько участников имеют одинаковую нагрузку — выбор между ними происходит случайно.
  • Автор PR и недоступные участники в расчёт не включаются.

2.5 Управление доступностью

  • Пользователь может указать период недоступности через команду бота (например, /away 2026-03-01 2026-03-10).
  • В этот период пользователь не получает назначений на ревью.
  • По истечении периода пользователь автоматически возвращается в пул.

2.6 Напоминания (пинги)

  • Бот автоматически напоминает ревьюеру о висящих (не закрытых) PR.
  • Каждый пользователь самостоятельно настраивает время напоминаний через команду бота (например, /reminder 09:00).
  • Периодичность: ежедневно, пока PR не закрыт или не смержен.

3. Интеграции

Интеграция Описание
Gitea API Получение событий PR (создание, комментарии, статус), назначение ревьюеров и простановка лейблов через API
Telegram Bot API Отправка личных сообщений пользователям
  • Токены и доступ к Gitea API предоставляет Андрей Епифанцев.

4. Нефункциональные требования

  • Бот пишет только в личные сообщения, общий чат не используется.
  • Бот должен корректно обрабатывать ситуации, когда пользователь не зарегистрирован (логировать, не падать).
  • Статус задачи: side quest — разрабатывается в свободное время.

5. MVP (минимально жизнеспособный продукт)

Для первого запуска достаточно:

  1. Регистрация пользователя в боте с указанием Gitea email.
  2. Webhook от Gitea: при создании PR без ревьюера — назначить участника с наименьшим числом активных ревью (исключая автора; при равной нагрузке — случайный выбор).
  3. Уведомление назначенного ревьюера в Telegram ЛС.
  4. Напоминание о висящих PR — единое время для всей команды (настраивается глобально).