Commit Graph

10 Commits

Author SHA1 Message Date
MpakobecEx f345844dfe Админка закрылась входом через Telegram
Подпись Telegram-логина проверяется токеном бота, а доступ есть только у записей в bot.admin_users: роль перечитывается из БД на каждом запросе, поэтому выключение пользователя сразу закрывает доступ. Сессия — подписанная HttpOnly-cookie на 12 часов, все формы получили CSRF-токен, первые администраторы засеваются из ADMIN_IDS при старте. Домены в BotFather уже заданы, но NPM и публикацию не включаем — снаружи админка по-прежнему только на loopback.
2026-10-19 03:53:23 +05:00
MpakobecEx d695f1991f У админки теперь постоянные порты, которые не спорят с Portainer
Тестовый контур слушает 8100, прод — 8101 на хосте VPS (8000 занят Portainer). Адрес привязки вынесен в ADMIN_BIND_IP: по умолчанию только loopback, а для nginx-proxy-manager ставится 172.17.0.1, чтобы контейнер NPM мог достучаться до админки, но порт не оказался в интернете. Примеры окружений и DEPLOY обновлены.
2026-10-19 03:46:24 +05:00
MpakobecEx 1e4e905f24 Бот берёт тексты из админки, не дожидаясь перезапуска
Шаблоны из message_templates читаются через кеш на 45 секунд (TEMPLATE_CACHE_TTL), поэтому правка в админке доезжает до следующего сообщения или рассылки сама. Если база недоступна или таблицы ещё нет, бот работает на текстах из кода, а неудачный запрос не повторяется на каждом сообщении — админка не может уронить бота. Расписания рассылок теперь ссылаются на ключи шаблонов, а не на строки, так что тексты рассылок тоже редактируются.
2026-10-19 03:37:58 +05:00
MpakobecEx b11676764e У админки появился собственный сервис, а не только место в плане
Каркас FastAPI живёт в admin/ и собирается отдельным образом: главная страница со списком будущих разделов и /healthz для healthcheck, пока без БД и логина. Сервис добавлен в оба compose (порт только на loopback до появления домена), CI теперь собирает и публикует два образа — бота и админку. Настройки админки наследуют общие, но не требуют BOT_TOKEN: сервис запускается, даже пока токен не заполнен.
2026-10-19 03:34:10 +05:00
MpakobecEx a28bd622c7 Бэкап событий переведён на pull с домашнего сервера
CI / lint-test (push) Successful in 16s Details
CI / build-push (push) Successful in 13s Details
- скрипт бэкапа запускается на домашнем сервере и сам забирает вчерашнюю партицию с VPS по ssh
- входящий ssh на домашний сервер больше не нужен, rsync не требуется
- выгрузка идёт через docker compose на VPS, пароль ClickHouse читается из окружения контейнера
- архив пишется сначала во временный файл, импорт идемпотентен, удаление партиций только после сверки
- env/backup.env.example переписан под новые параметры, cron теперь на домашнем сервере
- версия 0.3.7
2026-10-16 15:57:22 +05:00
MpakobecEx dbf78aa1d5 Ежедневный бэкап событий ClickHouse на домашний сервер
- scripts/clickhouse_backup.sh выгружает вчерашнюю партицию в Parquet.gz, передаёт её по rsync, импортирует и сверяет количество строк
- scripts/clickhouse_import.sh импортирует архив в ClickHouse домашнего сервера и повторный импорт дня не дублирует строки
- на VPS удаляются только партиции старше грейса, и только после успешной сверки
- env/backup.env.example с параметрами переноса, цель make backup
- версия 0.3.4
2026-10-16 15:28:25 +05:00
MpakobecEx f85f876a7f Сервис ClickHouse, схема событий и агрегаты
- docker-compose (prod и dev) — контейнер clickhouse 25.3 с volume, ulimits и healthcheck
- порт только на loopback хоста, номер задаётся CLICKHOUSE_HTTP_PORT (test 8124, prod 8123)
- clickhouse/init/001_events.sql — таблица analytics.events с дневными партициями плюс агрегаты events_daily и money_daily
- бот ходит в ClickHouse по имени сервиса и стартует независимо от его готовности
- env-примеры контуров, цель make ch и проверка ClickHouse в check_contour.sh
- версия 0.3.1
2026-10-16 15:21:21 +05:00
MpakobecEx aafb9c9e3b Доработки контуров, тесты конфига и CI
CI / lint-test (push) Successful in 7s Details
CI / build-push (push) Successful in 12s Details
2026-10-16 15:00:08 +05:00
MpakobecEx 9f33831971 Единый CHAT_ID и доступ только участникам чата
CI / lint-test (push) Successful in 8s Details
CI / build-push (push) Successful in 11s Details
2026-10-16 02:05:37 +05:00
MpakobecEx a96793e755 Обёртка в Docker
CI / lint-test (push) Successful in 7s Details
CI / build-push (push) Successful in 8s Details
2026-10-16 01:48:28 +05:00