import datetime import uuid from typing import Optional, Literal import pydantic from pydantic import Field from core.models.base import BaseModel class AmountStatus(pydantic.BaseModel): amount_contractor: Optional[int] = Field(description=" مبلغ دوره ادعایی پیمانکار | مبلغ تجمعی ادعایی پیمانکار") amount_project_manager: Optional[int] = Field(description="مبلغ دوره تائید نظارت کارگاهی/مدیرطرح | مبلغ تجمعی تائید نظارت کارگاهی/مدیر طرح") amount_cycle_supervisor: Optional[int] = Field(description="مبلغ دوره تائید نظارت عالیه | مبلغ تجمعی تائید نظارت عالیه") building: Optional[int] = Field(description="ابنیه") mechanic: Optional[int] = Field(description="مکانیک") electrical: Optional[int] = Field(description="برق") other: Optional[int] = Field(description="غیر از ابنیه، مکانیک، برق") new_amount: Optional[int] = Field(description="فاکتوری | قیمت جدید") workshop: Optional[int] = Field(description=" تجهیز کارگاه") amount_verify_supervisor: Optional[int] = Field(description=" مبلغ تجمعی نظارت عالیه | مبلغ دوره نظارت عالیه") class RegisterStatusModel(BaseModel): id: Optional[uuid.UUID] = Field(alias='_id') project_id: uuid.UUID = Field(description='کد شناسایی پروژ') date_contractor:Optional[datetime.datetime] = Field(description="تاریخ ارسال پیمانکار") date_receive_company:Optional[datetime.datetime] = Field(description=" تاریخ وصول به دبیرخانه شرکت") date_receive_physical:Optional[datetime.datetime] = Field(description=" تاریخ وصول نسخه فیزیکی") sts:Optional[Literal[1,2]] = Field(description=""" 1.کارکرد 2.تعدیل """) start_at:Optional[datetime.datetime] = Field(description="تاریخ شروع دوره") end_at:Optional[datetime.datetime] = Field(description="تاریخ پایان دوره") cycle_day:Optional[int] = Field(description=" طول دوره به روز") nature:Optional[Literal[1,2,3,4,5]] = Field(description=""" 1.موقت 2.30درصد 3.60درصد 4.ماقبل قطعی 5.قطعی """) number_start: Optional[float] = Field(description="شماره صورت وضعیت") number_end: Optional[float] = Field(description="شماره صورت وضعیت") index: Optional[Literal[1,2]] = Field(description=""" 1.قطعی 2. علی الحساب """) amount: Optional[AmountStatus] = Field(description="مبالغ") related_to_number:Optional[int] = Field(description="شماره صورت وضعیت مرتبط")