From e08a69e3e1d39bbc9209babf6f2eb119c6ef689c Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Thu, 8 Oct 2026 23:50:17 +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(#77)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change слит PR #78; спеки обновлены (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/recognition-job-exchange/spec.md | 0 .../2026-10-08-nats-files-subjects}/tasks.md | 0 openspec/specs/recognition-job-exchange/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/recognition-job-exchange/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/recognition-job-exchange/spec.md b/openspec/changes/archive/2026-10-08-nats-files-subjects/specs/recognition-job-exchange/spec.md similarity index 100% rename from openspec/changes/nats-files-subjects/specs/recognition-job-exchange/spec.md rename to openspec/changes/archive/2026-10-08-nats-files-subjects/specs/recognition-job-exchange/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/recognition-job-exchange/spec.md b/openspec/specs/recognition-job-exchange/spec.md index a727a4f..5f6d20f 100644 --- a/openspec/specs/recognition-job-exchange/spec.md +++ b/openspec/specs/recognition-job-exchange/spec.md @@ -16,7 +16,7 @@ #### Scenario: Публикация запроса парсеру - **WHEN** в `recognition_job` вставлена строка `queued` с `pipeline = tabular`, связанная со `stored_file` (XLSX) и его `s3_object` -- **THEN** в течение 10 с в `recognition.tabular.request` появляется сообщение, проходящее схему запроса, с `job_id`, +- **THEN** в течение 10 с в `files.tabular_uploaded` появляется сообщение, проходящее схему запроса, с `job_id`, `file_id`, `s3.key` исходника, `reply_deadline`, `attempt = 1`, а строка переходит в `published` с заполненным `request_msg_id` #### Scenario: NATS недоступен @@ -24,7 +24,7 @@ - **THEN** задание остаётся `queued`, ошибка залогирована, следующий цикл повторяет публикацию ### Requirement: Ack сервиса переводит задание в `processing` -Получив в `recognition.result` конверт со `status = processing` для задания в `published`, ядро SHALL установить +Получив в `files.tabular_parsed` конверт со `status = processing` для задания в `published`, ядро SHALL установить `status = processing`, `started_at`, `service_name`, `service_version` и перевести файл задания в `stored_file.status = PROCESSING`, если `current_recognition_job_id` файла равен этому заданию. Повторный ack для задания в `processing` SHALL игнорироваться; ack для задания в другом статусе SHALL логироваться и не менять задание. @@ -91,7 +91,7 @@ ### Requirement: Соединение с NATS по шаблону, без JetStream Ядро SHALL подключаться к NATS с nkeys-seed и JWT, если заданы `OPENBAO__NATS__NATS_SEED/NATS_JWT`, и без учётных данных, -если они пусты; подписываться на `recognition.result` в queue group `arm-core`; переподключаться автоматически. +если они пусты; подписываться на `files.tabular_parsed` в queue group `arm-core`; переподключаться автоматически. Stream'ы и consumer'ы JetStream MUST NOT требоваться. Фоновые задачи SHALL запускаться при `NATS_ENABLED=true`. #### Scenario: Dev-окружение compose -- 2.47.2