69 lines
2.5 KiB
Markdown
69 lines
2.5 KiB
Markdown
# monitoring-tg
|
||
|
||
Сервис мониторинга Telegram-каналов для портала. Он сохраняет сообщения в
|
||
Postgres, раскладывает каналы по вертикалям/подразделам и выполняет AI-анализ
|
||
через OpenAI-compatible endpoint, общий с другими сервисами портала.
|
||
|
||
## Доступ
|
||
|
||
- Админские операции остаются за админом портала: portal прокидывает
|
||
`X-User-Is-Admin=1`.
|
||
- Отдел видит только свои подразделы, каналы, сообщения и промпты через
|
||
`X-User-Department-Id`.
|
||
- Руководитель отдела может создавать и редактировать подразделы своего отдела:
|
||
portal прокидывает `X-User-Is-Department-Head=1`.
|
||
- Пароли подразделов и IP allowlist удалены.
|
||
|
||
## Конфигурация
|
||
|
||
Основные переменные:
|
||
|
||
```env
|
||
TG_API_ID=
|
||
TG_API_HASH=
|
||
TG_PHONE=
|
||
TG_SESSION_STRING=
|
||
|
||
POSTGRES_HOST=postgres.monitoring-tg.svc.cluster.local
|
||
POSTGRES_PORT=5432
|
||
POSTGRES_USER=parser
|
||
POSTGRES_PASSWORD=parser
|
||
POSTGRES_DB=parser
|
||
|
||
PUBLIC_BASE_PATH=/api/monitoring-tg
|
||
|
||
LLM_ENABLED=true
|
||
LLM_BASE_URL=http://10.2.3.5:8002
|
||
LLM_API_KEY=
|
||
LLM_MODEL=qwen2.5-14b
|
||
```
|
||
|
||
Для локальной админской отладки можно задать `ADMIN_PASSWORD`, но в проде доступ
|
||
должен идти через портал.
|
||
|
||
## Запуск в k8s
|
||
|
||
Манифесты лежат в `k8s/`. Перед применением нужно заполнить `k8s/secrets.yaml`
|
||
реальными Telegram-кредами и, при необходимости, `LLM_API_KEY`.
|
||
|
||
```bash
|
||
kubectl apply -k k8s
|
||
```
|
||
|
||
Миграции выполняются entrypoint-ом контейнера перед запуском API.
|
||
|
||
## Структура
|
||
|
||
```text
|
||
src/parser_bot/
|
||
├── api/ FastAPI роуты + Pydantic-схемы
|
||
├── db/ SQLAlchemy модели + сессии
|
||
├── scheduler/ APScheduler-воркер периодического опроса
|
||
├── telegram/ Telethon-клиент
|
||
├── web/static/ страницы UI без бандлера
|
||
├── config.py pydantic-settings
|
||
└── main.py FastAPI lifespan + uvicorn
|
||
alembic/ миграции
|
||
k8s/ манифесты для портала
|
||
```
|