请为我创建一个基于 FastAPI 的“终端设备控制平台”项目,命名为 TermControlAgent,具备以下特性: 1. 提供统一的 HTTP API 接口,控制各种连接的设备(如手机、嵌入式模块、远程主机等); 2. 支持以下控制协议/方式,并可按设备绑定使用: - ADB(支持点击、输入、截图、安装、拉日志等) - ATX(基于 uiautomator2 控制 Android 手机) - HDC(华为设备控制命令) - AT 指令(通过串口发送) - PLNK(假设为自定义通信协议,通过 TCP/串口等) - SSH(通过远程执行 shell 命令) 3. 项目需具备模块化结构,包含: - `api/`: 路由层,定义 HTTP 接口(如点击、输入、命令执行等) - `services/`: 不同协议的控制器/适配器,如 `adb_service.py`、`ssh_service.py` - `core/`: 配置管理、统一协议路由器、设备状态管理 - `schemas/`: 请求/响应模型(Pydantic) - `utils/`: 通用工具(串口、TCP、CRC、日志封装等) - `main.py`: FastAPI 启动入口 4. 具体接口建议包括: - `GET /devices`:列出所有连接的设备(含类型、状态、协议) - `POST /devices/{id}/click`:执行点击操作(仅限支持图形界面协议) - `POST /devices/{id}/input`:输入文字 - `GET /devices/{id}/screenshot`:返回当前屏幕截图 - `POST /devices/{id}/exec`:通过 SSH 执行命令 - `POST /devices/{id}/send-at`:发送 AT 指令并返回原始响应 - `POST /devices/{id}/send-plnk`:通过 PLNK 协议发送十六进制报文并解析响应 - `POST /devices/{id}/install`:上传并安装 APK(ADB / HDC) - `GET /devices/{id}/logcat`:获取实时日志(支持 ADB) 5. 协议应当使用统一注册与调度器设计,例如通过 `device_id` 和 `protocol_type` 映射调用不同 service。 6. 支持 WebSocket 通道推送设备状态(如上线、离线、执行反馈) 7. 输出标准 `requirements.txt` 文件,包含: - fastapi, uvicorn, adbutils, uiautomator2, pyserial, paramiko (SSH), httpx, websockets 等 8. 请生成以下内容: - 项目目录结构 - 核心代码框架(至少包含 adb/ssh/at 示例服务类 + 路由注册) - 示例点击、执行命令、发送 AT 指令接口