Конфигурация¶
Принцип работы¶
Все настройки серверной части считываются из переменных окружения при запуске приложения. Для этого используется библиотека Pydantic Settings, которая автоматически находит переменные по имени и приводит их к нужному типу.
Если переменная не задана, используется значение по умолчанию. Все имена переменных нечувствительны к регистру (можно писать как MONGODB_URL, так и mongodb_url).
Дополнительно настройки можно указать в файле .env в корневом каталоге серверной части --- он будет прочитан автоматически.
Настройки кэшируются при первом обращении и не перечитываются до перезапуска приложения.
Переменные окружения¶
Подключение к MongoDB¶
| Переменная | Тип | По умолчанию | Описание |
|---|---|---|---|
MONGODB_URL |
строка | mongodb://localhost:27017 |
Адрес подключения к серверу MongoDB |
MONGODB_DATABASE |
строка | smart_doc_matcher |
Имя базы данных |
Подключение к MinIO¶
| Переменная | Тип | По умолчанию | Описание |
|---|---|---|---|
MINIO_ENDPOINT |
строка | localhost:9000 |
Внутренний адрес MinIO (для операций загрузки и скачивания) |
MINIO_PUBLIC_ENDPOINT |
строка | localhost:9000 |
Публичный адрес MinIO (для формирования временных ссылок на скачивание) |
MINIO_ACCESS_KEY |
строка | minioadmin |
Ключ доступа к MinIO |
MINIO_SECRET_KEY |
строка | minioadmin |
Секретный ключ MinIO |
MINIO_SECURE |
логическое | false |
Использовать ли защищённое соединение (HTTPS) при обращении к MinIO |
Имена хранилищ MinIO¶
| Переменная | Тип | По умолчанию | Описание |
|---|---|---|---|
BUCKET_UPLOADS |
строка | uploads |
Хранилище для исходных загруженных файлов |
BUCKET_DOCUMENTS |
строка | documents |
Хранилище для изображений страниц после обработки |
BUCKET_PREVIEWS |
строка | previews |
Хранилище для миниатюр страниц |
Помимо этих трёх, при запуске автоматически создаётся хранилище originals --- оно используется для архива оригиналов файлов.
Распознавание через Claude¶
| Переменная | Тип | По умолчанию | Описание |
|---|---|---|---|
ANTHROPIC_API_KEY |
строка | (пустая) | Ключ доступа к Anthropic для обращений к Claude |
CLAUDE_MODEL |
строка | claude-haiku-4-5-20251001 |
Идентификатор модели Claude, используемой для распознавания |
Режим и параметры обработки¶
| Переменная | Тип | По умолчанию | Описание |
|---|---|---|---|
PROCESSING_MODE |
строка | batch |
Режим обработки: sync (немедленная отправка каждого документа) или batch (накопление и пакетная отправка) |
OCR_WORKERS |
целое число | 1 |
Количество параллельных операций распознавания текста. Рекомендуется устанавливать на единицу меньше числа доступных процессорных ядер |
BATCH_SIZE |
целое число | 30 |
Количество заданий в одном пакете при пакетной обработке |
POLL_INTERVAL |
целое число | 10 |
Интервал (в секундах) между проверками готовности результатов пакетной обработки |
RESULT_WORKERS |
целое число | 3 |
Количество параллельных заданий при обработке результатов пакета |
MAX_CONCURRENT_MB |
целое число | 300 |
Ограничение суммарного размера PDF-файлов, одновременно находящихся в оперативной памяти (в мегабайтах). Предотвращает исчерпание памяти при обработке большого количества крупных файлов |
Рекомендации по масштабированию:
| Число процессорных ядер | OCR_WORKERS |
BATCH_SIZE |
|---|---|---|
| 2 | 1 | 30 |
| 4 | 2--3 | 50 |
| 8 | 4--6 | 100 |
Распознавание текста через GCP Vision¶
| Переменная | Тип | По умолчанию | Описание |
|---|---|---|---|
GCP_VISION_ENABLED |
логическое | false |
Включить ли распознавание текста через Google Cloud Vision (резервный вариант) |
GCP_CREDENTIALS_PATH |
строка | (пустая) | Путь к файлу учётных данных Google Cloud |
Очередь задач (Redis и Celery)¶
| Переменная | Тип | По умолчанию | Описание |
|---|---|---|---|
REDIS_URL |
строка | redis://localhost:6379/0 |
Адрес подключения к Redis. Используется и как брокер задач Celery, и как хранилище результатов |
Сетевые параметры серверной части¶
| Переменная | Тип | По умолчанию | Описание |
|---|---|---|---|
BACKEND_HOST |
строка | 0.0.0.0 |
Адрес, на котором серверная часть принимает входящие соединения |
BACKEND_PORT |
целое число | 8000 |
Порт серверной части |
Настройки Celery¶
Помимо переменных окружения, фоновый обработчик Celery использует фиксированные параметры, заданные в celery_app.py:
| Параметр | Значение | Описание |
|---|---|---|
| Формат данных | JSON | Все задачи и результаты передаются в формате JSON |
| Мягкий предел времени | 35 минут | По истечении этого срока задача получает сигнал на завершение |
| Жёсткий предел времени | 40 минут | По истечении этого срока задача принудительно останавливается |
| Время хранения результатов | 1 час | После этого результат удаляется из Redis |
| Количество задач наперёд | 1 | Обработчик берёт ровно одну задачу за раз (важно для тяжёлых операций) |
| Подтверждение выполнения | После завершения | Задача считается полученной только после успешного выполнения; при сбое она будет повторена |
Где задаются переменные на боевом сервере¶
На боевом сервере переменные окружения указываются в файле docker-compose.yml в секции environment соответствующего сервиса.
Пример:
backend:
environment:
- MONGODB_URL=mongodb://mongodb:27017
- MONGODB_DATABASE=smart_doc_matcher
- MINIO_ENDPOINT=minio:9000
- MINIO_PUBLIC_ENDPOINT=alfainft-minio.monroe-tech.ru
- MINIO_SECURE=true
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- PROCESSING_MODE=batch
- OCR_WORKERS=1
- BATCH_SIZE=30
- POLL_INTERVAL=10
Секретные значения (ключи доступа) рекомендуется выносить в отдельный файл .env, который не попадает в систему управления версиями.