37 lines
970 B
Python
37 lines
970 B
Python
"""设备相关 Schema"""
|
|
from pydantic import BaseModel
|
|
from typing import Optional
|
|
from datetime import datetime
|
|
|
|
|
|
class ONUDeviceBase(BaseModel):
|
|
mac_address: str
|
|
olt_id: Optional[int] = None
|
|
region: Optional[str] = None
|
|
school_name: Optional[str] = None
|
|
building: Optional[str] = None
|
|
place_type: Optional[str] = None # 场所类型
|
|
room_number: Optional[str] = None
|
|
notes: Optional[str] = None # 备注
|
|
|
|
|
|
class ONUDeviceResponse(ONUDeviceBase):
|
|
id: int
|
|
status: Optional[str] = None
|
|
distance_m: Optional[int] = None
|
|
slot_number: Optional[int] = None
|
|
port_number: Optional[int] = None
|
|
port_id: Optional[str] = None # 完整端口标识,如 "1/0/2:4"
|
|
model: Optional[str] = None
|
|
olt_location: Optional[str] = None # OLT 安装位置
|
|
created_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class DeviceListResponse(BaseModel):
|
|
total: int
|
|
items: list[ONUDeviceResponse]
|
|
|