You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
2.5 KiB

"""
滑动手势数据模型
"""
from pydantic import BaseModel, Field, validator
from typing import Dict, Any, Optional, Literal
class SwipeRequest(BaseModel):
"""滑动手势请求模型"""
device_id: str = Field(..., description="设备ID")
x: float = Field(0.5, ge=0.0, le=1.0, description="标准化起始x坐标 (0-1)")
y: float = Field(0.2, ge=0.0, le=1.0, description="标准化起始y坐标 (0-1)")
direction: Literal["up", "down", "left", "right"] = Field("down", description="滑动方向")
distance: float = Field(0.6, ge=0.0, le=1.0, description="滑动距离占屏幕比例 (0-1)")
duration: int = Field(300, ge=1, le=10000, description="滑动持续时间(毫秒)")
class SwipeDirectionRequest(BaseModel):
"""方向滑动手势请求模型"""
device_id: str = Field(..., description="设备ID")
distance: float = Field(0.6, ge=0.0, le=1.0, description="滑动距离占屏幕比例 (0-1)")
duration: int = Field(300, ge=1, le=10000, description="滑动持续时间(毫秒)")
class SwipePointRequest(BaseModel):
"""从指定点滑动手势请求模型"""
device_id: str = Field(..., description="设备ID")
x: float = Field(..., ge=0.0, le=1.0, description="标准化起始x坐标 (0-1)")
y: float = Field(..., ge=0.0, le=1.0, description="标准化起始y坐标 (0-1)")
direction: Literal["up", "down", "left", "right"] = Field(..., description="滑动方向")
distance: float = Field(0.6, ge=0.0, le=1.0, description="滑动距离占屏幕比例 (0-1)")
duration: int = Field(300, ge=1, le=10000, description="滑动持续时间(毫秒)")
class SwipeResponse(BaseModel):
"""滑动手势响应模型"""
success: bool = Field(..., description="是否成功")
message: Optional[str] = Field(None, description="成功消息")
error: Optional[str] = Field(None, description="错误信息")
device_id: str = Field(..., description="设备ID")
start_point: Optional[Dict[str, int]] = Field(None, description="起始点坐标")
end_point: Optional[Dict[str, int]] = Field(None, description="结束点坐标")
screen_size: Optional[Dict[str, int]] = Field(None, description="屏幕尺寸")
normalized_start: Optional[Dict[str, float]] = Field(None, description="标准化起始坐标")
direction: Optional[str] = Field(None, description="滑动方向")
distance: Optional[float] = Field(None, description="滑动距离")
duration: Optional[int] = Field(None, description="滑动持续时间")
command: Optional[str] = Field(None, description="执行的ADB命令")