from __future__ import annotations from datetime import datetime from pydantic import BaseModel, Field from app.schemas.common import ORMModel class MineBase(BaseModel): code: str = Field(max_length=64) name: str = Field(max_length=128) short_name: str = "" province: str = "" city: str = "" status: str = "active" production_capacity: float | None = None design_capacity: float | None = None ventilation_method: str = "" description: str = "" settings: dict = Field(default_factory=dict) is_default: bool = False class MineCreate(MineBase): pass class MineUpdate(BaseModel): name: str | None = None short_name: str | None = None province: str | None = None city: str | None = None status: str | None = None production_capacity: float | None = None design_capacity: float | None = None ventilation_method: str | None = None description: str | None = None settings: dict | None = None is_default: bool | None = None class MineRead(ORMModel): id: str code: str name: str short_name: str province: str city: str status: str production_capacity: float | None design_capacity: float | None ventilation_method: str description: str settings: dict is_default: bool created_at: datetime updated_at: datetime class MineAreaRead(ORMModel): id: str mine_id: str code: str name: str area_type: str depth: float | None status: str description: str class WorkFaceRead(ORMModel): id: str mine_id: str area_id: str | None code: str name: str face_type: str status: str planned_air_volume: float | None actual_air_volume: float | None gas_limit: float | None dust_limit: float | None location: dict class RoadwayRead(ORMModel): id: str mine_id: str area_id: str | None code: str name: str roadway_type: str start_node: str end_node: str length: float | None cross_section_area: float | None resistance: float | None airflow: float | None status: str properties: dict