From 89c14542bc291c704d22b82c0efd49da846cf897 Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Thu, 8 Oct 2026 23:50:30 +0400 Subject: [PATCH] =?UTF-8?q?openspec:=20=D0=B0=D1=80=D1=85=D0=B8=D0=B2=20na?= =?UTF-8?q?ts-files-subjects=20(#22)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change слит PR #23; спеки обновлены (subject'ы files.tabular_uploaded, files.img_uploaded, files.tabular_parsed). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2 --- .../2026-10-08-nats-files-subjects}/.openspec.yaml | 0 .../2026-10-08-nats-files-subjects}/design.md | 0 .../2026-10-08-nats-files-subjects}/proposal.md | 0 .../specs/image-recognition-gateway/spec.md | 0 .../2026-10-08-nats-files-subjects}/tasks.md | 0 openspec/specs/image-recognition-gateway/spec.md | 6 +++--- 6 files changed, 3 insertions(+), 3 deletions(-) rename openspec/changes/{nats-files-subjects => archive/2026-10-08-nats-files-subjects}/.openspec.yaml (100%) rename openspec/changes/{nats-files-subjects => archive/2026-10-08-nats-files-subjects}/design.md (100%) rename openspec/changes/{nats-files-subjects => archive/2026-10-08-nats-files-subjects}/proposal.md (100%) rename openspec/changes/{nats-files-subjects => archive/2026-10-08-nats-files-subjects}/specs/image-recognition-gateway/spec.md (100%) rename openspec/changes/{nats-files-subjects => archive/2026-10-08-nats-files-subjects}/tasks.md (100%) diff --git a/openspec/changes/nats-files-subjects/.openspec.yaml b/openspec/changes/archive/2026-10-08-nats-files-subjects/.openspec.yaml similarity index 100% rename from openspec/changes/nats-files-subjects/.openspec.yaml rename to openspec/changes/archive/2026-10-08-nats-files-subjects/.openspec.yaml diff --git a/openspec/changes/nats-files-subjects/design.md b/openspec/changes/archive/2026-10-08-nats-files-subjects/design.md similarity index 100% rename from openspec/changes/nats-files-subjects/design.md rename to openspec/changes/archive/2026-10-08-nats-files-subjects/design.md diff --git a/openspec/changes/nats-files-subjects/proposal.md b/openspec/changes/archive/2026-10-08-nats-files-subjects/proposal.md similarity index 100% rename from openspec/changes/nats-files-subjects/proposal.md rename to openspec/changes/archive/2026-10-08-nats-files-subjects/proposal.md diff --git a/openspec/changes/nats-files-subjects/specs/image-recognition-gateway/spec.md b/openspec/changes/archive/2026-10-08-nats-files-subjects/specs/image-recognition-gateway/spec.md similarity index 100% rename from openspec/changes/nats-files-subjects/specs/image-recognition-gateway/spec.md rename to openspec/changes/archive/2026-10-08-nats-files-subjects/specs/image-recognition-gateway/spec.md diff --git a/openspec/changes/nats-files-subjects/tasks.md b/openspec/changes/archive/2026-10-08-nats-files-subjects/tasks.md similarity index 100% rename from openspec/changes/nats-files-subjects/tasks.md rename to openspec/changes/archive/2026-10-08-nats-files-subjects/tasks.md diff --git a/openspec/specs/image-recognition-gateway/spec.md b/openspec/specs/image-recognition-gateway/spec.md index 5fe145e..ee09274 100644 --- a/openspec/specs/image-recognition-gateway/spec.md +++ b/openspec/specs/image-recognition-gateway/spec.md @@ -17,8 +17,8 @@ SHALL хватать `OPENBAO__MINIO__*`, `OPENBAO__NATS__NATS_URL`, `SCAN_HOTFO - **THEN** `GET /healthcheck` → 200 с полями `uptime`, `version`, `nats`, `hotfolder = ok`; `OPENBAO__SMB__*` не требуются ### Requirement: Подтверждение запроса до обработки -Сервис SHALL быть подписан на `recognition.image.request` в queue group `scan-gateway`. Получив запрос, проходящий схему, -сервис SHALL до чтения файла из S3 опубликовать в `recognition.result` конверт `status = processing` +Сервис SHALL быть подписан на `files.img_uploaded` в queue group `scan-gateway`. Получив запрос, проходящий схему, +сервис SHALL до чтения файла из S3 опубликовать в `files.tabular_parsed` конверт `status = processing` (`service.name = "scan-gateway"`, `Nats-Msg-Id = ack::`). Повторный запрос с `job_id`, который уже обрабатывается или обработан этим процессом, SHALL получить повторный ack, и второй файл во входящий каталог MUST NOT записываться. @@ -88,7 +88,7 @@ SHALL хватать `OPENBAO__MINIO__*`, `OPENBAO__NATS__NATS_URL`, `SCAN_HOTFO - **THEN** в `files` для него `response = null`, `parse_error` непустой; остальные файлы разобраны, задание не падает ### Requirement: Результат по контракту -Сервис SHALL публиковать в `recognition.result` конверт по `recognition-result-message.schema.json` с +Сервис SHALL публиковать в `files.tabular_parsed` конверт по `recognition-result-message.schema.json` с `service.name = "scan-gateway"`, `Nats-Msg-Id = result::`; при `status ∈ {done, needs_check}` — файл результата (`recognition-result.schema.json`, `schema_version = "1.0"` — `CONTRACT_VERSION` сервиса, решение №14; схема допускает любой MINOR) в `results/{file_id}/{job_id}/result.json` и `result_s3`; при неудаче публикации SHALL повторить её до трёх раз. Нормализатор получает склеенный ответ и SHALL считать файл