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

Merged
aep merged 2 commits from feat/74-nats-files-subjects into main 2026-10-08 22:47:52 +03:00
Owner

Closes #74

Что сделано

Решение владельца 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 #74 ## Что сделано Решение владельца 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 2 commits 2026-10-08 22:47:03 +03:00
Решение владельца 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
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
aep merged commit d44e4fcb0b into main 2026-10-08 22:47:52 +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-ka-docs#77
No description provided.