"""Запрос распознавания файла: `recognition-request.schema.json` v1.0. tabular-parser принимает этот запрос из `files.tabular_uploaded` (производитель — arm-core); один файл — один job. Модель намеренно совпадает с копией в arm-core (контракт — `../docs/contracts`, обзор — `docs/context/03-architecture.md`). Subject — по `pipeline` (`request_subject`); заголовок `Nats-Msg-Id = :` (`request_msg_id`) — не поле тела. """ from typing import Annotated, Literal from pydantic import Field from src.contract.common import ( ContractModel, ContractUUID, IntLike, NonEmptyStr, RequestSchemaVersion, S3Ref, UtcDatetime, ) from src.contract.subjects import Pipeline FileType = Literal["XLS", "XLSX", "XLSB", "PDF", "PNG", "JPG"] class RecognitionRequest(ContractModel): schema_version: RequestSchemaVersion job_id: ContractUUID # recognition_job.id file_id: ContractUUID # stored_file.id pipeline: Pipeline file_type: FileType original_name: NonEmptyStr # имя файла, как загрузил пользователь s3: S3Ref # исходный файл в роли uploads reply_deadline: UtcDatetime # срок ответа, UTC attempt: Annotated[IntLike, Field(ge=1)] # номер попытки, с 1