NetZero-Nav / netzero_nav /models.py
Aryanshh
fix: Decouple orders from time advance and implement cart cancellation
c547cb1
Raw
History Blame Contribute Delete
1.52 kB
from enum import Enum
from typing import List, Optional
from pydantic import BaseModel, Field
class TransportMode(str, Enum):
SEA = "sea"
AIR = "air"
RAIL = "rail"
ROAD = "road"
class PartType(str, Enum):
CHIPS = "chips"
SENSORS = "sensors"
BATTERIES = "batteries"
CASING = "casing"
class Shipment(BaseModel):
id: str
part: PartType
quantity: int
mode: TransportMode
eta: int # steps remaining
carbon_impact: float
cost: float
class Order(BaseModel):
id: str
product: str
quantity: int
due_date: int
reward: float
class Inventory(BaseModel):
chips: int = 0
sensors: int = 0
batteries: int = 0
casing: int = 0
class Observation(BaseModel):
step: int
inventory: Inventory
active_shipments: List[Shipment]
pending_orders: List[Order]
carbon_total: float
carbon_quota: float
cash_balance: float
news: Optional[str] = None
class ActionType(str, Enum):
ORDER_PARTS = "order_parts"
REROUTE = "reroute"
PRODUCE = "produce"
OFFSET = "offset"
SKIP = "skip"
CANCEL = "cancel"
class Action(BaseModel):
action_type: ActionType
part_type: Optional[PartType] = None
quantity: Optional[int] = None
mode: Optional[TransportMode] = None
shipment_id: Optional[str] = None
product: Optional[str] = None
offset_amount: Optional[float] = None
class StepResponse(BaseModel):
observation: Observation
reward: float
done: bool
info: dict