from typing import Optional from pydantic import BaseModel, ConfigDict class ModellingE2ETriggerBody(BaseModel): model_config = ConfigDict(extra="allow") property_ids: list[int] portfolio_id: int scenario_id: int refetch_solar: bool = True refetch_epc: bool = True repredict_epc: bool = True dry_run: bool = False # Attach mode (ADR-0055): a Modelling Run batch carries the app-owned task # and the distributor's pre-created sub_task; the handler then creates no # per-property child sub_tasks. Absent on classic (script) messages. task_id: Optional[str] = None subtask_id: Optional[str] = None