# 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`. ```bash kubectl apply -k k8s ``` Миграции выполняются entrypoint-ом контейнера перед запуском процессов. ## Структура ```text 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/ манифесты для портала ```