Решение владельца 08.10.2026: запросы — files.tabular_uploaded / files.img_uploaded
(было recognition.{tabular|image}.request), ack и результаты обоих сервисов —
files.tabular_parsed (было recognition.result); files.img_parsed не используется,
старый АРМ гасится. Тела сообщений, Nats-Msg-Id, queue group'ы и schema_version
не меняются.
Change nats-files-subjects: дельта recognition-contract (3 требования), Purpose
спеки; описания subject'ов в contracts/*.schema.json; 03-architecture (схема,
таблица потоков, NATS платформы), 09-delivery-plan, dev/README, dev/qa-guide,
repo-templates. DBML v5.17 не поднимается (R-3, deferred).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
45 lines
3.4 KiB
Markdown
45 lines
3.4 KiB
Markdown
## Why
|
||
|
||
На проде платформа завела subject'ы NATS старого АРМ: `files.tabular_uploaded`, `files.img_uploaded`,
|
||
`files.tabular_parsed`, `files.img_parsed`. Наш контракт публикует запросы в `recognition.{tabular|image}.request`,
|
||
а ack и результаты — в `recognition.result`; этих subject'ов в правах общего JWT нет. Решение владельца 08.10.2026:
|
||
subject'ы — «правильно как в старом АРМ», используем три (`files.img_parsed` не используем), старый АРМ гасится.
|
||
|
||
Срез: вне плана срезов `09-delivery-plan.md` — подготовка к контуру (инфраструктура NATS платформы).
|
||
|
||
## What Changes
|
||
|
||
- Запрос `tabular` — subject `files.tabular_uploaded` (было `recognition.tabular.request`).
|
||
- Запрос `image` — subject `files.img_uploaded` (было `recognition.image.request`).
|
||
- Ack `processing` и результаты обоих сервисов — общий subject `files.tabular_parsed` (было `recognition.result`).
|
||
- Тела сообщений, `Nats-Msg-Id`, queue group'ы, `schema_version` и файл результата не меняются.
|
||
- Документы: `03-architecture.md` (схема, таблица потоков, NATS платформы), `09-delivery-plan.md`, `dev/README.md`,
|
||
`dev/qa-guide.md`, `repo-templates/*.CLAUDE.md`, описания subject'ов в `contracts/*.schema.json`.
|
||
|
||
Читают и пишут контракт: `arm-core` (публикует запросы, подписан на результат), `tabular-parser` и `scan-gateway`
|
||
(подписаны на свой запрос, публикуют ack и результат). Дочерние change'и `nats-files-subjects`:
|
||
RSHB/arm-core#77, RSHB/arm-tabular-parser#28, RSHB/arm-scan-gateway#22. Issue этого репозитория — RSHB/arm-ka-docs#74.
|
||
|
||
## Non-goals
|
||
|
||
- Subject'ы не выносятся в настройки (префикс для тестов — OQ-83, отдельно).
|
||
- `files.img_parsed` не используется, раздельные subject'ы результата по pipeline не вводятся.
|
||
- DBML v5.17 не поднимается: заметки `DECISION-4` и `recognition_job.request_subject` обновятся в следующей версии
|
||
модели (design, решение 3).
|
||
- `schema_version` контракта не меняется (design, решение 2).
|
||
|
||
## Capabilities
|
||
|
||
### New Capabilities
|
||
|
||
### Modified Capabilities
|
||
- `recognition-contract`: имена subject'ов запроса и результата.
|
||
|
||
## Impact
|
||
|
||
- Сервисы: `arm-core`, `tabular-parser`, `scan-gateway` — константы `api/src/contract/subjects.py`, тесты, спеки, README.
|
||
- Копии схем `api/contracts/*.schema.json` в сервисах обновляются побайтно из `docs/contracts/`.
|
||
- Выкат: все три сервиса одновременно (старые и новые имена несовместимы на шине). Задания, опубликованные до выката и
|
||
не получившие ack, ядро повторит уже в новый subject: subject вычисляется по `pipeline` при каждой публикации,
|
||
`recognition_job.request_subject` — справочное поле.
|