- Removed legacy Alembic migration files and consolidated schema management into a new Pydantic-backed initializer (`scripts/init_db.py`). - Updated `main.py` to ensure the new DB initializer runs on startup, maintaining idempotency. - Adjusted session management in `config/database.py` to prevent DetachedInstanceError. - Introduced new enums in `models/enums.py` for better organization and clarity. - Refactored various models to utilize the new enums, improving code maintainability. - Enhanced middleware to handle JSON validation more robustly, ensuring non-JSON requests do not trigger JSON errors. - Added tests for middleware and enums to ensure expected behavior and consistency. - Updated changelog to reflect significant changes and improvements.
82 lines
2.0 KiB
Python
82 lines
2.0 KiB
Python
from __future__ import annotations
|
|
|
|
from enum import Enum
|
|
|
|
|
|
class MiningOperationType(str, Enum):
|
|
"""Supported mining operation categories."""
|
|
|
|
OPEN_PIT = "open_pit"
|
|
UNDERGROUND = "underground"
|
|
IN_SITU_LEACH = "in_situ_leach"
|
|
PLACER = "placer"
|
|
QUARRY = "quarry"
|
|
MOUNTAINTOP_REMOVAL = "mountaintop_removal"
|
|
OTHER = "other"
|
|
|
|
|
|
class ScenarioStatus(str, Enum):
|
|
"""Lifecycle states for project scenarios."""
|
|
|
|
DRAFT = "draft"
|
|
ACTIVE = "active"
|
|
ARCHIVED = "archived"
|
|
|
|
|
|
class FinancialCategory(str, Enum):
|
|
"""Enumeration of cost and revenue classifications."""
|
|
|
|
CAPITAL_EXPENDITURE = "capex"
|
|
OPERATING_EXPENDITURE = "opex"
|
|
REVENUE = "revenue"
|
|
CONTINGENCY = "contingency"
|
|
OTHER = "other"
|
|
|
|
|
|
class DistributionType(str, Enum):
|
|
"""Supported stochastic distribution families for simulations."""
|
|
|
|
NORMAL = "normal"
|
|
TRIANGULAR = "triangular"
|
|
UNIFORM = "uniform"
|
|
LOGNORMAL = "lognormal"
|
|
CUSTOM = "custom"
|
|
|
|
|
|
class ResourceType(str, Enum):
|
|
"""Primary consumables and resources used in mining operations."""
|
|
|
|
DIESEL = "diesel"
|
|
ELECTRICITY = "electricity"
|
|
WATER = "water"
|
|
EXPLOSIVES = "explosives"
|
|
REAGENTS = "reagents"
|
|
LABOR = "labor"
|
|
EQUIPMENT_HOURS = "equipment_hours"
|
|
TAILINGS_CAPACITY = "tailings_capacity"
|
|
|
|
|
|
class CostBucket(str, Enum):
|
|
"""Granular cost buckets aligned with project accounting."""
|
|
|
|
CAPITAL_INITIAL = "capital_initial"
|
|
CAPITAL_SUSTAINING = "capital_sustaining"
|
|
OPERATING_FIXED = "operating_fixed"
|
|
OPERATING_VARIABLE = "operating_variable"
|
|
MAINTENANCE = "maintenance"
|
|
RECLAMATION = "reclamation"
|
|
ROYALTIES = "royalties"
|
|
GENERAL_ADMIN = "general_admin"
|
|
|
|
|
|
class StochasticVariable(str, Enum):
|
|
"""Domain variables that typically require probabilistic modelling."""
|
|
|
|
ORE_GRADE = "ore_grade"
|
|
RECOVERY_RATE = "recovery_rate"
|
|
METAL_PRICE = "metal_price"
|
|
OPERATING_COST = "operating_cost"
|
|
CAPITAL_COST = "capital_cost"
|
|
DISCOUNT_RATE = "discount_rate"
|
|
THROUGHPUT = "throughput"
|