CrisisSim / app /models.py
TanmaySK's picture
uploading done
b96c7d5 verified
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