41 lines
2.0 KiB
Markdown
41 lines
2.0 KiB
Markdown
# 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`
|
||
|
||
## Запуск
|
||
|
||
```bash
|
||
python -m venv .venv
|
||
. .venv/Scripts/activate
|
||
pip install -r requirements.txt
|
||
uvicorn main:app --host 0.0.0.0 --port 8080 --reload
|
||
```
|
||
|
||
## Переменные окружения
|
||
|
||
- `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` и задайте общий секрет.
|