import uuid from datetime import datetime from typing import Optional, Literal import pydantic from pydantic import Field from core.models.base import BaseModel class SecondaryProgressModel(BaseModel): id: Optional[uuid.UUID] = Field(alias='_id') project_id: Optional[uuid.UUID] = Field(description="کد شناسایی پروژه در این فیلد قرار می گیرد") title: Optional[str] = Field(description='عنوان در این فیلد قرار میگیرد') weight: Optional[int] = Field(description='وزن در این فیلد قرار می گیرد') class SubSecondaryProgressModel(BaseModel): id: Optional[uuid.UUID] = Field(alias='_id') parent_id: Optional[uuid.UUID] = Field(description="کد شناسایی پیشرفت های فیزیکی فرعی در این فیلد قرار می گیرد") program: Optional[int] = Field(description=" برنامه ای") real: Optional[int] = Field(description=" واقعی") deviation: Optional[int] = Field(description="انحراف از برنامه") date_at: Optional[datetime] = Field(description="تاریخ گزارش پیشرفت") last_month: Optional[int] = Field(description='واقعی ماه اخیر') collection: Optional[Literal['all', 'work', 'various', 'secondary_building', 'block']] = Field(description=""" all: کلی work: پیشرفت جبهه های کاری various: پیشرفت رشته های مختلف secondary_building: پیشرفت ساختمان های جنبی block: پیشرفت بلوک ها """) class LastRecord(pydantic.BaseModel): parent_id:Optional[uuid.UUID] = Field(description="کد شناسایی پدر در این فیلد قرار می گیرد") date_at:Optional[datetime] = Field(description='تاریخ وارد شده')