# ============================================================
# requirements.txt – зависимости проекта «Эфцекабот»
# ============================================================
# Версия: 3.0.0
# Дата: 2026-07-01
# ============================================================
#
# Группы зависимостей:
#   - Ядро и XMPP
#   - HTTP и сеть
#   - Конфигурация и окружение
#   - GigaChat API
#   - Обработка документов и файлов
#   - Векторная база данных Qdrant
#   - Токенизация и NLP
#   - База данных PostgreSQL
#   - Веб-скрапинг и парсинг
#   - Переранжирование (кросс-энкодеры)
#   - Тестирование
#   - Инфраструктура (retry, circuit breaker, кэши, логирование)
# ============================================================

# ------------------------------------------------------------------
# 1. Ядро и XMPP
# ------------------------------------------------------------------
slixmpp >= 1.8.5               # XMPP клиент для ботов

# ------------------------------------------------------------------
# 2. HTTP и сеть
# ------------------------------------------------------------------
requests >= 2.31.0             # Синхронные HTTP-запросы (скачивание файлов)
aiohttp >= 3.9.0               # Асинхронный HTTP-клиент для RAG-сервера и веб-скрапера
aiofiles >= 23.0.0             # Асинхронная работа с файлами

# ------------------------------------------------------------------
# 3. Конфигурация и окружение
# ------------------------------------------------------------------
python-dotenv >= 1.0.0         # Загрузка переменных окружения из .env
pyyaml >= 6.0                  # Парсинг YAML-конфигов (rag.conf, bot.conf)

# ------------------------------------------------------------------
# 4. GigaChat API
# ------------------------------------------------------------------
gigachat >= 0.2.1              # Официальный SDK GigaChat (генерация, эмбеддинги)

# ------------------------------------------------------------------
# 5. Обработка документов и файлов
# ------------------------------------------------------------------
python-docx >= 1.1.0           # Чтение/запись DOCX
pypdf >= 4.0.0                 # Чтение PDF
openpyxl >= 3.1.0              # Чтение XLSX
python-pptx >= 0.6.21          # Чтение PPTX
pillow >= 10.0.0               # Обработка изображений (OCR)
pytesseract >= 0.3.10          # OCR (распознавание текста на изображениях)
py7zr >= 0.20.0                # Распаковка 7z архивов

# ------------------------------------------------------------------
# 6. Векторная база данных Qdrant
# ------------------------------------------------------------------
qdrant-client >= 1.9.0         # Клиент Qdrant (синхронный и асинхронный)
fastembed >= 0.4.0             # Генерация sparse-векторов (BM25) для гибридного поиска

# ------------------------------------------------------------------
# 7. Токенизация и NLP
# ------------------------------------------------------------------
tiktoken >= 0.5.0              # Точный подсчёт токенов (для обрезки истории и чанкинга)
razdel >= 0.5.0                # Разбиение русского текста на предложения
mawo-pymorphy3 >= 0.1.0        # Морфологический анализ для хирургической замены

# ------------------------------------------------------------------
# 8. База данных PostgreSQL
# ------------------------------------------------------------------
asyncpg >= 0.29.0              # Асинхронный драйвер PostgreSQL (пул соединений)

# ------------------------------------------------------------------
# 9. Веб-скрапинг и парсинг HTML
# ------------------------------------------------------------------
beautifulsoup4 >= 4.12.0       # Парсинг HTML
lxml >= 4.9.0                  # Быстрый парсер для BeautifulSoup
readability-lxml >= 0.8.1      # Извлечение основного текста из HTML

# ------------------------------------------------------------------
# 10. Переранжирование (кросс-энкодеры)
# ------------------------------------------------------------------
sentence-transformers >= 2.2.0 # Кросс-энкодер для переранжирования контекста

# ------------------------------------------------------------------
# 11. Тестирование
# ------------------------------------------------------------------
pytest >= 8.0.0                # Фреймворк для тестов
pytest-asyncio >= 0.23.0       # Поддержка asyncio в pytest
pytest-mock >= 3.12.0          # Поддержка моков в pytest

# ------------------------------------------------------------------
# 12. HTTP-сервер (RAG-ядро)
# ------------------------------------------------------------------
fastapi >= 0.115.0             # Веб-фреймворк для RAG-сервера
uvicorn >= 0.30.0              # ASGI-сервер для FastAPI
python-multipart >= 0.0.9      # Поддержка multipart/form-data (загрузка файлов)
slowapi >= 0.1.0               # Rate limiting для защиты эндпоинтов

# ------------------------------------------------------------------
# 13. Инфраструктура: retry, circuit breaker, кэши, логирование
# ------------------------------------------------------------------
tenacity >= 8.2.0              # Декоратор для повторных попыток (retry) – используется в giga_client
pybreaker >= 2.1.0             # Circuit breaker для защиты от сбоев внешних API
redis >= 5.0.0                 # Клиент Redis (синхронный, для совместимости)
aioredis >= 2.0.0              # Асинхронный клиент Redis (для кэширования эмбеддингов и SOMA)
python-json-logger >= 2.0.0    # JSON-форматирование логов (для централизованного сбора)