# generated by datamodel-codegen: # filename: review_finding.json from __future__ import annotations from enum import StrEnum from typing import Literal from pydantic import AwareDatetime, BaseModel, ConfigDict, constr class Kind(StrEnum): FORECAST = 'FORECAST' RESPONSE = 'RESPONSE' TRADING = 'TRADING' CONTROL = 'CONTROL' class Attribution(BaseModel): model_config = ConfigDict( extra='forbid', ) trading_mwh: constr(pattern=r'^-?\d+(\.\d+)?$') control_mwh: constr(pattern=r'^-?\d+(\.\d+)?$') response_mwh: constr(pattern=r'^-?\d+(\.\d+)?$') forecast_load_mape: constr(pattern=r'^-?\d+(\.\d+)?$') | None forecast_price_mape: constr(pattern=r'^-?\d+(\.\d+)?$') | None net_deviation_mwh: constr(pattern=r'^-?\d+(\.\d+)?$') class Writebacks(BaseModel): model_config = ConfigDict( extra='forbid', ) target: Literal['SEMANTIC_MEMORY'] topic: constr(min_length=1) lesson: constr(min_length=1) class Writebacks1(BaseModel): model_config = ConfigDict( extra='forbid', ) target: Literal['RESOURCE_PROFILE'] resource_id: constr(min_length=1) previous_reliability_score: constr(pattern=r'^-?\d+(\.\d+)?$') new_reliability_score: constr(pattern=r'^-?\d+(\.\d+)?$') fulfillment_ratio: constr(pattern=r'^-?\d+(\.\d+)?$') class Action(StrEnum): WIDEN = 'WIDEN' NARROW = 'NARROW' SUSPEND = 'SUSPEND' KEEP = 'KEEP' class Writebacks2(BaseModel): model_config = ConfigDict( extra='forbid', ) target: Literal['ENVELOPE_RECOMMENDATION'] envelope_id: constr(min_length=1) action: Action bound: constr(min_length=1) current_value: constr(pattern=r'^-?\d+(\.\d+)?$') recommended_value: constr(pattern=r'^-?\d+(\.\d+)?$') basis: constr(min_length=1) class LineageRef(BaseModel): model_config = ConfigDict( extra='forbid', ) tool_call_id: constr(min_length=1) path: constr(min_length=1) class ReviewFinding(BaseModel): model_config = ConfigDict( extra='forbid', ) id: constr(min_length=1) market_date: constr(pattern=r'^\d{4}-\d{2}-\d{2}$') kind: Kind summary: constr(min_length=1) attribution: Attribution writebacks: list[Writebacks | Writebacks1 | Writebacks2] evidence_refs: list[constr(pattern=r'^[0-9a-f]{64}$')] lineage_refs: list[LineageRef] generated_at: AwareDatetime