3.1 KiB
Why
Прод и тест будут работать с разными наборами subject'ов NATS и разными JWT; платформа передаёт в под только
OPENBAO__*. Сейчас subject'ы — константы api/src/contract/subjects.py. Решение владельца 12.10.2026: subject'ы и
JWT задаются по окружению секретами группы OPENBAO__NATS__, как в RSHB/armka_file_worker. Сквозной change —
../docs/openspec/changes/nats-env-config (RSHB/arm-ka-docs#80); здесь — его часть для arm-core (RSHB/arm-core#106).
Срез: вне плана срезов 09-delivery-plan.md — подготовка к контуру. Таблицы DBML v5.17 не затрагиваются
(recognition_job.request_subject по-прежнему хранит фактический subject публикации).
What Changes
NATSSettings:NATS_TABULAR_REQUEST_SUBJECT(files.tabular_uploaded),NATS_IMAGE_REQUEST_SUBJECT(files.img_uploaded),NATS_RESULT_SUBJECT(files.tabular_parsed); проверка всех трёх при старте (непустые, без пробелов,*,>и пустых токенов, попарно различны).NATS_JWT,NATS_SEED—SecretStr;Settings(hide_input_in_errors=True).- Ядро публикует запросы в
tabular_requestиimage_request, подписан наresult(queue grouparm-core) — по настройкам; константыcontract/subjects.py— только умолчания. - Лог при старте и
/healthcheck.subjects(tabular_request,image_request,result), независимо от состояния NATS. - e2e (
tests/e2e/) остаётся на subject'ах по умолчанию: ему нужен контейнерtabular-parserстенда (docs design R-7). .env.example, README.
Non-goals
schema_versionконтракта и копии схем не меняются (кроме побайтной синхронизацииdescriptionиз docs, если она изменится).- Queue group'ы — константы; механизм nkeys/JWT не меняется.
- Пароли MinIO/SMB в
SecretStrне переводятся. - Настройка через
OPENBAO__APP__*не вводится.
Capabilities
New Capabilities
Modified Capabilities
recognition-job-exchange: subject'ы обмена и учётные данные NATS — настройки окружения;/healthcheck.subjects.
Impact
Файлы: api/src/core/config.py, api/src/contract/subjects.py, api/src/core/nats.py, api/src/services/recognition_exchange.py, api/src/services/primary_files.py, api/src/app.py (/healthcheck, лог старта), тесты (tests/test_config*.py, tests/test_nats_*.py, tests/e2e/), api/.env.example, README. Выкат обратно совместим (умолчания — текущие имена); набор окружения задаётся одинаково всем трём
сервисам.