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.

50 lines
2.1 KiB

from pydantic import BaseModel, Field
from typing import Optional, List
class ClickRequest(BaseModel):
"""点击操作请求模型"""
x: int = Field(..., description="X坐标", ge=0)
y: int = Field(..., description="Y坐标", ge=0)
duration: Optional[int] = Field(100, description="点击持续时间(毫秒)", ge=0)
class InputRequest(BaseModel):
"""输入操作请求模型"""
text: str = Field(..., description="要输入的文本")
clear_first: Optional[bool] = Field(False, description="是否先清空输入框")
class ScreenshotResponse(BaseModel):
"""截图响应模型"""
image_data: str = Field(..., description="Base64编码的图片数据")
format: str = Field("png", description="图片格式")
width: int = Field(..., description="图片宽度")
height: int = Field(..., description="图片高度")
class InstallRequest(BaseModel):
"""安装APK请求模型"""
apk_path: str = Field(..., description="APK文件路径")
package_name: Optional[str] = Field(None, description="包名")
class InstallResponse(BaseModel):
"""安装APK响应模型"""
success: bool = Field(..., description="安装是否成功")
message: str = Field(..., description="安装结果消息")
package_name: Optional[str] = Field(None, description="包名")
class LogcatRequest(BaseModel):
"""日志请求模型"""
package_name: Optional[str] = Field(None, description="指定包名过滤")
level: Optional[str] = Field("V", description="日志级别")
max_lines: Optional[int] = Field(100, description="最大行数")
class LogcatResponse(BaseModel):
"""日志响应模型"""
logs: List[str] = Field(..., description="日志内容列表")
total_lines: int = Field(..., description="总行数")
class ADBDeviceInfo(BaseModel):
"""ADB设备信息模型"""
device_id: str = Field(..., description="设备ID")
model: str = Field(..., description="设备型号")
android_version: str = Field(..., description="Android版本")
sdk_version: int = Field(..., description="SDK版本")
status: str = Field(..., description="设备状态")