# Пример локального окружения. Скопируйте в api/.env: cp .env.example .env # Порты — стандартные для docs/dev/docker-compose.yml. # Контур платформы: обычные переменные окружения там задать нельзя, передаются только секреты OpenBao (OPENBAO__*). # Любая настройка верхнего уровня ниже (не вложенные OPENBAO__<ГРУППА>__*) может прийти как OPENBAO__APP__<ИМЯ>, например: # OPENBAO__APP__NATS_ENABLED=true # OPENBAO__APP__DB_SCHEMA=dkb # OPENBAO__APP__DEBUG=true # Схема PostgreSQL модели данных (по умолчанию dkb). Одно значение для приложения и Alembic; идентификатор # [a-z_][a-z0-9_]{0,62}, не pg_*. В контуре платформы: OPENBAO__APP__DB_SCHEMA DB_SCHEMA=dkb # OPENBAO__APP__AUTH_DEV_ISSUER=true # OPENBAO__APP__FORWARDED_ALLOW_IPS=10.0.0.1,10.0.0.2 # Приоритет: обычный env -> OPENBAO__APP__* -> .env -> значение по умолчанию. Неизвестное имя — ошибка при старте. # В .env-файле OPENBAO__APP__* не читается (только процесс окружения). DEBUG=true # Dev-запуск слушает только loopback: при DEBUG и AUTH_DEV_ISSUER эндпоинт dev-токенов выдаёт токен любому, кто знает # email пользователя. По умолчанию приложения (без этой строки) — 0.0.0.0, как в контейнере платформы. SERVER__HOST=127.0.0.1 SERVER__PORT=8000 # PostgreSQL (драйвер asyncpg) OPENBAO__DATABASE__DATABASE_URL=postgresql+asyncpg://armka:armka@localhost:5432/armka # 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'ы обмена — по окружению (прод/тест), у трёх сервисов одинаковые; умолчания — имена контракта 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 # SMB необязателен (ядру в Срезе 0 не нужен): пустой SMB_HOST — сессия SMB не регистрируется OPENBAO__SMB__SMB_HOST= OPENBAO__SMB__SMB_PATH= OPENBAO__SMB__SMB_LOGIN= OPENBAO__SMB__SMB_PASSWORD= # CORS при DEBUG=false: источники через запятую или JSON-список; пусто — кросс-доменные запросы запрещены. # При DEBUG=true не используется (CORS `*`); документация API (/docs, /redoc, /openapi.json) — тоже только при DEBUG=true CORS_ORIGINS= # Доверенные прокси (X-Forwarded-For): адреса через запятую или `*`; адрес клиента в audit_event берётся из заголовка # только от них. По умолчанию — 127.0.0.1 FORWARDED_ALLOW_IPS=127.0.0.1 # Аутентификация. Dev-эмитент работает только при AUTH_DEV_ISSUER=true И DEBUG=true. AUTH_DEV_ISSUER=true # ТОЛЬКО ДЛЯ РАЗРАБОТКИ: секрет HS256 dev-эмитента, в проде не использовать AUTH_DEV_SECRET=dev-only-secret-do-not-use-in-production-0123456789 # Проверка токенов РАИСА (прод): JWKS по URL либо публичный ключ PEM AUTH_JWKS_URL= AUTH_PUBLIC_KEY= AUTH_ISSUER= AUTH_AUDIENCE= AUTH_EMAIL_CLAIM=email # Обмен с сервисами распознавания NATS_ENABLED=true OUTBOX_POLL_SECONDS=5 ACK_TIMEOUT_SECONDS=30 OUTBOX_MAX_REPUBLISH=3 # Импорт справочников из выгрузки ЕЦП CRM: предельный размер файла в байтах (20 МБ), больше — ответ 413 IMPORT_MAX_BYTES=20971520 # Загрузка первичных файлов (ББ/ОФР/ОСВ): предельный размер файла в байтах (50 МБ); больший файл отклоняется в # rejected[] с кодом FILE_TOO_LARGE — ответ 201, если принят хотя бы один файл запроса, иначе 422 UPLOAD_MAX_BYTES=52428800 # Маппинг результата распознавания: период опроса готовых заданий (секунды) и число попыток до отметки ошибки MAPPING_POLL_SECONDS=5 MAPPING_MAX_ATTEMPTS=3 # ВРЕМЕННО, для тестов на произвольных ОСВ (arm-core#103): ОСВ, загруженная в консолидацию, считается нарастающей за год и # квартал консолидации, а не за период из шапки. В контуре — OPENBAO__APP__CONSOLIDATION_PERIOD_FROM_VERSION CONSOLIDATION_PERIOD_FROM_VERSION=false