feat: 自动认领开关 + 全站按设备名称显示
一、指纹匹配自动认领(可选,默认关)
- 发现设置新增「指纹匹配自动认领」勾选(app_meta: discovery_auto_claim,默认 0)
- 打开后:扫描发现某设备指纹与池中已有记录一致(同一台换了 IP)→ 自动迁移记录到新地址
并同步分组/任务引用,零点击;关闭时维持"识别自动 + 人工点一次确认"
- 默认关的原因:认领会改写分组/任务引用(数据结构变动),交人工确认更稳妥
- 扫描结果与状态行会显示本轮自动认领了几台
二、设备名称在界面上呈现(凡选择/展示设备处都显示名称)
- 新增前端 helper `devText(name, serial)`(base.js):有名称→「名称 · serial」
- 监控页设备表:名称加粗为主、地址作副行(未命名显示橙色提醒);任务概况的覆盖设备
chip 也优先显示名称(tooltip 保留完整地址)
- AI 控制台:目标设备下拉、实时画面设备下拉、目标/运行中提示都带名称(serial→name 映射)
- 任务编辑器「指定设备」下拉、分组编辑的设备勾选列表:带名称
- 后端 `/api/devices` 新增 `items`([{serial,name,model}],`devices` 保持兼容);
`/api/agent/devices` 增加 `name` 字段
- MCP `de_list_devices` 返回 `name`,并在工具说明与 Agent 系统提示里要求"汇报用名称、
调工具用 serial"
文档:API.md(items/name/auto_claim + §6.2.1 名称呈现表)、MCP.md(工具返回)
自测(全通过):自动认领端到端(开开关→扫描→自动迁址 + 名称保留 + 分组/任务引用同步 +
待连接池清理 + 开关默认关且可持久化);名称显示浏览器验证(监控页/覆盖设备 chip/AI 目标与
观看下拉/任务编辑器/分组弹窗/发现设置开关);设备指纹与人工认领回归
This commit is contained in:
+17
-3
@@ -83,7 +83,7 @@
|
||||
| GET | `/api/summary` | L | 状态计数 + 异常设备列表(最多 50) |
|
||||
| GET | `/api/health` | — | 健康检查(免登录探活) |
|
||||
| POST | `/api/scan_foreground` | D | 触发前台 App 扫描 |
|
||||
| GET | `/api/devices` | L | 在线设备 serial 列表(分组表单用) |
|
||||
| GET | `/api/devices` | L | 在线设备列表:`devices`(serial 列表) + `items`([{serial,name,model}],界面显示设备名用) |
|
||||
| GET | `/api/devices/<serial>/apps` | L | 指定设备已安装应用列表 |
|
||||
| GET | `/api/device/screenshot` | L | 单张设备截图(PNG) |
|
||||
| GET | `/api/screen/stream` | D | 远程看屏 MJPEG 流 |
|
||||
@@ -194,7 +194,7 @@
|
||||
| 方法 | 路径 | 功能 |
|
||||
|------|------|------|
|
||||
| GET/POST | `/api/agent/config` | 读写 AI 配置(key 打码回显) |
|
||||
| GET | `/api/agent/devices` | AI 可用设备(含 busy 标记) |
|
||||
| GET | `/api/agent/devices` | AI 可用设备(含名称与 busy 标记) |
|
||||
| POST | `/api/agent/run` | 启动一轮 AI 会话 |
|
||||
| GET | `/api/agent/run` | 运行状态(刷新恢复用) |
|
||||
| GET | `/api/agent/stream` | **SSE 事件流** |
|
||||
@@ -429,6 +429,20 @@
|
||||
| `POST /api/devices/pool/reconnect` | — | 后台并发重连全部网络设备 |
|
||||
| `POST /api/devices/pool/refresh_models` | — | 后台批量采型号 **+ 补齐缺失指纹** |
|
||||
|
||||
### 6.2.1 名称在界面上的呈现
|
||||
|
||||
凡"选择设备 / 展示设备"的地方都以**名称**为主、地址为辅:
|
||||
|
||||
| 位置 | 呈现 |
|
||||
|------|------|
|
||||
| 监控页设备表 | 名称加粗为主行,`serial` 作副行(未命名显示橙色"未命名"提醒) |
|
||||
| 任务运行概况的覆盖设备 chip | 名称(无名才退地址),tooltip 里带完整 `serial` |
|
||||
| AI 控制台「目标设备」「观看设备」下拉 | `名称 · serial · 型号` |
|
||||
| 任务编辑器「指定设备」下拉 | `名称 · serial` |
|
||||
| 分组编辑的设备勾选列表 | `名称 · serial` |
|
||||
| 设备池 / 待连接池 / 断联设备表 | 名称列 + 指纹列 |
|
||||
| MCP `de_list_devices` | 返回 `name` 字段,提示 AI 汇报时用名称 |
|
||||
|
||||
### 6.3 自动发现
|
||||
|
||||
| 接口 | 请求 | 说明 |
|
||||
@@ -438,7 +452,7 @@
|
||||
| `POST /api/devices/discovery/confirm` | `{"serial","name"?}` | 确认入池。**新设备必须有名称**(空 → 400);**指纹命中已有设备时不需要名称**——保留原记录与原名,直接认领到新地址 |
|
||||
| `POST /api/devices/discovery/ignore` | `{"serial"}` | 从待连接删除 |
|
||||
| `POST /api/devices/discovery/reconnect` | `{"serial"}` | 只接受池内设备,否则 404 |
|
||||
| `POST /api/devices/discovery/settings` | `{"enabled","subnets","interval","port"}` | 部分更新,存 `app_meta` |
|
||||
| `POST /api/devices/discovery/settings` | `{"enabled","subnets","interval","port","auto_claim"}` | 部分更新,存 `app_meta`。`auto_claim`=**指纹匹配时自动认领**(默认 **false**:认领会改写分组/任务引用,默认交人工确认;打开后扫描到"同一台设备换了地址"自动迁移) |
|
||||
|
||||
> 扫描只做 socket 探测 + 只读校验,**不会把设备直接拉进设备池**(必须人工确认)。
|
||||
> 扫描时会顺带读一遍候选设备的指纹(写入待连接池),用于提示"这台是已有设备换了地址"。
|
||||
|
||||
Reference in New Issue
Block a user