36 lines
1.4 KiB
Python
36 lines
1.4 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
设备管理 Schema
|
|
"""
|
|
from datetime import datetime
|
|
from typing import Optional
|
|
from pydantic import BaseModel, Field
|
|
|
|
from app.base_schema import CSTDatetime
|
|
|
|
|
|
class DeviceInfo(BaseModel):
|
|
"""设备信息"""
|
|
device_id: str = Field(..., description="设备唯一标识")
|
|
device_name: Optional[str] = Field(None, description="自定义设备名称")
|
|
device_type: Optional[str] = Field(None, description="设备类型(desktop/mobile/tablet)")
|
|
browser_type: Optional[str] = Field(None, description="浏览器类型")
|
|
os_type: Optional[str] = Field(None, description="操作系统类型")
|
|
ip_address: Optional[str] = Field(None, description="IP地址")
|
|
last_active_time: Optional[CSTDatetime] = Field(None, description="最后活跃时间")
|
|
is_current: bool = Field(False, description="是否当前设备")
|
|
is_online: bool = Field(False, description="是否在线")
|
|
|
|
|
|
class DeviceListResponse(BaseModel):
|
|
"""设备列表响应"""
|
|
current_device: Optional[DeviceInfo] = Field(None, description="当前设备")
|
|
online_devices: list[DeviceInfo] = Field(default_factory=list, description="在线设备列表")
|
|
total_count: int = Field(0, description="设备总数")
|
|
|
|
|
|
class DeviceRenameRequest(BaseModel):
|
|
"""设备重命名请求"""
|
|
device_name: str = Field(..., min_length=1, max_length=50, description="设备名称")
|