# /opt/docker/dev/service_finder/backend/app/schemas/asset_cost.py from pydantic import BaseModel, ConfigDict, Field from typing import Optional, Dict, Any from datetime import datetime from decimal import Decimal from uuid import UUID class AssetCostBase(BaseModel): """Base schema — matches the AssetCost SQLAlchemy model fields.""" amount_net: Decimal currency: str = "HUF" date: datetime = Field(default_factory=datetime.now) invoice_number: Optional[str] = None data: Dict[str, Any] = Field(default_factory=dict) # nyugta adatai, GPS koordináták category_id: int # FK a CostCategory táblához mileage_at_cost: Optional[int] = None # Stored inside data JSONB description: Optional[str] = None # Stored inside data JSONB class AssetCostCreate(AssetCostBase): asset_id: UUID organization_id: Optional[int] = None # Auto-resolved from asset if not provided class AssetCostResponse(AssetCostBase): """Response schema — matches DB columns from vehicle.asset_costs.""" id: UUID asset_id: UUID organization_id: int # Derived / enriched fields (not in DB model directly) category_name: Optional[str] = None # Resolved from CostCategory relationship category_code: Optional[str] = None # Resolved from CostCategory relationship description: Optional[str] = None # Extracted from data['description'] mileage_at_cost: Optional[int] = None # Extracted from data['mileage_at_cost'] model_config = ConfigDict(from_attributes=True)