NATS: subject'ы как в старом АРМ — files.*_uploaded, files.tabular_parsed (#28) #29

Merged
aep merged 1 commits from feat/28-nats-files-subjects into main 2026-10-08 22:48:24 +03:00
Owner

Closes #28

Что сделано

Решение владельца 08.10.2026: subject'ы NATS — как в старом АРМ, используем три из четырёх прод-топиков.

Поток Было Стало
запрос tabular recognition.tabular.request files.tabular_uploaded
запрос image recognition.image.request files.img_uploaded
ack и результат (оба сервиса) recognition.result files.tabular_parsed

files.img_parsed не используется. Тела сообщений, Nats-Msg-Id, queue group'ы и schema_version не меняются.

Связанные PR (сливать и выкатывать вместе — старые и новые имена на шине несовместимы): RSHB/arm-ka-docs, RSHB/arm-core,
RSHB/arm-tabular-parser, RSHB/arm-scan-gateway — ветки feat/<issue>-nats-files-subjects; issue docs#74, core#77,
tabular-parser#28, scan-gateway#22.

Проверка

  • docs: validate_contracts.py — 10 примеров валидны; openspec validate --all --strict — 4 passed.
  • arm-core: make check — 1268 passed; make test-integration — 850 passed. e2e не запускался (O-1).
  • tabular-parser: make check — 2252 passed; make test-integration — 10 passed.
  • scan-gateway: make check — 1043 passed; make test-integration — 11 passed.

Rulings I made

  • R-1 (design #1): маршрут — OpenSpec change nats-files-subjects в каждом репозитории (спеки называют subject'ы), код — по .bounded без плана SDD.
  • R-2 (design #2): schema_version не меняется — тела сообщений те же, требование «Версионирование контракта» касается полей.
  • R-3 (design #3): DBML v5.17 не поднимается ради двух заметок (DECISION-4, note recognition_job.request_subject) — обновить в следующей версии DBML.
  • R-4 (design #4): subject'ы остаются константами, в настройки не выносятся (OQ-83 отдельно).
  • R-5 (design #5): историю не переписываем (OQ-69/OQ-83, архив OpenSpec, планы superpowers).

Находки

Маркер Находка Статус
R-1…R-2, R-4…R-5 рулинги выше fixed (в этой ветке)
R-3 заметки DBML v5.17 называют старые subject'ы deferred
O-1 e2e arm-core не прогнан: контейнеры стенда (tabular-parser, scan-gateway) собраны из main со старыми subject'ами; после слияния пересобрать все три сервиса стенда разом и прогнать make e2e deferred

Что остаётся человеку

  • Погасить старый АРМ до выката: иначе его обработчики получат копию каждого запроса на files.*_uploaded.
  • Убедиться, что в JWT NATS есть права на files.tabular_uploaded, files.img_uploaded (pub ядро / sub сервисы) и files.tabular_parsed (pub сервисы / sub ядро).

🤖 Generated with Claude Code

https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2

Closes #28 ## Что сделано Решение владельца 08.10.2026: subject'ы NATS — как в старом АРМ, используем три из четырёх прод-топиков. | Поток | Было | Стало | |---|---|---| | запрос `tabular` | `recognition.tabular.request` | `files.tabular_uploaded` | | запрос `image` | `recognition.image.request` | `files.img_uploaded` | | ack и результат (оба сервиса) | `recognition.result` | `files.tabular_parsed` | `files.img_parsed` не используется. Тела сообщений, `Nats-Msg-Id`, queue group'ы и `schema_version` не меняются. Связанные PR (сливать и выкатывать вместе — старые и новые имена на шине несовместимы): RSHB/arm-ka-docs, RSHB/arm-core, RSHB/arm-tabular-parser, RSHB/arm-scan-gateway — ветки `feat/<issue>-nats-files-subjects`; issue docs#74, core#77, tabular-parser#28, scan-gateway#22. ## Проверка - docs: `validate_contracts.py` — 10 примеров валидны; `openspec validate --all --strict` — 4 passed. - arm-core: `make check` — 1268 passed; `make test-integration` — 850 passed. e2e не запускался (O-1). - tabular-parser: `make check` — 2252 passed; `make test-integration` — 10 passed. - scan-gateway: `make check` — 1043 passed; `make test-integration` — 11 passed. ## Rulings I made - R-1 (design #1): маршрут — OpenSpec change `nats-files-subjects` в каждом репозитории (спеки называют subject'ы), код — по `.bounded` без плана SDD. - R-2 (design #2): `schema_version` не меняется — тела сообщений те же, требование «Версионирование контракта» касается полей. - R-3 (design #3): DBML v5.17 не поднимается ради двух заметок (`DECISION-4`, note `recognition_job.request_subject`) — обновить в следующей версии DBML. - R-4 (design #4): subject'ы остаются константами, в настройки не выносятся (OQ-83 отдельно). - R-5 (design #5): историю не переписываем (OQ-69/OQ-83, архив OpenSpec, планы superpowers). ## Находки | Маркер | Находка | Статус | |---|---|---| | R-1…R-2, R-4…R-5 | рулинги выше | fixed (в этой ветке) | | R-3 | заметки DBML v5.17 называют старые subject'ы | deferred | | O-1 | e2e arm-core не прогнан: контейнеры стенда (tabular-parser, scan-gateway) собраны из main со старыми subject'ами; после слияния пересобрать все три сервиса стенда разом и прогнать `make e2e` | deferred | ## Что остаётся человеку - Погасить старый АРМ до выката: иначе его обработчики получат копию каждого запроса на `files.*_uploaded`. - Убедиться, что в JWT NATS есть права на `files.tabular_uploaded`, `files.img_uploaded` (pub ядро / sub сервисы) и `files.tabular_parsed` (pub сервисы / sub ядро). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
aep added 1 commit 2026-10-08 22:47:11 +03:00
Решение владельца 08.10.2026: recognition.tabular.request → files.tabular_uploaded,
recognition.image.request → files.img_uploaded, recognition.result →
files.tabular_parsed (общий subject ack и результатов; files.img_parsed не
используется). Тела сообщений, Nats-Msg-Id, queue group'ы и schema_version не
меняются. Константы api/src/contract/subjects.py, докстринги, тесты, README,
CLAUDE.md; копии схем api/contracts/ из docs/contracts/ побайтно; change
nats-files-subjects с дельтой спеки. Сквозной change — RSHB/arm-ka-docs#74.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
aep merged commit 46ef814b10 into main 2026-10-08 22:48:24 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-tabular-parser#29
No description provided.