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:
+15
-1
@@ -51,13 +51,16 @@ function loadDiscovery(){
|
||||
const subnets=document.getElementById('discovery-subnets');
|
||||
if(!enabled)return; // 面板未渲染(离开子分栏)
|
||||
enabled.checked=!!r.enabled;
|
||||
const ac=document.getElementById('discovery-autoclaim');
|
||||
if(ac)ac.checked=!!r.auto_claim;
|
||||
interval.value=r.interval||60;
|
||||
subnets.value=(r.subnets||[]).join(', ');
|
||||
// 状态行
|
||||
if(r.scanning){status.textContent='扫描中...';}
|
||||
else if(r.last_scan){
|
||||
let txt='上次扫描 '+esc(r.last_scan)+' · 开放 '+r.last_result.found+' · 可连 '
|
||||
+(r.last_result.verified||0)+' · 新增 '+(r.last_result.new||0);
|
||||
+(r.last_result.verified||0)+' · 新增 '+(r.last_result.new||0)
|
||||
+(r.last_result.claimed?' · 自动认领 '+r.last_result.claimed:'');
|
||||
if(r.last_error)txt+=' · ⚠ '+esc(r.last_error);
|
||||
status.textContent=txt;
|
||||
}else{status.textContent='尚未扫描';}
|
||||
@@ -121,6 +124,17 @@ function reconnectPoolDev(serial){
|
||||
}else showToast('重连失败: '+((r&&r.error)||''),'error');
|
||||
});
|
||||
}
|
||||
// 指纹匹配自动认领开关(默认关:认领会改写分组/任务引用,交人工确认更稳妥)
|
||||
function toggleAutoClaim(checked){
|
||||
const tip=checked
|
||||
? '已开启自动认领:扫描到"同一台设备换了 IP"时会自动迁移记录并同步分组/任务引用'
|
||||
: '已关闭自动认领:扫描到换 IP 的设备会提示,由你点确认';
|
||||
apiPost('/api/devices/discovery/settings',{auto_claim:checked}).then(r=>{
|
||||
if(r&&r.ok)showToast(tip,'success');
|
||||
else{showToast('设置失败: '+((r&&r.error)||''),'error');loadDiscovery();}
|
||||
});
|
||||
}
|
||||
|
||||
function toggleDiscovery(checked){
|
||||
apiPost('/api/devices/discovery/settings',{enabled:checked}).then(r=>{
|
||||
if(r&&r.ok)showToast('定时扫描已'+(checked?'开启':'关闭'),'success');
|
||||
|
||||
Reference in New Issue
Block a user