59 lines
3.0 KiB
Markdown
59 lines
3.0 KiB
Markdown
# 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/ манифесты для портала
|
||
```
|