from pydantic import BaseModel, ConfigDict from typing import List, Optional from datetime import datetime # Common class BaseSchema(BaseModel): model_config = ConfigDict(from_attributes=True) # Document class DocumentLayoutSchema(BaseSchema): pk_document_data_id: int fk_document_id: int page_no: int text_value: Optional[str] block_type: Optional[str] parent_block_id: Optional[int] x_coordinate: Optional[float] y_coordinate: Optional[float] width: Optional[float] height: Optional[float] confidence: Optional[float] sequence_no: Optional[int] class DocumentSchema(BaseSchema): pk_document_id: int document_name: Optional[str] document_type: Optional[str] file_name: Optional[str] page_count: Optional[int] status: Optional[str] created_at: datetime layouts: List[DocumentLayoutSchema] = [] # Template Field class TemplateFieldCreate(BaseSchema): field_label: str field_type: str display_order: Optional[int] = 0 required_flag: Optional[bool] = False class TemplateFieldSchema(TemplateFieldCreate): pk_template_field_id: int fk_template_id: int created_at: datetime # Template Field Mapping class TemplateFieldMappingCreate(BaseSchema): fk_template_field_id: int fk_document_data_id: Optional[int] = None page_no: Optional[int] = None x_coordinate: Optional[float] = None y_coordinate: Optional[float] = None width: Optional[float] = None height: Optional[float] = None mapping_confidence: Optional[float] = None class TemplateFieldMappingSchema(TemplateFieldMappingCreate): pk_mapping_id: int fk_template_id: int created_at: datetime # Template class TemplateCreate(BaseSchema): template_name: str fields: Optional[List[TemplateFieldCreate]] = [] class TemplateSchema(BaseSchema): pk_template_id: int template_name: str template_fingerprint: Optional[str] = None active_flag: bool created_at: datetime fields: List[TemplateFieldSchema] = [] mappings: List[TemplateFieldMappingSchema] = [] class TemplateRecognitionResult(BaseSchema): templateMatched: bool templateId: Optional[int] = None confidence: Optional[float] = None extractedFields: List[dict] = []