Andrey Epifancev 50e588b6bd contracts: subject'ы NATS как в старом АРМ — files.*_uploaded, files.tabular_parsed (#74)
Решение владельца 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
2026-10-08 23:34:01 +04:00

45 lines
3.4 KiB
Markdown
Raw 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.

## 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` — справочное поле.