# generated by datamodel-codegen: # filename: bid_optimization_result.json from __future__ import annotations from enum import StrEnum from typing import Literal from pydantic import BaseModel, ConfigDict, Field, RootModel, conint, constr class Value(RootModel[constr(pattern=r'^-?\d+(\.\d+)?$')]): root: constr(pattern=r'^-?\d+(\.\d+)?$') class PricesYuanPerMwh(BaseModel): model_config = ConfigDict( extra='forbid', ) interval_minutes: Literal[15] date: constr(pattern=r'^\d{4}-\d{2}-\d{2}$') values: list[Value] = Field(..., max_length=96, min_length=96) class QuantitiesMwh(BaseModel): model_config = ConfigDict( extra='forbid', ) interval_minutes: Literal[15] date: constr(pattern=r'^\d{4}-\d{2}-\d{2}$') values: list[Value] = Field(..., max_length=96, min_length=96) class RevenueDistributionYuan(BaseModel): model_config = ConfigDict( extra='forbid', ) p10: constr(pattern=r'^-?\d+(\.\d+)?$') p50: constr(pattern=r'^-?\d+(\.\d+)?$') p90: constr(pattern=r'^-?\d+(\.\d+)?$') class PositionBounds(BaseModel): model_config = ConfigDict( extra='forbid', ) ledger_version: conint(ge=0, le=9007199254740991) daily_energy_min_mwh: constr(pattern=r'^-?\d+(\.\d+)?$') daily_energy_max_mwh: constr(pattern=r'^-?\d+(\.\d+)?$') class Status(StrEnum): OPTIMAL = 'OPTIMAL' INFEASIBLE = 'INFEASIBLE' TIME_LIMIT = 'TIME_LIMIT' ERROR = 'ERROR' class Solver(BaseModel): model_config = ConfigDict( extra='forbid', ) name: constr(min_length=1) version: constr(min_length=1) status: Status objective_value: constr(pattern=r'^-?\d+(\.\d+)?$') | None wall_time_ms: conint(ge=0, le=9007199254740991) class BidOptimizationResult(BaseModel): model_config = ConfigDict( extra='forbid', ) market_date: constr(pattern=r'^\d{4}-\d{2}-\d{2}$') prices_yuan_per_mwh: PricesYuanPerMwh quantities_mwh: QuantitiesMwh daily_energy_mwh: constr(pattern=r'^-?\d+(\.\d+)?$') expected_revenue_yuan: constr(pattern=r'^-?\d+(\.\d+)?$') revenue_distribution_yuan: RevenueDistributionYuan position_bounds: PositionBounds solver: Solver binding_constraints: list[str] skill_version: constr(pattern=r'^\d+\.\d+\.\d+$')