41 lines
3.1 KiB
Markdown
41 lines
3.1 KiB
Markdown
## 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); здесь — его часть для `tabular-parser` (RSHB/arm-tabular-parser#31).
|
||
|
||
Срез: вне плана срезов `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` (queue group `tabular-parser`), публикует ack и результат в `result` — по настройкам; константы `contract/subjects.py` — только умолчания.
|
||
- Лог при старте и `/healthcheck.subjects` (`tabular_request`, `result`), независимо от состояния NATS.
|
||
- Тесты roundtrip (`tests/integration/test_roundtrip.py`) задают собственные subject'ы через настройки (OQ-83).
|
||
- `.env.example`, README.
|
||
|
||
## Non-goals
|
||
|
||
- `schema_version` контракта и копии схем не меняются (кроме побайтной синхронизации `description` из docs, если она
|
||
изменится).
|
||
- Queue group'ы — константы; механизм nkeys/JWT не меняется.
|
||
- Пароли MinIO/SMB в `SecretStr` не переводятся.
|
||
- Настройка через `OPENBAO__APP__*` не вводится.
|
||
|
||
## Capabilities
|
||
|
||
### New Capabilities
|
||
|
||
### Modified Capabilities
|
||
- `tabular-recognition-service`: subject'ы обмена и учётные данные NATS — настройки окружения; `/healthcheck.subjects`.
|
||
|
||
## Impact
|
||
|
||
Файлы: `api/src/core/config.py`, `api/src/contract/subjects.py`, `api/src/core/nats.py`, `api/src/core/worker.py`, `api/src/app.py` (`/healthcheck`, лог старта), тесты (`tests/unit/test_config*.py`, `tests/unit/test_nats.py`, `tests/unit/test_app.py`, `tests/integration/test_roundtrip.py`), `api/.env.example`, README. Выкат обратно совместим (умолчания — текущие имена); набор окружения задаётся одинаково всем трём
|
||
сервисам.
|