from pydantic import BaseModel, ConfigDict from enum import Enum from typing import Optional class ActionEnum(str, Enum): cut_expenses = "cut_expenses" stock_essentials = "stock_essentials" invest_gold = "invest_gold" hold_cash = "hold_cash" convert_currency = "convert_currency" take_loan = "take_loan" pay_debt = "pay_debt" reduce_luxury = "reduce_luxury" build_emergency_fund = "build_emergency_fund" class EventEnum(str, Enum): none = "none" war_outbreak = "war_outbreak" oil_supply_shock = "oil_supply_shock" currency_crash = "currency_crash" food_shortage = "food_shortage" job_loss = "job_loss" import_ban = "import_ban" class Action(BaseModel): action: ActionEnum class Observation(BaseModel): model_config = ConfigDict(extra="forbid") income: float expenses: float savings: float debt: float inflation: float currency_value: float food_price_index: float fuel_price: float current_event: str month: int bankrupt: bool class Reward(BaseModel): survival_score: float savings_stability: float debt_reduction: float smart_decision_bonus: float bad_decision_penalty: float bankruptcy_penalty: float total: float class StepResponse(BaseModel): observation: Observation reward: float done: bool info: dict