初始化

This commit is contained in:
lhx
2025-12-12 10:57:31 +08:00
commit f8e85beba1
38 changed files with 2146 additions and 0 deletions

5
app/schemas/__init__.py Normal file
View File

@@ -0,0 +1,5 @@
from .work_area import WorkAreaCreate, WorkAreaResponse, WorkAreaBatchImport
from .section_data import SectionDataCreate, SectionDataResponse, SectionDataBatchImport
from .checkpoint import CheckpointCreate, CheckpointResponse, CheckpointBatchImport, CheckpointWithSection
from .measurement_data import MeasurementDataCreate, MeasurementDataResponse, MeasurementDataBatchImport, MeasurementDataWithDetail
from .common import PageParams, PageResponse, BatchImportResponse

62
app/schemas/checkpoint.py Normal file
View File

@@ -0,0 +1,62 @@
from pydantic import BaseModel
from typing import Optional, List
from datetime import datetime
class CheckpointCreate(BaseModel):
"""观测点创建"""
point_id: str
section_id: str
name: str
burial_date: Optional[datetime] = None
objstate: Optional[str] = None
monitoring_type: Optional[str] = None
period_number: Optional[int] = None
first_time: Optional[datetime] = None
manufacturer: Optional[str] = None
point_code: Optional[str] = None
class CheckpointResponse(BaseModel):
"""观测点响应"""
id: int
point_id: Optional[str] = None
section_id: str
name: str
burial_date: Optional[datetime] = None
objstate: Optional[str] = None
monitoring_type: Optional[str] = None
period_number: Optional[int] = None
first_time: Optional[datetime] = None
manufacturer: Optional[str] = None
point_code: Optional[str] = None
class CheckpointWithSection(BaseModel):
"""观测点响应(包含断面信息)"""
id: int
point_id: Optional[str] = None
section_id: str
name: str
burial_date: Optional[datetime] = None
objstate: Optional[str] = None
monitoring_type: Optional[str] = None
period_number: Optional[int] = None
first_time: Optional[datetime] = None
manufacturer: Optional[str] = None
point_code: Optional[str] = None
# 断面信息
section_mileage: Optional[str] = None
rock_mass_classification: Optional[str] = None
class CheckpointBatchImport(BaseModel):
"""观测点批量导入"""
account_id: int
data: List[CheckpointCreate]
class CheckpointQuery(BaseModel):
"""观测点查询参数"""
account_id: int
department_id: Optional[str] = None
section_id: Optional[str] = None
point_id: Optional[str] = None
name: Optional[str] = None
page: int = 1
page_size: int = 20

25
app/schemas/common.py Normal file
View File

@@ -0,0 +1,25 @@
from pydantic import BaseModel
from typing import Optional, List, Any, Generic, TypeVar
T = TypeVar('T')
class PageParams(BaseModel):
"""分页参数"""
page: int = 1
page_size: int = 20
class PageResponse(BaseModel, Generic[T]):
"""分页响应"""
total: int
page: int
page_size: int
items: List[T]
class BatchImportResponse(BaseModel):
"""批量导入响应"""
success: bool
total: int
inserted: int
skipped: int
skipped_ids: List[str] = []
message: str

View File

@@ -0,0 +1,61 @@
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

View File

@@ -0,0 +1,49 @@
from pydantic import BaseModel
from typing import Optional, List
from decimal import Decimal
class SectionDataCreate(BaseModel):
"""断面数据创建"""
section_id: str
department_id: Optional[str] = None
project: Optional[str] = None
mileage: str
name: Optional[str] = None
number: Optional[str] = None
status: Optional[str] = None
excavation_method: Optional[str] = None
rock_mass_classification: Optional[str] = None
width: Optional[str] = None
U0: Optional[Decimal] = None
remarks: Optional[str] = None
class SectionDataResponse(BaseModel):
"""断面数据响应"""
id: int
section_id: str
department_id: Optional[str] = None
project: Optional[str] = None
mileage: str
name: Optional[str] = None
number: Optional[str] = None
status: Optional[str] = None
excavation_method: Optional[str] = None
rock_mass_classification: Optional[str] = None
width: Optional[str] = None
U0: Optional[Decimal] = None
remarks: Optional[str] = None
class SectionDataBatchImport(BaseModel):
"""断面数据批量导入"""
account_id: int
data: List[SectionDataCreate]
class SectionDataQuery(BaseModel):
"""断面数据查询参数"""
account_id: int
department_id: Optional[str] = None
section_id: Optional[str] = None
name: Optional[str] = None
number: Optional[str] = None
page: int = 1
page_size: int = 20

32
app/schemas/work_area.py Normal file
View File

@@ -0,0 +1,32 @@
from pydantic import BaseModel
from typing import Optional, List
class WorkAreaCreate(BaseModel):
"""工区创建"""
department_id: str
parent_id: Optional[str] = None
type: Optional[str] = None
name: Optional[str] = None
class WorkAreaResponse(BaseModel):
"""工区响应"""
id: int
department_id: Optional[str] = None
parent_id: Optional[str] = None
type: Optional[str] = None
name: Optional[str] = None
class WorkAreaBatchImport(BaseModel):
"""工区批量导入"""
account_id: int
data: List[WorkAreaCreate]
class WorkAreaQuery(BaseModel):
"""工区查询参数"""
account_id: int
department_id: Optional[str] = None
parent_id: Optional[str] = None
type: Optional[str] = None
name: Optional[str] = None
page: int = 1
page_size: int = 20