3.0 KiB
monitoring-tg
Backend-сервис мониторинга Telegram-каналов для Portal. Публичный API и AI-классификация работают на Go, Python оставлен только как внутренний MTProto/Telethon-адаптер для авторизации, опроса каналов и дозагрузки медиа. Сервис сохраняет сообщения в Postgres, раскладывает каналы по вертикалям/подразделам и выполняет AI-анализ через OpenAI-compatible endpoint, общий с другими сервисами портала.
Пользовательский UI живёт в portal/frontend/src/app/features/monitoring-tg.
Этот сервис не отдаёт отдельные HTML-страницы и работает как API/worker за
портальным прокси /api/monitoring-tg.
Доступ
- Админские операции остаются за ролью
adminв Portal: portal прокидываетX-User-Is-Admin=1. - Отдел видит только свои подразделы, каналы, сообщения и промпты через
X-User-Department-Id. - Руководитель отдела может создавать и редактировать подразделы своего отдела:
portal прокидывает
X-User-Is-Department-Head=1. - Пароли подразделов и IP allowlist удалены.
Конфигурация
Сервис рассчитан на запуск только в k8s. Настройки хранятся в
k8s/configmap.yaml, секреты — в k8s/secrets.yaml. Локальный .env не
используется.
Локального админ-пароля нет: админские API доступны только через роль admin
в Portal.
Запуск в k8s
Манифесты лежат в k8s/. Перед применением нужно заполнить k8s/secrets.yaml
реальными Telegram-кредами и, при необходимости, LLM_API_KEY.
kubectl apply -k k8s
Миграции выполняются entrypoint-ом контейнера перед запуском процессов.
Структура
src/parser_bot/
├── api/ внутренние FastAPI роуты Telegram-адаптера
├── db/ SQLAlchemy модели + сессии
├── scheduler/ APScheduler-воркер периодического опроса
├── telegram/ Telethon-клиент
├── config.py pydantic-settings
└── main.py FastAPI lifespan + uvicorn для внутреннего адаптера
cmd/server/ Go API для Portal
cmd/classifier/ Go-воркер фоновой LLM-классификации сообщений
alembic/ миграции
k8s/ манифесты для портала