from pydantic import BaseModel, Field
from typing import List, Optional, Dict
from uuid import UUID
from decimal import Decimal

class BulkSimulateRequest(BaseModel):
    chassis_ids: List[UUID] = Field(..., min_length=1)

class BomLineBulkConfirm(BaseModel):
    rm_id: UUID
    qty: Decimal
    category: str = "Base BOM"
    chassis_breakdown: Optional[Dict[str, Decimal]] = None

class BulkEngineRunRequest(BaseModel):
    chassis_ids: List[UUID] = Field(..., min_length=1, description="List of chassis IDs to run the engine for")
    buffer_percentage: float = Field(default=10.0, ge=0.0, description="Buffer percentage to add to the shortage (e.g., 10.0 for 10%)")
    final_bom: Optional[List[BomLineBulkConfirm]] = None
