# Пример локального окружения. Скопируйте в api/.env: cp .env.example .env # Порты и учётные данные — стандартные для docs/dev/docker-compose.yml (`make up`: NATS 4222, MinIO 9000). # Сервис без БД: видит только NATS и S3. # Контур платформы: обычные переменные окружения там задать нельзя, передаются только секреты OpenBao (OPENBAO__*). # Любая настройка верхнего уровня ниже (не вложенные OPENBAO__<ГРУППА>__*) может прийти как OPENBAO__APP__<ИМЯ>, например: # OPENBAO__APP__PARSE_TIMEOUT_SECONDS=300 # OPENBAO__APP__NATS_ENABLED=true # Приоритет: обычный env -> OPENBAO__APP__* -> .env -> значение по умолчанию. Неизвестное имя — ошибка при старте. # В .env-файле OPENBAO__APP__* не читается (только процесс окружения). DEBUG=true # Dev-запуск слушает только loopback. По умолчанию приложения (без этих строк) — 0.0.0.0:8000, как в контейнере платформы. SERVER__HOST=127.0.0.1 SERVER__PORT=8000 # MinIO (адрес без схемы — так ждёт miniopy-async). Один бакет для входных файлов и результатов. OPENBAO__MINIO__MINIO_URL=localhost:9000 OPENBAO__MINIO__MINIO_ADMIN_LOGIN=minioadmin OPENBAO__MINIO__MINIO_ADMIN_PASSWORD=minioadmin OPENBAO__MINIO__MINIO_BUCKET=arm-ka # false — MinIO по http (docker compose); по умолчанию true (https, как на платформе) OPENBAO__MINIO__MINIO_SECURE=false # NATS без JetStream; пустые NATS_SEED/NATS_JWT — подключение без nkeys OPENBAO__NATS__NATS_URL=nats://localhost:4222 OPENBAO__NATS__NATS_SEED= OPENBAO__NATS__NATS_JWT= # Subject'ы (необязательно; значения ниже — по умолчанию). Запрос tabular — подписка, результат — публикация. # Image-запрос слушает scan-gateway; здесь ключ нужен только для единого набора OPENBAO__NATS__* # OPENBAO__NATS__NATS_TABULAR_REQUEST_SUBJECT=files.tabular_uploaded # OPENBAO__NATS__NATS_IMAGE_REQUEST_SUBJECT=files.img_uploaded # OPENBAO__NATS__NATS_RESULT_SUBJECT=files.tabular_parsed # Необязательные настройки (значения ниже — значения по умолчанию из src/core/config.py) # Префикс путей приложения за прокси и версия в OpenAPI ROOT_PATH=/ VERSION=1.0.0 # `service.name` конвертов контракта; допустимо только tabular-parser (иное — ошибка старта). Queue group NATS — # константа в коде (`tabular-parser`), этой настройкой не меняется SERVICE_NAME=tabular-parser # false — не подключаться к NATS (воркер не стартует; /healthcheck отдаёт nats = off) NATS_ENABLED=true # Число заданий, обрабатываемых одновременно WORKER_CONCURRENCY=1 # Повторы публикации ack и результата в NATS после первой попытки (3 — всего до 4 попыток, пауза 2 с; 0 — без повторов) PUBLISH_RETRIES=3 # Размер process-local LRU обработанных job_id (защита от дублей доставки) DONE_CACHE_SIZE=1000 # Лимиты разбора: размер файла в байтах (больше — UNSUPPORTED_FORMAT, книга не открывается; 52428800 = 50 МиБ) # и время разбора одного файла в секундах (больше — TIMEOUT); оба ниже reply_deadline ядра (5 мин) PARSE_MAX_BYTES=52428800 PARSE_TIMEOUT_SECONDS=120