suvradeepp's picture
Deploy reno scheduling engine (FastAPI + Streamlit)
9c50399 verified
Raw
History Blame Contribute Delete
1.4 kB
"""Draft types for the Rules Engine (pure data, no DB ids yet)."""
from dataclasses import dataclass
from typing import Literal
Clock = Literal["WALL", "WORKING"]
ActivityKind = Literal["PROCUREMENT", "INSTALLATION", "COMMISSIONING", "INSPECTION", "CUSTOM"]
DepType = Literal["FS", "SS", "FF", "SF"]
ProcurementType = Literal["SUPPLY", "APPLY", "SUPPLY_AND_APPLY"]
Responsibility = Literal["CONTRACTOR", "CUSTOMER", "ORG"]
@dataclass
class BOQItemInput:
id: int
project_id: int
category_id: int
room_id: int | None
name: str
quantity: float
uom: str
cost: float | None
price: float | None
procurement_type: ProcurementType
procurement_responsibility: Responsibility
is_material: bool
metadata: dict
@dataclass
class ActivityDraft:
boq_item_id: int
template_id: int
kind: ActivityKind
name: str
effort_days: float | None
lead_time_days: float | None
clock: Clock
noisy: bool
responsibility: Responsibility
# tag used to wire up edges before activity ids exist
_tag: str
@dataclass
class DependencyDraft:
predecessor_tag: str
successor_tag: str
dep_type: DepType
lag_days: float
origin: Literal["TEMPLATE"]
@dataclass
class ExpandResult:
activities: list[ActivityDraft]
dependencies: list[DependencyDraft]