159 lines
9.9 KiB
Python
159 lines
9.9 KiB
Python
import datetime
|
|
import uuid
|
|
|
|
import pydantic
|
|
from pydantic import Field
|
|
from typing import Optional, List, Literal
|
|
|
|
from core.models.base import BaseModel
|
|
|
|
class UpdateSts(pydantic.BaseModel):
|
|
sts: Literal[1, 2, 3, 4,5] = Field(description="""
|
|
""")
|
|
reason_stop: Optional[str] = Field(description="دلیل موقف کردن پروژه در این فیلد قرار می گیرد")
|
|
class Budget(pydantic.BaseModel):
|
|
year:str=Field("سال بودجه")
|
|
amount:int=Field("مبلغ بودجه")
|
|
class BaseMonitor(pydantic.BaseModel):
|
|
type:int = Field(description="""
|
|
1.عالیه
|
|
2. عالیه وکارگاه
|
|
3.یکپارچه
|
|
4.کارگاهی
|
|
""")
|
|
date_delivery_land:Optional[datetime.datetime] =Field(description=" تاریخ تحویل زمین")
|
|
date_building_permit:Optional[datetime.datetime] = Field(description=" تاریخ صدور پروانه ساختمانی")
|
|
date_expire_permit:Optional[datetime.datetime] = Field(description="تاریخ پایان اعتبار پروانه ساختمانی")
|
|
budget:Optional[List[Budget]]
|
|
|
|
class AddTFPercent(pydantic.BaseModel):
|
|
amount:int = Field(description="مبلغ")
|
|
percent:Optional[int] = Field(description="درصد")
|
|
date:Optional[datetime.datetime] = Field(description="تاریخ ابلاغ")
|
|
class Adding(pydantic.BaseModel):
|
|
row:int = Field(description="ردیف")
|
|
amount:Optional[int] = Field(description="مبلغ")
|
|
date:Optional[datetime.datetime] = Field(description="تاریخ الحاقیه")
|
|
class DetailMonitor(pydantic.BaseModel):
|
|
type:Optional[int] = Field(description="""
|
|
1.فهرست بهایی
|
|
2.سرجمع
|
|
3.سایر
|
|
""")
|
|
date_create_project:Optional[datetime.datetime] = Field(description="تاریخ شروع پروژه")
|
|
date_end_project:Optional[datetime.datetime] = Field(description="تاریخ پایان پروژه")
|
|
date_legal_project:Optional[datetime.datetime] = Field(description="آخرین تاریخ مجاز")
|
|
first_time:Optional[int] = Field(description="مدت اولیه پیمان")
|
|
extend_time:Optional[int] = Field(description="میزان تمدید پیمان")
|
|
date_estimate_complete :Optional[datetime.datetime] = Field(description="تاریخ پیش بینی اتمام")
|
|
first_amount:Optional[int] = Field(description="مبلغ اولیه پیمان")
|
|
base_amount_year:Optional[str] = Field(description="فهرست بهای پایه")
|
|
add_25_percent:Optional[List[AddTFPercent]] = Field(description="افزایش تا 25 درصد پیمان")
|
|
adding:Optional[List[Adding]] = Field(description="الحاقیه")
|
|
class AgentMonitor(pydantic.BaseModel):
|
|
workshop_consultant: Optional[str] = Field(description=" نام مشاور نظارت کارگاهی")
|
|
designer:Optional[str] = Field(description="نام مشاور طراح")
|
|
designer_phone:Optional[str] = Field(description="شماره تماس مشاور طراح")
|
|
constractor:Optional[str] = Field(description=" نام پیمانکار")
|
|
constractor_phone:Optional[str] = Field(description="شماره تماس پیمانکار")
|
|
supervisor:Optional[str] = Field(description="نام سرناظر")
|
|
supervisor_phone:Optional[str] = Field(description=" شماره تماس سر ناظر")
|
|
supervisor_building:Optional[str] = Field(description="نام ناظر ابنیه")
|
|
supervisor_building_phone:Optional[str] = Field(description=" شماره تماس ابنیه")
|
|
supervisor_mechanic:Optional[str] = Field(description="نام ناظر مکانیک")
|
|
supervisor_mechanic_phone:Optional[str] = Field(description=" شماره تماس مکانیک")
|
|
supervisor_electricity:Optional[str] = Field(description=" نام ناظر برق")
|
|
supervisor_electricity_phone:Optional[str] = Field(description=" شماره تماس ناظر برق")
|
|
project_manager:Optional[str] = Field(description=" نام مدیر پروژه")
|
|
project_manager_phone:Optional[str] = Field(description="شماره تماس مدیر پروژه")
|
|
supervisor_workshop:Optional[str] = Field(description=" نام سرپرست کارگاه")
|
|
supervisor_workshop_phone:Optional[str] = Field(description="شماره تماس سرپرست کارگاه")
|
|
class StatusBranch(pydantic.BaseModel):
|
|
electricity:bool = Field(description="برق")
|
|
water:bool = Field(description="آب")
|
|
wastewater:bool = Field(description="فاضلاب")
|
|
gas:bool = Field(description="گاز")
|
|
phone:bool = Field(description="تلفن و فیبر نوری")
|
|
class Monitor(pydantic.BaseModel):
|
|
code: Optional[str] = Field(description='کد در این فیلد قرار می گیرد')
|
|
base_information:Optional[BaseMonitor] = Field(description="اطلاعات پایه")
|
|
detail:Optional[DetailMonitor] = Field(description="مشخصات پیمان")
|
|
agent:Optional[AgentMonitor] = Field(description="عوامل پروژه")
|
|
status_branch:Optional[StatusBranch] = Field(description="وضعیت انشعابات")
|
|
has_design:bool=Field(default=True,description='آیا این پروژه طراحی دارد؟')
|
|
sts: Optional[Literal[1, 2, 3, 4, 5]] = Field(default=1, description="""
|
|
1.شروع نشده
|
|
2.جاری
|
|
3.متوقف
|
|
4.تحویل موقت
|
|
5.خاتمه یافته
|
|
""")
|
|
reason_sts: Optional[str] = Field(description="دلیل موقف کردن پروژه در این فیلد قرار می گیرد")
|
|
class Design(pydantic.BaseModel):
|
|
code: Optional[str] = Field(description='کد در این فیلد قرار می گیرد')
|
|
title: str = Field(description='عنوان در این فیلد قرار می گیرد')
|
|
state: str = Field(description='استان در این فیلد قرار می گیرد')
|
|
city: str = Field(description='شهر در این فیلد قرار می گیرد')
|
|
nature_id: int = Field(description='کد شناسایی ماهبت در این فیلد قرار می گیرد')
|
|
nature: str = Field(description='ماهبت در این فیلد قرار می گیرد')
|
|
type_id: int = Field(description='کد شناسایی نوع پروژه در این فیلد قرار می گیرد')
|
|
type: str = Field(description='نوع پروژه در این فیلد قرار می گیرد')
|
|
budget_id: int = Field(description='کد شناسایی دسته بودچه در این فیلد قرار می گیرد')
|
|
budget: str = Field(description='دسته بودجه در این فیلد قرار می گیرد')
|
|
date_send: Optional[datetime.datetime] = Field(description='تاریخ ابالغ/ارجاع')
|
|
letter: Optional[str] = Field(description='شماره نامه')
|
|
land_area:Optional[str] = Field(description="مساحت زمین")
|
|
building_infrastructure:Optional[int] = Field(description="زیربنای ساختمان")
|
|
site_area:Optional[str] = Field(description="مساحت محوطه")
|
|
designer:Optional[List[str]] = Field(description="نام طراح")
|
|
status_agreement:Optional[str] = Field(description="وضعیت موافقتنامه")
|
|
description:Optional[str] = Field(description="توضیحات")
|
|
sts:Optional[Literal[1,2,3,4]] = Field(default=1,description="""
|
|
1.شروع نشده
|
|
2.جاری
|
|
3.متوقف
|
|
4.خاتمه یافته
|
|
""")
|
|
reason_stop : Optional[str] = Field(description="دلیل موقف کردن پروژه در این فیلد قرار می گیرد")
|
|
class ProjectModel(BaseModel):
|
|
id: Optional[uuid.UUID] = Field(alias='_id')
|
|
user_id: Optional[int] = Field(description='کد شناسایی کاربر در این فیلد قرار می گیرد')
|
|
sts: Optional[Literal[1,2]] = Field(default=1,description="""
|
|
1.جاری
|
|
2.حذف شده
|
|
""")
|
|
counter: Optional[int] = Field(description='شمارنده در این فیلد قرار می گیرد')
|
|
lat:Optional[str]= Field(description='مقدار عرض جغرافیایی در این فیلد قرار می گیرد')
|
|
lang:Optional[str]= Field(description='مقدار طول جغرافیایی در این فیلد قرار می گیرد')
|
|
address:Optional[str] = Field(description="آدرس پروژه")
|
|
monitor:Optional[Monitor] = Field(description="فیلدهای نظارت")
|
|
design:Design = Field(description='فیلدهای طراحی')
|
|
has_monitor:Optional[bool] = Field(default=False, description='آیا طراحی دارد؟')
|
|
all_delay_day: Optional[int] = Field(default=0, description='جمع روزهای دارای تاخیر')
|
|
date_delay: Optional[datetime.datetime] = Field(description='آخرین تاریخ مجاز')
|
|
|
|
class ProjectSts(BaseModel):
|
|
id: Optional[uuid.UUID] = Field(alias='_id')
|
|
project_id: Optional[uuid.UUID] = Field(description="کد شناسایی پروژه در این فیلد قرار می گیرد")
|
|
type: Optional[Literal['design','monitor']] = Field(description="نوع پروژه در این فیلد قرار می گیرد")
|
|
sts: Optional[int] = Field(description='وضعیت مورد نظر در این فیلد قرار می گیرد')
|
|
description:Optional[str] = Field(description='توضیحات وضعیت در این فیلد قرار می گیرد')
|
|
|
|
class ProjectPriceReport(BaseModel):
|
|
id: Optional[uuid.UUID] = Field(alias='_id')
|
|
project_id: Optional[uuid.UUID] = Field(description="کد شناسایی پروژه در این فیلد قرار می گیرد")
|
|
amount_status: Optional[int] = Field(description='مبلغ صورت وضعیت')
|
|
amount_adjust: Optional[int] = Field(description='مبلغ تعدیل')
|
|
first_amount: Optional[int] = Field(description=' مبلغ اولیه پیمان')
|
|
|
|
class ProjectStatusAgreement(BaseModel):
|
|
id: Optional[uuid.UUID] = Field(alias='_id')
|
|
project_id: Optional[uuid.UUID] = Field(description="کد شناسایی پروژه در این فیلد قرار می گیرد")
|
|
status:str
|
|
|
|
class ListWithIds(pydantic.BaseModel):
|
|
ids: list[uuid.UUID]
|
|
|
|
|
|
|