51 lines
2.7 KiB
Python
51 lines
2.7 KiB
Python
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="حسن انجام کار")
|
|
total: Optional[int] = Field(default=0, 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="تاخیرات در اعالم شاخص های قطعی")
|
|
total: Optional[int] = Field(default=0, 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")
|
|
total: Optional[int] = Field(default=0, description='مجموع')
|
|
|
|
|
|
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='غیر مجاز')
|
|
overlapping: 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='تاریخ خاتمه پیمان')
|
|
total_day: Optional[int] = Field(default=0,description='جمع روزها')
|