5aadbc78c6
- 新增 RecordsLog.vue 操作记录日志页面 - 新增 ReplacementRecords.vue 设备更换记录页面 - 新增 imc_service.py IMC网管系统集成服务 - 新增 datetime.js 前端日期时间工具函数 - 新增 OLT时间同步.md 文档 - 扩展 devices.py API:设备更换记录、批量操作等 - 扩展 ssh_service.py:OLT时间同步功能 - 扩展 olt.py:新增时间同步相关接口 - 更新 DeviceList.vue:增强设备列表功能 - 更新路由和导航菜单 - 将 .claude/ 和 .mcp.json 加入 .gitignore Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
52 lines
1.3 KiB
Python
52 lines
1.3 KiB
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]
|
|
|
|
|
|
class RebootResponse(BaseModel):
|
|
success: bool
|
|
message: str
|
|
|
|
|
|
class OpticalPowerResponse(BaseModel):
|
|
power_in: Optional[str] = None
|
|
power_out: Optional[str] = None
|
|
bind_mac: Optional[str] = None
|
|
dev_id: Optional[int] = None
|
|
epon_dev_name: Optional[str] = None
|
|
olt_if_name: Optional[str] = None
|
|
onu_if_desc: Optional[str] = None
|
|
|