Правки финального ревью: умолчания subject'ов не названы фактическими
M-3: докстринги worker.py не называют умолчание фактическим subject'ом. T7.1: выровнены переносы докстринга core/nats.py. M-5: CLAUDE.md помечает files.tabular_parsed как умолчание. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
0ef4a8a6bc
commit
c10f927730
@ -9,7 +9,7 @@
|
|||||||
распознанный документ), склеить и сохранить сырой ответ в S3 `raw/{job_id}.json` (в БД не регистрируется), очистить
|
распознанный документ), склеить и сохранить сырой ответ в S3 `raw/{job_id}.json` (в БД не регистрируется), очистить
|
||||||
горячую папку (только при `SCAN_CLEANUP=true`), нормализовать в `../docs/contracts/recognition-result.schema.json`
|
горячую папку (только при `SCAN_CLEANUP=true`), нормализовать в `../docs/contracts/recognition-result.schema.json`
|
||||||
(`statementDocument` v1.2: по одному документу на таблицу `table_structure[i]`), опубликовать `files.tabular_parsed`
|
(`statementDocument` v1.2: по одному документу на таблицу `table_structure[i]`), опубликовать `files.tabular_parsed`
|
||||||
(`done` / `needs_check` / `error`). Таймаут → ошибка `TIMEOUT` по `min(reply_deadline, старт + SCAN_TIMEOUT_SECONDS=1200)`,
|
(по умолчанию; задаётся `OPENBAO__NATS__NATS_*_SUBJECT`) (`done` / `needs_check` / `error`). Таймаут → ошибка `TIMEOUT` по `min(reply_deadline, старт + SCAN_TIMEOUT_SECONDS=1200)`,
|
||||||
старт — запись файла во «Входящие». **Нет доступа к БД.**
|
старт — запись файла во «Входящие». **Нет доступа к БД.**
|
||||||
|
|
||||||
## Правила
|
## Правила
|
||||||
|
|||||||
@ -9,10 +9,9 @@
|
|||||||
После переподключения nats-py сам отправляет SUB для всех подписок с прежней queue group — подписку повторно
|
После переподключения nats-py сам отправляет SUB для всех подписок с прежней queue group — подписку повторно
|
||||||
оформлять не нужно.
|
оформлять не нужно.
|
||||||
- `subscribe_requests(cb)` — подписка на subject запроса `image` из настроек
|
- `subscribe_requests(cb)` — подписка на subject запроса `image` из настроек
|
||||||
(`OPENBAO__NATS__NATS_IMAGE_REQUEST_SUBJECT`,
|
(`OPENBAO__NATS__NATS_IMAGE_REQUEST_SUBJECT`, по умолчанию `files.img_uploaded`) в queue group `scan-gateway`:
|
||||||
по умолчанию `files.img_uploaded`) в queue group `scan-gateway`: из нескольких
|
из нескольких инстансов сообщение получает ровно один. `cb` получает исходное сообщение nats-py
|
||||||
инстансов сообщение получает ровно один. `cb` получает исходное сообщение nats-py (`msg.data`, `msg.headers`);
|
(`msg.data`, `msg.headers`); исключения `cb` логируются, подписка живёт.
|
||||||
исключения `cb` логируются, подписка живёт.
|
|
||||||
- `publish(subject, payload, msg_id)` — публикация с заголовком `Nats-Msg-Id` и `flush` (подтверждение сервером) с
|
- `publish(subject, payload, msg_id)` — публикация с заголовком `Nats-Msg-Id` и `flush` (подтверждение сервером) с
|
||||||
повторами на временных ошибках (первая попытка + до `PUBLISH_RETRIES` повторов); исчерпаны — `PublishFailed`.
|
повторами на временных ошибках (первая попытка + до `PUBLISH_RETRIES` повторов); исчерпаны — `PublishFailed`.
|
||||||
Воркер логирует error и идёт дальше: ядро закроет задание по `reply_deadline` (D-7).
|
Воркер логирует error и идёт дальше: ядро закроет задание по `reply_deadline` (D-7).
|
||||||
|
|||||||
@ -107,7 +107,7 @@ class ObjectStorage(Protocol):
|
|||||||
|
|
||||||
|
|
||||||
class ResultPublisher(Protocol):
|
class ResultPublisher(Protocol):
|
||||||
"""Часть `NatsGateway`: публикация конверта в `files.tabular_parsed` с `Nats-Msg-Id` и повторами."""
|
"""Часть `NatsGateway`: публикация конверта в subject ответа с `Nats-Msg-Id` и повторами."""
|
||||||
|
|
||||||
async def publish_result(self, message: RecognitionResultMessage, attempt: int) -> None: ...
|
async def publish_result(self, message: RecognitionResultMessage, attempt: int) -> None: ...
|
||||||
|
|
||||||
@ -181,7 +181,7 @@ class _WaitResult:
|
|||||||
|
|
||||||
|
|
||||||
class Worker:
|
class Worker:
|
||||||
"""Обработка запросов `files.img_uploaded` (см. докстринг модуля).
|
"""Обработка запросов на subject запроса `image` (см. докстринг модуля).
|
||||||
|
|
||||||
Зависимости внедряются: `storage` (S3), `publisher` (NATS), `hotfolder`, `normalizer`; `clock` — часы UTC для
|
Зависимости внедряются: `storage` (S3), `publisher` (NATS), `hotfolder`, `normalizer`; `clock` — часы UTC для
|
||||||
дедлайна (R-20), `sleep` — пауза между опросами (подмены для тестов).
|
дедлайна (R-20), `sleep` — пауза между опросами (подмены для тестов).
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user