Enhance Docker setup and user notification features
CI / Backend (build + test) (push) Failing after 1m35s
CI / Frontend (lint + typecheck + build) (push) Successful in 35s

- Updated docker-compose.yml to include environment variables and health checks for the app service.
- Modified Dockerfile to install curl for health checks and adjusted the build process for backend services.
- Improved user notification handling in activation, blocking, and config revocation commands by integrating Telegram notifications.
- Added new test cases to validate the updated command handlers and Telegram notifier functionality.
- Enhanced documentation to reflect the new Telegram bot features and user management improvements.
This commit is contained in:
Leonid Pershin
2026-07-02 01:16:53 +03:00
parent 7b6fe9ad78
commit ed07221ca5
15 changed files with 404 additions and 34 deletions
+9 -8
View File
@@ -16,9 +16,10 @@ Telegram-бот — **второй канал доставки** (presentation-
о запросе активации с комментарием заявителя и жмёт «Активировать / Отклонить» прямо в боте.
5. **DM-уведомления пользователю** — если Telegram привязан, бот шлёт личные уведомления о ключевых
событиях: «аккаунт активирован», «конфиг отозван админом», «вы заблокированы».
6. **Восстановление пароля**если пароль забыт, привязанный пользователь через бота получает
одноразовую ссылку на страницу задания нового пароля (или входит passwordless и меняет пароль в
настройках). Без привязки Telegram восстановление делает только админ.
6. **Восстановление пароля**реализовано через passwordless-вход: привязанный пользователь входит
через бота (`/login`) и меняет пароль в настройках (`ChangePasswordCommand`). Без привязки
Telegram сброс делает только админ (`ResetUserPasswordCommand`). Отдельная команда бота
`/resetpassword` с одноразовой ссылкой на смену пароля — **backlog**, в MVP не реализована.
> **Скоуп бота в MVP — просмотр (read-only) по конфигам.** Создание/ротация/отзыв конфигов — только
> на сайте. Полное самообслуживание в боте (создание/отзыв) — в backlog.
@@ -104,18 +105,18 @@ Telegram ──updates──► TelegramBotHostedService (Api)
| Команда / кнопка | Действие | Требует привязки |
| ---------------------- | -------------------------------------------------------------- | ---------------- |
| `/start` | Приветствие + меню (Открыть сайт / Мои конфиги / Войти) | нет |
| `/start` | Приветствие + справка по командам | нет |
| `/start link_<t>` | Привязка аккаунта по токену | нет |
| `/start login_<n>` | Подтверждение passwordless-входа | да |
| «Открыть сайт» | Ссылка на веб-панель (опц. одноразовый auto-login deep link) | нет / да |
| `/start login_<n>` | Подтверждение passwordless-входа (deep-link с сайта) | да |
| `/configs` | Список конфигов | да |
| `/login` | Инициировать/подтвердить вход | да |
| `/resetpassword` | Одноразовая ссылка на смену пароля (восстановление) | да |
| `/unlink` | Отвязать Telegram от аккаунта | да |
| `/help` | Справка | нет |
| «Активировать/Отклонить» | (admin) решение по запросу активации | админ по env |
| `/requests` | (admin) список ожидающих запросов активации | админ по env |
> Passwordless-вход и `/resetpassword` инициируются с сайта (кнопка «Войти через Telegram»),
> не отдельной командой бота — см. пункт 6 выше про `/resetpassword` (backlog).
## Безопасность
- Токены привязки и nonce входа: высокоэнтропийные, **короткоживущие** (≈25 мин), **одноразовые**.