fix(exchange): срок ответа OCR по умолчанию 5 → 20 мин (#87)

Решение владельца 09.10.2026. Парсер — по-прежнему 5 мин. Note DBML
«OCR — 5 мин» не меняется до следующей версии модели (OQ-159).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Andrey Epifancev 2026-10-09 16:23:23 +04:00
parent b4c7a15e99
commit 05854be2b1
2 changed files with 6 additions and 4 deletions

View File

@ -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)

View File

@ -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"