arm-scan-gateway/api/.env.example

85 lines
7.0 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Локальное окружение scan-gateway. Скопируйте в .env: cp .env.example .env (.env в git не попадает)
# Значения совпадают с ../docs/dev/docker-compose.yml и ../docs/dev/.env (compose: NATS 4222, MinIO 9000, бакет arm-ka);
# это только dev-умолчания. Файл окружения можно выбрать переменной ENV_FILE (по умолчанию .env, путь от каталога api/);
# переменные окружения приоритетнее файла. Тестовый набор — .env.test (его подключает pytest.ini).
# Контур платформы: обычные переменные окружения там задать нельзя, передаются только секреты OpenBao (OPENBAO__*).
# Любая настройка верхнего уровня ниже (не вложенные OPENBAO__<ГРУППА>__*) может прийти как OPENBAO__APP__<ИМЯ>, например:
# OPENBAO__APP__SCAN_HOTFOLDER_MODE=smb
# OPENBAO__APP__NATS_ENABLED=true
# Приоритет: обычный env -> OPENBAO__APP__* -> .env -> значение по умолчанию. Неизвестное имя — ошибка при старте.
# В .env-файле OPENBAO__APP__* не читается (только процесс окружения).
DEBUG=true
# --- MinIO (S3): единственный бакет, в нём лежат входные файлы, raw/{job_id}.json и results/ ---
# Адрес без схемы (host:port) — так ждёт miniopy-async; MinIO из compose работает по http, поэтому MINIO_SECURE=false.
# На платформе MINIO_SECURE не задаётся (по умолчанию true — https).
OPENBAO__MINIO__MINIO_URL=localhost:9000
OPENBAO__MINIO__MINIO_ADMIN_LOGIN=minioadmin
OPENBAO__MINIO__MINIO_ADMIN_PASSWORD=minioadmin
OPENBAO__MINIO__MINIO_BUCKET=arm-ka
OPENBAO__MINIO__MINIO_SECURE=false
# --- NATS (core, без JetStream) ---
# NATS_SEED / NATS_JWT пустые: подключение без nkeys (локальная разработка, тесты). На платформе их выдаёт OpenBAO.
OPENBAO__NATS__NATS_URL=nats://localhost:4222
OPENBAO__NATS__NATS_SEED=
OPENBAO__NATS__NATS_JWT=
# Subject'ы по окружению (прод и тест в одном NATS — разные наборы). Умолчания — имена контракта; у ядра и сервисов
# одного окружения значения обязаны совпадать. Сервис использует запрос `image` и ответ; три имени попарно различны,
# без пробелов, '*' и '>'. Фактические имена видны в логе старта и в /healthcheck.subjects.
# 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
# Включает подписку на subject запроса image (по умолчанию files.img_uploaded). false — воркер не запускается (сервис поднимется без NATS).
NATS_ENABLED=true
# PUBLISH_RETRIES — число повторов публикации ack/результата в NATS после первой попытки (при 3 — до 4 попыток всего);
# DONE_CACHE_SIZE — размер LRU обработанных job_id (защита от повторной доставки запроса)
PUBLISH_RETRIES=3
DONE_CACHE_SIZE=1000
# --- Горячие папки ИС Сканирование ---
# local — обычный каталог (dev, тесты, эмулятор); smb — SMB-шара платформы (нужен блок OPENBAO__SMB__* ниже).
SCAN_HOTFOLDER_MODE=local
# Корень горячей папки в режиме local: каталог должен существовать (mkdir -p .hotfolder).
# Путь считается от каталога api/; его же читает эмулятор.
SCAN_HOTFOLDER_PATH=./.hotfolder
# Подкаталоги корня: «Входящие» (сюда кладётся UUID_имя) и «Исходящие» (оттуда забираются все *.json из <UUID>/)
SCAN_INPUT_DIR=Input
SCAN_OUTPUT_DIR=Output
# Период опроса «Исходящих», секунды
SCAN_POLL_SECONDS=5
# Набор *.json в <UUID>/ считается готовым, когда имена и размеры файлов не менялись столько секунд (>= 0)
SCAN_SETTLE_SECONDS=2
# Потолок ожидания ответа ИС, секунды (дополнительно ограничен reply_deadline запроса; 20 мин — в паре со сроком
# ответа OCR ядра); повторной отправки нет
SCAN_TIMEOUT_SECONDS=1200
# Сколько заданий обрабатывается одновременно
SCAN_MAX_INFLIGHT=4
# Очистка горячей папки после прочтения ответа (D-2): true — удалить всё содержимое Output/<job_id>/, входящий файл
# (и его .done); false (по умолчанию) — ничего не удалять
SCAN_CLEANUP=false
# --- SMB (только при SCAN_HOTFOLDER_MODE=smb; в режиме local весь блок не нужен) ---
# OPENBAO__SMB__SMB_HOST=smb.example.local
# OPENBAO__SMB__SMB_PATH=share/scan
# OPENBAO__SMB__SMB_LOGIN=user
# OPENBAO__SMB__SMB_PASSWORD=password
# --- Эмулятор ИС Сканирование (python -m src.scan_emulator, make emulator; только dev) ---
# Эти параметры читает сам эмулятор, сервис шлюза их не использует. Корень горячей папки и подкаталоги
# эмулятор берёт из SCAN_HOTFOLDER_PATH / SCAN_INPUT_DIR / SCAN_OUTPUT_DIR выше; набор ответа на задание он собирает
# во временном каталоге SCAN_TMP_DIR и переименовывает в <Output>/<uuid>/ целиком (шлюз SCAN_TMP_DIR не читает: файл
# во «Входящие» он пишет сразу, как в старом АРМ).
SCAN_TMP_DIR=Tmp
# Каталог с фикстурами ответов ИС (aep_N.json); путь от api/ (репозиторий fixtures лежит рядом с workspace)
SCAN_FIXTURES_DIR=../../fixtures/ocr
# Задержка перед выдачей ответа, секунды (имитация работы ИС)
SCAN_EMULATOR_DELAY=2
# Период опроса входящего каталога эмулятором, секунды (> 0)
SCAN_EMULATOR_POLL_SECONDS=1
# набор ответа по умолчанию при промахе по содержимому (основа имени фикстуры, например aep_6); пусто — INVALID_DOCUMENT
SCAN_EMULATOR_DEFAULT=