from pydantic import BaseModel from typing import Optional, List from datetime import datetime class MeasurementDataCreate(BaseModel): """量测数据创建""" point_id: str monitoring_time: Optional[datetime] = None upload_time: Optional[datetime] = None monitoring_value: Optional[str] = None deformation_value: Optional[str] = None time_interval: Optional[str] = None cumulative_deformation: Optional[str] = None deformation_rate: Optional[str] = None distance_working_face: Optional[str] = None class MeasurementDataResponse(BaseModel): """量测数据响应""" id: int point_id: Optional[str] = None monitoring_time: Optional[datetime] = None upload_time: Optional[datetime] = None monitoring_value: Optional[str] = None deformation_value: Optional[str] = None time_interval: Optional[str] = None cumulative_deformation: Optional[str] = None deformation_rate: Optional[str] = None distance_working_face: Optional[str] = None class MeasurementDataWithDetail(BaseModel): """量测数据响应(包含断面和观测点信息)""" id: int point_id: Optional[str] = None monitoring_time: Optional[datetime] = None upload_time: Optional[datetime] = None monitoring_value: Optional[str] = None deformation_value: Optional[str] = None time_interval: Optional[str] = None cumulative_deformation: Optional[str] = None deformation_rate: Optional[str] = None distance_working_face: Optional[str] = None # 观测点信息 point_name: Optional[str] = None # 断面信息 section_mileage: Optional[str] = None rock_mass_classification: Optional[str] = None class MeasurementDataBatchImport(BaseModel): """量测数据批量导入""" account_id: int data: List[MeasurementDataCreate] class MeasurementDataQuery(BaseModel): """量测数据查询参数""" account_id: int department_id: Optional[str] = None point_id: Optional[str] = None monitoring_time_start: Optional[datetime] = None monitoring_time_end: Optional[datetime] = None page: int = 1 page_size: int = 20