5.8 KiB
5.8 KiB
Требования к боту 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 (минимально жизнеспособный продукт)
Для первого запуска достаточно:
- Регистрация пользователя в боте с указанием Gitea email.
- Webhook от Gitea: при создании PR без ревьюера — назначить участника с наименьшим числом активных ревью (исключая автора; при равной нагрузке — случайный выбор).
- Уведомление назначенного ревьюера в Telegram ЛС.
- Напоминание о висящих PR — единое время для всей команды (настраивается глобально).