from pydantic import BaseModel from typing import Optional, List from datetime import datetime from app.models.models import ActivityType from .project import Project from .evidence import Evidence from .non_conformity import NonConformity class ActivityBase(BaseModel): project_id: int specialty_id: int contractor_id: Optional[int] = None type: ActivityType = ActivityType.INSPECTION area: Optional[str] = None description: Optional[str] = None observations: Optional[str] = None audio_transcription: Optional[str] = None status: str = "completed" date: Optional[datetime] = None end_date: Optional[datetime] = None class ActivityUpdate(BaseModel): project_id: Optional[int] = None specialty_id: Optional[int] = None contractor_id: Optional[int] = None area: Optional[str] = None description: Optional[str] = None observations: Optional[str] = None status: Optional[str] = None date: Optional[datetime] = None end_date: Optional[datetime] = None class ActivityCreate(ActivityBase): pass class Activity(ActivityBase): id: int user_id: int project: Optional[Project] = None evidences: List[Evidence] = [] non_conformities: List[NonConformity] = [] class Config: from_attributes = True