28 lines
1.2 KiB
Python
28 lines
1.2 KiB
Python
"""Запрос распознавания файла (arm-core → tabular-parser / scan-gateway): `recognition-request.schema.json` v1.0.
|
||
|
||
Формируется из `recognition_job ⋈ stored_file ⋈ s3_object` (spec recognition-job-exchange); один файл — один job.
|
||
Subject — по `pipeline` (`request_subject`); заголовок `Nats-Msg-Id = <job_id>:<attempt>`
|
||
(`request_msg_id`) — не поле тела.
|
||
"""
|
||
|
||
from typing import Annotated, Literal
|
||
|
||
from pydantic import Field
|
||
|
||
from src.contract.common import ContractModel, ContractUUID, IntLike, NonEmptyStr, S3Ref, SchemaVersion, UtcDatetime
|
||
from src.contract.subjects import Pipeline
|
||
|
||
FileType = Literal["XLS", "XLSX", "XLSB", "PDF", "PNG", "JPG"]
|
||
|
||
|
||
class RecognitionRequest(ContractModel):
|
||
schema_version: SchemaVersion
|
||
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
|