import uuid from datetime import datetime from typing import Optional import pydantic from pydantic import Field from core.models.base import BaseModel class Financial(pydantic.BaseModel): status:Optional[int] = Field(description="صورت وضعیت") prepayment:Optional[int] = Field(description=" پیش پرداخت") modification:Optional[int] = Field(description="تعدیل") good_job:Optional[int] = Field(description="حسن انجام کار") class ForceMajor(pydantic.BaseModel): force_event:Optional[int] = Field(description="حوادث قهری") material:Optional[int] = Field(description="محدودیت ورود مصالح") rules:Optional[int] = Field(description="وضع قوانین جدید") define_indicators:Optional[int] = Field(description="تاخیرات در اعالم شاخص های قطعی") class Technical(pydantic.BaseModel): map_technical:Optional[int] = Field(description="تغییر نقشه و مشخصات فنی") permit:Optional[int] = Field(description="تاخیرات در تحویل کارگاه معارض زمین یا اخذ پروانه") purchase:Optional[int] = Field(description="تاخیر در خرید کارفرمایی") suspense:Optional[int] = Field(description="تعلیق پیمان ماده 49") class BillDelayModel(BaseModel): id: Optional[uuid.UUID] = Field(alias='_id') project_id: uuid.UUID = Field(description='کد شناسایی پروژ') financial:Optional[Financial] = Field(description='مسائل مالی') force_major:Optional[ForceMajor] = Field(description='فورس ماژور') technical:Optional[Technical] = Field(description='فنی و قراردادی') extra_new_work:Optional[int] = Field(description='کارهای اضافی جدید') other:Optional[int] = Field(description='سایر') illegal:Optional[int] = Field(description='غیر مجاز') date_present_bill : Optional[datetime] = Field(description='تاریخ ارائه لایحه') date_consider_bill : Optional[datetime] = Field(description='تاریخ رسیدگی لایحه') date_submission_bill : Optional[datetime] = Field(description='تاریخ ابلاغ لایحه') description: Optional[str] = Field(description='توضیحات') end_at : Optional[datetime] = Field(description='تاریخ خاتمه پیمان')