Raykov-MS f4ca11413a MVP
2026-02-25 10:46:00 +03:00
MVP
2026-02-25 10:46:00 +03:00
MVP
2026-02-25 10:46:00 +03:00
2026-02-19 11:37:53 +04:00
2026-02-25 10:46:00 +03:00

CodeReview Bot (MVP)

Реализовано в текущем MVP:

  • Регистрация в Telegram: /register <git_email> <gitea_login>
  • Период недоступности: /away <YYYY-MM-DD> <YYYY-MM-DD>
  • Webhook Gitea по PR:
    • при создании PR без ревьюера бот назначает доступного участника с минимальной нагрузкой
    • ставит метку auto-assigned (best effort)
    • отправляет уведомление назначенному ревьюеру в личные сообщения Telegram
  • Ежедневное напоминание в общее время REMINDER_TIME (по умолчанию 09:00)
  • Техническая проверка сервиса: GET /health

Запуск

python -m venv .venv
. .venv/Scripts/activate
pip install -r requirements.txt
uvicorn main:app --host 0.0.0.0 --port 8080 --reload --env-file .env

Переменные окружения

  • TELEGRAM_BOT_TOKEN - обязательно
  • GITEA_BASE_URL - обязательно для назначения ревьюера, например https://git.example.com
  • GITEA_TOKEN - обязательно для назначения/меток
  • GITEA_WEBHOOK_SECRET - необязательно, но рекомендуется
  • REMINDER_TIME - необязательно, по умолчанию 09:00
  • AUTO_ASSIGNED_LABEL - необязательно, по умолчанию auto-assigned
  • ALLOW_SELF_ASSIGN - необязательно, по умолчанию false (для локального теста можно true)
  • BOT_DB_PATH - необязательно, по умолчанию botreviewer.sqlite3

Webhook-эндпоинты

  • Обновления Telegram: POST /telegram/webhook
  • Webhook Gitea: POST /gitea/webhook

Для Telegram укажите URL вашего сервиса с путем /telegram/webhook. Для Gitea включите события pull_request и задайте общий секрет.

Локальная разработка через Tuna

Если бот запущен локально, Gitea/Telegram не смогут достучаться до localhost без туннеля.

  1. Запустите бота:
uvicorn main:app --host 0.0.0.0 --port 8080 --reload --env-file .env
  1. Поднимите туннель в Tuna(https://my.tuna.am/) на локальный порт 8080 и получите публичный URL, например:
https://example.ru.tuna.am
  1. Проверьте доступность сервиса:
https://example.ru.tuna.am/health
  1. Настройте webhook в Gitea:
  • Target URL: https://example.ru.tuna.am/gitea/webhook
  • Method: POST
  • Content Type: application/json
  • Secret: тот же, что в GITEA_WEBHOOK_SECRET
  • Events: Pull Request (Custom Events)
  1. Настройте webhook в Telegram:
https://api.telegram.org/bot<TELEGRAM_BOT_TOKEN>/setWebhook?url=https://example.ru.tuna.am/telegram/webhook
  1. Проверьте, что webhook установлен:
https://api.telegram.org/bot<TELEGRAM_BOT_TOKEN>/getWebhookInfo
Description
No description provided
Readme 292 KiB
Languages
Python 99.5%
Dockerfile 0.5%