diff --git a/api/src/services/recognition_exchange.py b/api/src/services/recognition_exchange.py index 4754774..25e918f 100644 --- a/api/src/services/recognition_exchange.py +++ b/api/src/services/recognition_exchange.py @@ -84,10 +84,11 @@ from src.services.result_mapping import run_mapping_loop WATCHDOG_PERIOD_SECONDS = 30 # период вахтёра сроков (spec «Таймаут ожидания результата») PUBLISH_BATCH_SIZE = 50 # заданий за один проход публикатора (design D-6, LIMIT 50) -# Срок ответа сервиса, если задание создано без `reply_deadline`: OCR — 5 мин (DBML note), парсер — так же +# Срок ответа сервиса, если задание создано без `reply_deadline`: OCR — 20 мин (решение владельца 09.10.2026; note DBML +# «OCR — 5 мин» устарела, OQ-159), парсер — 5 мин DEFAULT_REPLY_TIMEOUT: dict[RecognitionPipeline, timedelta] = { RecognitionPipeline.tabular: timedelta(minutes=5), - RecognitionPipeline.image: timedelta(minutes=5), + RecognitionPipeline.image: timedelta(minutes=20), } REPUBLISH_COUNT_KEY = "republish_count" # счётчик повторов в `recognition_job.metrics` (design #6) diff --git a/api/tests/test_recognition_exchange.py b/api/tests/test_recognition_exchange.py index f777ca5..ac4b0d1 100644 --- a/api/tests/test_recognition_exchange.py +++ b/api/tests/test_recognition_exchange.py @@ -247,10 +247,11 @@ async def test_publish_request_to_service( # noqa: PLR0913,PLR0917 - фикст assert request.s3.key == await jobs.s3_key(job_id) assert request.attempt == 1 assert request.schema_version == "1.0" - # reply_deadline не был задан: вычислен при первой публикации (5 мин) и сохранён в задание + # reply_deadline не был задан: вычислен при первой публикации (парсер — 5 мин, OCR — 20 мин) и сохранён в задание assert job.reply_deadline is not None assert request.reply_deadline == job.reply_deadline - assert timedelta(minutes=4) < job.reply_deadline - before < timedelta(minutes=6) + expected = timedelta(minutes=20 if pipeline is RecognitionPipeline.image else 5) + assert expected - timedelta(minutes=1) < job.reply_deadline - before < expected + timedelta(minutes=1) assert job.status is RecognitionStatus.published assert job.request_msg_id == f"{job_id}:1"