已完成
所有任务
运行中
等待中
失败
停止
全部
成功率100%
非100%
非0%
成功率{{rateThreshold}}%+
成功率0%
推送摘要
过滤
刷新
清空
加载中...
暂无未完成分片
调
批量重跑({{selectedTasks.length}})
批量删除({{selectedTasks.length}})
{{allExpanded ? '收起全部' : '展开全部'}}
iOS 总运行: {{nodeCapacityData.total_ios || 0}}
Android 总运行: {{nodeCapacityData.total_android || 0}}
节点数: {{nodeCapacityData.node_count || 0}}
{{s.row.ios_running}} / {{s.row.ios_max}}
{{s.row.android_running}} / {{s.row.android_max}}
{{s.row.ios_running + s.row.android_running}}
任务ID: {{s.row.id}} 平台: {{s.row.platform}} 项目: {{s.row.project_name_cn}} 来源: {{s.row.channel}}
应用名: {{s.row.app_name || '-'}} 启动页: {{s.row.launcher_activity}}
下载地址: {{s.row.resource_url}} 名称订正
发起人: {{s.row.author}} 发起IP: {{s.row.user_ip}} 发起时间: {{s.row.from_time}}
AJ包:
当前: {{parseAjBundle(s.row.params)}}
重跑次数:
当前上限: {{s.row.rerun_limit}}
用例列表:
设备池 ({{(s.row._deviceIds||[]).length}}/{{(s.row._devicePool||[]).length}}台)
空闲-{{s.row._devicePool.filter(function(d){return d.status==='idle'}).length}} 忙碌-{{s.row._devicePool.filter(function(d){return d.status!=='idle'}).length}}
全选
清空
{{d.label}} [{{d.status==='idle'?'空闲':'忙碌'}}]
{{s.row.id}}
{{s.row.param3}}
{{s.row.remark || ''}}
已完成
运行中
等待中
失败
停止
超时
{{s.row.failure_count}}
{{s.row.success_count}}
{{s.row.total}}
({{s.row.percent}})
{{formatElapsed(s.row.case_duration)}}
-
{{s.row.schedule.split('/')[0]}}/{{s.row.schedule.split('/')[1]}}
-
{{s.row.author_name}}
{{s.row.author}}
{{getProjectLabel(s.row.project_name_cn)}}
{{s.row.platform}}
复制地址
重跑
复制
停止
删除
刷新
总计:{{zoneStats.total}}
完成:{{zoneStats.type_1wc}}
运行:{{zoneStats.type_2run}}
等待:{{zoneStats.type_3wait}}
成功率:{{zoneTotalStats.success}} / {{zoneTotalStats.total}}({{zoneTotalStats.pct}}%)
停止:{{zoneStats.type_5stop}}
分片#{{zoneActiveRow.zid}}
加载中...
实时日志 - 分片#{{zoneActiveRow.zid}}
刷新
{{zoneLogContent[zoneActiveRow.zid] || '加载中...'}}
暂无记录
{{line.time}}
{{line.content}}
AI 正在分析报告,请稍候...
分析耗时通常在 10-60 秒
耗时: {{formatAIDuration(aiAnalyzeDuration)}}
(缓存)
开始分析
复制结果
关闭
分片 #{{updateNodeRow.zid}} 当前节点:
{{updateNodeRow.node_ip || '未分配'}}
{{n.ip}}
{{n.name}}
启用
禁用
隐藏
修改后分片将在新节点上等待调度(不会触发重跑)
取消
确认
提交修改
清空
添加项目
刷新项目列表
project_name: {{s.row.project_name}}
描述: {{s.row.describe}}
children: {{s.row.children}}
复制参数 {{s.row.describe}}
{{s.row.author}}
{{s.row.cc}}
编辑
删除
自动化占用超时设置
保存
子节点IP占用为自动化占用,超时自动释放
超时设置
刷新
每15秒自动同步
{{col.label}}
列设置
复制表格
总计 {{iosDevices.length}} 台
| 空闲 {{iosDevices.filter(function(d){return d.status==='idle'}).length}}
| 占用 {{iosDevices.filter(function(d){return d.status==='busy'}).length}}
| 离线 {{iosDevices.filter(function(d){return d.status==='offline'}).length}}
批量修改项目
已选 {{iosSelectedDevices.length}} 台
{{s.row.market_name || '-'}} - {{s.row.product_version || '-'}}
{{s.row.battery_level}}%
-
{{s.row.serial_number || s.row.udid}}
{{s.row.node_ip || s.row.node_name || '-'}}
{{s.row.wda_url}}
-
{{iosStatusText(s.row.status,
s.row)}}
{{formatCountdown(iosOccupyRemaining(s.row))}}
{{s.row.occupied_by}}
待上报
Web
-
{{s.row.remark || '-'}}
{{s.row.bind_info && s.row.bind_info !== '{}' ? s.row.bind_info : '-'}}
{{appName.split('.').slice(-1)[0]}}: {{appInfo.user_id}}
-
占用
释放
强释
刷新
数据库存储,包含所有历史设备
{{col.label}}
列设置
复制表格
总计 {{(iosDevicesAll||[]).length}} 台
| 空闲 {{(iosDevicesAll||[]).filter(function(d){return d.status==='idle'}).length}}
| 占用 {{(iosDevicesAll||[]).filter(function(d){return d.status==='busy'}).length}}
| 在线 {{(iosDevicesAll||[]).filter(function(d){return d.online_status==='online'}).length}}
| 离线 {{(iosDevicesAll||[]).filter(function(d){return d.online_status==='offline'}).length}}
{{s.row.market_name || '-'}} - {{s.row.product_version || '-'}}
{{s.row.battery_level}}%
-
{{s.row.serial_number || s.row.udid}}
{{s.row.node_ip || s.row.node_name || '-'}}
{{s.row.wda_url}}
-
{{iosStatusText(s.row.status,
s.row)}}
{{formatCountdown(iosOccupyRemaining(s.row))}}
{{s.row.online_status==='online'?'在线':'离线'}}
>
{{s.row.occupied_by}}
待上报
Web
-
{{s.row.remark || '-'}}
{{s.row.bind_info && s.row.bind_info !== '{}' ? s.row.bind_info : '-'}}
{{appName.split('.').slice(-1)[0]}}: {{appInfo.user_id}}
-
占用
释放
强释
新增项目
刷新
{{s.row.platform==='ios'?'iOS':'Android'}}
上移
编辑
删除
{{iosProjectEditingId?'编辑项目':'新增项目'}}
iOS
Android
保存
取消
加载中...
{{commit.hash}}
{{commit.message}}
{{commit.author}} - {{commit.date}}
更新代码(全部节点)
{{scope.row.node_name}}
{{scope.row.node_ip}}
{{scope.row.success ? '成功' : '失败'}}
{{scope.row.output || '-'}}
{{scope.row.error}}
{{(scope.row.duration/1000).toFixed(1)}}s
关闭
iOS
Android
{{p.display_name}} ({{p.project_name}})
暂无项目
任务名称
重跑次数
AJ包
App URL
下载到本地
解析到 {{parsedUrlList.length}} 个链接
全部下载到本地
{{idx+1}}.
{{_extractFileName(u)}}
检测到非局域网链接,设备无法直接访问,请先下载到本地(或按 Enter)
立即下载到本地
{{appDownloadStatus==='pending'?'准备下载...':appDownloadStatus==='downloading'?'正在下载...':appDownloadStatus==='completed'?'下载完成':'下载失败'}}
{{appBatchDownloads[0] && appBatchDownloads[0].sourceName}}
取消
速度: {{formatDownloadSpeed(appDownloadSpeed)}}
已用: {{_formatElapsed(appDownloadElapsed)}}
预计: {{_formatElapsed(appDownloadEstimated)}}
预计超时,下载速度过慢
{{appDownloadError}}
已替换为局域网地址,可直接提交
批量下载 {{appBatchDownloads.length}} 个包
{{appBatchDownloads.filter(function(i){return i.status==='completed'}).length}} 完成
{{appBatchDownloads.filter(function(i){return i.status==='failed'}).length}} 失败
取消
{{item.sourceName}}
{{formatDownloadSpeed(item.speed)}}
完成
失败
{{item.error}}
目录: apps/{{iosRunForm.system}}/{{iosRunForm.project || '(未选项目)'}}
{{file.remark}}{{file.name}}({{file.uploader_name}})
已选 {{selectedAppFiles.length}} 个文件,提交时将为每个文件创建独立任务
本次上传 ({{appUploadFiles.length}})
清空
{{f.name}}
{{f.progress}}%
{{_formatElapsed(f.elapsed)}}
{{_formatElapsed(f.elapsed)}}
失败
文件总进度
{{appUploadCurrent}} / {{appUploadTotal}}
已耗时: {{_formatElapsed(appUploadElapsed)}}
上传完成
共 {{appUploadFiles.length}} 个文件,总耗时 {{_formatElapsed(appUploadLastElapsed)}}
点击继续上传
多个包体拖拉至此批量上传
文件20M+需要挂机等较久,着急建议走内网
设备池 ({{iosRunForm.device_ids.length}}/{{iosRunDeviceList.length}})
空闲-{{iosRunDeviceList.filter(function(d){return d.status==='idle'}).length}} 忙碌-{{iosRunDeviceList.filter(function(d){return d.status!=='idle'}).length}} 电量-{{iosRunAvgBattery}}%
全选
清空
{{iosDeviceLabel(d)}} [{{d.status==='idle'?'空闲':'忙碌'}}] {{d.battery_level>=0 ? d.battery_level : d.battery}}%
暂无设备
用例 ({{manualSelectedCases.length}}/{{iosRunFilteredCases.length}})
全选
清空
运行节点 ({{iosRunForm.node_ips.length}}/{{iosRunNodes.length}})
全选
清空
{{n.name}} ({{n.ip}})
[禁用]
暂无节点
已选: 设备 {{iosRunForm.device_ids.length}} 台,
用例 {{manualSelectedCases.length}} 条,
节点 {{iosRunForm.node_ips.length}} 个
提交运行
包管理
目录: apps/{{iosRunForm.system}}/{{iosRunForm.project || '(未选项目)'}} {{appsFileList.length}} 个包
刷新
{{scope.row.name}}
{{formatFileSize(scope.row.file_size)}}
{{scope.row.uploader_name}}
-
{{_formatElapsed(scope.row.upload_elapsed)}}
-
{{scope.row.created_at}}
-
{{scope.row.remark}}
点击添加备注
-
{{job.task_id}}({{job.percent}})
|
+{{getAppRelatedJobs(scope.row.url).length - 5}}
删除
暂无包文件
全部 apps 目录的上传记录(按时间倒序)
刷新
{{scope.row.name}}
{{scope.row.subdir || '-'}}
{{formatFileSize(scope.row.file_size)}}
{{scope.row.uploader_name}}
-
{{scope.row.created_at}}
-
-
{{job.task_id}}({{job.percent}})
|
+{{getAppRelatedJobs(scope.row.url).length - 5}}
暂无上传记录
{{remarkDialogFile && remarkDialogFile.name}}
取消
确定
总掉线次数
{{iosDisconnectStats.total || 0}}
WDA掉线
{{iosDisconnectStats.wda_count || 0}}
USB掉线
{{iosDisconnectStats.usb_count || 0}}
按设备统计:
{{name}}: {{count}}次
按节点统计:
{{ip}}: {{count}}次
{{scope.row.type==='wda_offline'?'WDA掉线':'USB掉线'}}
暂无掉线记录
总释放次数
{{iosReleaseStats.total || 0}}
进程死亡
{{iosReleaseStats.process_dead_count || 0}}
节点离线
{{iosReleaseStats.node_offline_count || 0}}
占用超时
{{iosReleaseStats.occupy_timeout || 0}}
强制释放
{{iosReleaseStats.force_release || 0}}
按设备统计:
{{name}}: {{count}}次
按节点统计:
{{ip}}: {{count}}次
{{scope.row.device_name || scope.row.device_id}}
{{releaseTypeLabel(scope.row.type)}}
#{{scope.row.zid}}
-
{{scope.row.pid}}
-
暂无释放记录
IP:{{clientIP}} 欢迎你
QA Platform 自动化测试平台
404
页面未找到
请求的路由不存在,请检查菜单配置或URL地址
返回主页
自动化占用超时设置
保存
子节点IP占用为自动化占用,超时自动释放
超时设置
刷新
每15秒
{{col.label}}
列设置
复制表格
总计 {{(androidDevices||[]).length}} 台
| 空闲 {{(androidDevices||[]).filter(function(d){return d.status==='idle'}).length}}
| 占用 {{(androidDevices||[]).filter(function(d){return d.status==='busy'}).length}}
| 离线 {{(androidDevices||[]).filter(function(d){return d.status==='offline'}).length}}
批量修改项目
批量安装
已选 {{(androidSelectedDevices||[]).length}} 台
{{s.row.serial}}
{{s.row.device_name || '-'}}
{{s.row.brand || '-'}} {{s.row.model || ''}}
{{s.row.android_version || '-'}} / {{s.row.sdk_version || '-'}}
{{s.row.battery}}%
-
{{s.row.ip}}
-
{{androidStatusText(s.row.status, s.row)}}
{{formatCountdown(androidOccupyRemaining(s.row))}}
{{s.row.occupied_by}}
Web
-
{{s.row.remark || '-'}}
{{s.row.bind_info && s.row.bind_info !== '{}' ? s.row.bind_info : '-'}}
{{appName.split('.').slice(-1)[0]}}: {{appInfo.user_id}}
-
{{fmtAndroidTimestamp(s.row.update_time)}}
占用
释放
强占
刷新
数据库存储,包含所有历史设备
{{col.label}}
列设置
复制表格
总计 {{(androidDevicesAll||[]).length}} 台
| 空闲 {{(androidDevicesAll||[]).filter(function(d){return d.status==='idle'}).length}}
| 占用 {{(androidDevicesAll||[]).filter(function(d){return d.status==='busy'}).length}}
| 在线 {{(androidDevicesAll||[]).filter(function(d){return d.online_status==='online'}).length}}
| 离线 {{(androidDevicesAll||[]).filter(function(d){return d.online_status==='offline' || !d.online_status}).length}}
{{s.row.serial}}
{{s.row.device_name || '-'}}
{{s.row.brand || '-'}} {{s.row.model || ''}}
{{s.row.android_version || '-'}} / {{s.row.sdk_version || '-'}}
{{s.row.battery}}%
-
{{s.row.ip}}
-
{{androidStatusText(s.row.status, s.row)}}
{{formatCountdown(androidOccupyRemaining(s.row))}}
{{s.row.online_status==='online' ? '在线' : '离线'}}
{{s.row.occupied_by}}
Web
-
{{s.row.remark || '-'}}
{{s.row.bind_info && s.row.bind_info !== '{}' ? s.row.bind_info : '-'}}
{{appName.split('.').slice(-1)[0]}}: {{appInfo.user_id}}
-
{{fmtAndroidTimestamp(s.row.update_time)}}
占用
释放
强占
删除
总掉线次数
{{androidDisconnectStats.total || 0}}
ADB掉线
{{androidDisconnectStats.adb_count || 0}}
USB掉线
{{androidDisconnectStats.usb_count || 0}}
ATX 7912掉线
{{androidDisconnectStats.atx_count || 0}}
Gin 8080掉线
{{androidDisconnectStats.gin_count || 0}}
按设备统计:
{{name}}: {{count}}次
按节点统计:
{{ip}}: {{count}}次
{{scope.row.type==='adb_offline'?'ADB掉线':scope.row.type==='usb_offline'?'USB掉线':scope.row.type==='atx_offline'?'ATX 7912掉线':'Gin 8080掉线'}}
暂无掉线记录
总释放次数
{{androidReleaseStats.total || 0}}
进程死亡
{{androidReleaseStats.process_dead_count || 0}}
节点离线
{{androidReleaseStats.node_offline_count || 0}}
占用超时
{{androidReleaseStats.occupy_timeout || 0}}
强制释放
{{androidReleaseStats.force_release || 0}}
按设备统计:
{{name}}: {{count}}次
按节点统计:
{{ip}}: {{count}}次
{{scope.row.device_name || scope.row.device_id}}
{{releaseTypeLabel(scope.row.type)}}
#{{scope.row.zid}}
-
{{scope.row.pid}}
-
暂无释放记录
iOS Monkey 测试 (Fastbot)
分钟
ms
设备 ({{monkeyForm.device_ids.length}}/{{monkeyDevices.length}})
全选
清空
{{monkeyDeviceLabel(d)}}
暂无在线设备
节点 ({{monkeyForm.node_ips.length}}/{{monkeyNodes.length}})
全选
清空
{{n.name}} ({{n.ip}})
暂无节点
已选: 设备 {{monkeyForm.device_ids.length}} 台,
节点 {{monkeyForm.node_ips.length}} 个
刷新设备
启动Monkey
Monkey 任务列表
刷新
{{monkeyStatusText(scope.row.status)}}
{{scope.row.success}} / {{scope.row.fail}} / {{scope.row.total}}
详情
{{monkeyStatusText(scope.row.status)}}
设备 ({{robustnessIosForm.device_ids.length}}/{{robustnessIosDevices.length}})
全选
清空
{{robustnessIosDeviceLabel(d)}}
节点 ({{robustnessIosForm.node_ips.length}}/{{robustnessIosNodes.length}})
全选
清空
{{n.name}} ({{n.ip}})
启动测试
Android健壮性测试
设备 ({{robustnessAndroidForm.device_ids.length}}/{{robustnessAndroidDevices.length}})
全选
清空
{{robustnessAndroidDeviceLabel(d)}}
暂无在线设备
节点 ({{robustnessAndroidForm.node_ips.length}}/{{robustnessAndroidNodes.length}})
全选
清空
{{n.name}} ({{n.ip}})
暂无节点
已选: 设备 {{robustnessAndroidForm.device_ids.length}} 台,
节点 {{robustnessAndroidForm.node_ips.length}} 个
刷新设备
启动测试
新增定时任务
刷新
{{ scope.row.start_hour }}:00 ~ {{ scope.row.end_hour }}:00
{{ formatInterval(scope.row.interval) }}
{{ scope.row.last_run || '-' }}
{{ scope.row.next_run || '-' }}
立即执行
编辑
删除
至
分钟
即每 {{ formatInterval(cronTaskForm.interval) }} 执行一次
取消
保存
新增强制重跑
刷新
任务完成后绕过成功率直接重跑所有分片,用于压测调度器
{{ scope.row.start_hour }}:00 ~ {{ scope.row.end_hour }}:00
{{ formatInterval(scope.row.interval) }}
{{ scope.row.last_run || '-' }}
{{ scope.row.next_run || '-' }}
立即执行
编辑
删除
至
分钟
任务完成后等待 {{ formatInterval(forceRerunForm.interval) }} 再次重跑
取消
保存
启动脚本
刷新
{{ scope.row.status === 'running' ? '运行中' : scope.row.status === 'error' ? '异常' : '已停止' }}
{{ scope.row.device_name || '-' }}
{{ scope.row.device_ip }}
{{ scope.row.error || '-' }}
重启
停止
移除
正在启动投屏...
{{ anchorScreenMode === 'scrcpy' ? 'scrcpy' : '截图模式' }}
{{ anchorActiveRow.device_name || anchorActiveRow.device_ip }}
实时日志 - {{ anchorActiveRow.script_name }}
{{ anchorLogStatus === 'running' ? '运行中' : '已停止' }}
刷新
取消
启动
AI 图片元素定位
上传本地图片
已选:{{ aiLocateFileName }}
次数:
{{ aiLocateLoading && aiLocateProgress ? '定位中 ' + aiLocateProgress : '开始定位' }}
{{ aiBooleanLoading && aiBooleanProgress ? '判断中 ' + aiBooleanProgress : 'AI 判断 (T/F)' }}
{{ aiQueryLoading && aiQueryProgress ? '提取中 ' + aiQueryProgress : 'AI 提取 (Query)' }}
手动打点(绿)
X:
Y:
绝对:({{ aiLocateManualX }}, {{ aiLocateManualY }})
相对:({{ (aiLocateManualX / aiLocateImgNaturalW).toFixed(4) }}, {{ (aiLocateManualY / aiLocateImgNaturalH).toFixed(4) }})
截图:{{ aiLocateImgNaturalW }} x {{ aiLocateImgNaturalH }}
AI #{{ idx + 1 }}:
({{ res.center_pixel[0].toFixed(1) }}, {{ res.center_pixel[1].toFixed(1) }})
/ {{ res.center_percent[0].toFixed(4) }}, {{ res.center_percent[1].toFixed(4) }}
AI #{{ idx + 1 }}:
{{ res._error }}
点击:
({{ aiLocateClickPixel[0] }}, {{ aiLocateClickPixel[1] }})
/ {{ aiLocateClickPercent[0].toFixed(4) }}, {{ aiLocateClickPercent[1].toFixed(4) }}
手动:
({{ aiLocateManualX }}, {{ aiLocateManualY }})
/ {{ (aiLocateManualX / aiLocateImgNaturalW).toFixed(4) }}, {{ (aiLocateManualY / aiLocateImgNaturalH).toFixed(4) }}
{{ aiLocateError }}
#{{ idx + 1 }}
{{ res._error }}
上传图片或粘贴 URL 后预览
点击图片获取坐标 | 红=AI 蓝=点击 绿=手动
AI 调用详情 #{{ idx + 1 }}
{{ res._error }}
坐标:
({{ res.center_pixel[0].toFixed(1) }}, {{ res.center_pixel[1].toFixed(1) }}) / {{ res.center_percent[0].toFixed(4) }}, {{ res.center_percent[1].toFixed(4) }}
未检测到
AI 分析:
{{ res.reasoning }}
AI 调用详情
提示词:{{ aiLocateResult._ai_prompt || aiLocatePrompt }}
图片尺寸:{{ aiLocateResult.image_size.width }} x {{ aiLocateResult.image_size.height }}
AI 分析:
{{ aiLocateResult.reasoning }}
AI 判断 #{{ idx + 1 }}
{{ res.result ? 'True' : 'False' }}
置信度: {{ res.confidence.toFixed(2) }}
{{ res._error }}
结果:{{ res.result ? 'True' : 'False' }}
说明:{{ res.message }}
AI 分析:
{{ res.reasoning }}
{{ aiBooleanError }}
AI 提取 #{{ idx + 1 }}
置信度: {{ res.confidence.toFixed(2) }}
{{ res._error }}
提取结果:
{{ typeof res.data === 'object' ? JSON.stringify(res.data, null, 2) : res.data }}
AI 分析:
{{ res.reasoning }}
{{ aiQueryError }}
执行操作后,结果将在此显示
OCR 定位
AI 模型定位(Qwen2.5-VL)
OCR 元素定位
上传本地图片
底部比例
OCR文字
底部控件
次数
定位元素
检测中...
图片预览
已缓存 base64 ({{Math.round(visionCachedBase64.length/1024)}}KB) · 右键图片可复制/另存为
上传图片或粘贴 URL 后预览
匹配结果
识别后显示匹配结果
第 {{round.round}} 次
{{round.items.length}} 个
{{item.type}}
{{item.label}}
({{item.x}}, {{item.y}})
点击
OCR 定位
AI 模型定位(Qwen2.5-VL)
AI 图片元素定位
上传本地图片
开始定位
手动打点(绿)
X:
Y:
绝对:({{ visionAIManualX }}, {{ visionAIManualY }})
相对:({{ (visionAIManualX/visionAIImgNaturalW).toFixed(4) }}, {{ (visionAIManualY/visionAIImgNaturalH).toFixed(4) }})
截图:{{ visionAIImgNaturalW }} x {{ visionAIImgNaturalH }}
AI:({{ visionAIResult.center_pixel[0].toFixed(1) }}, {{ visionAIResult.center_pixel[1].toFixed(1) }})
/ {{ visionAIResult.center_percent[0].toFixed(4) }}, {{ visionAIResult.center_percent[1].toFixed(4) }}
点击:({{ visionAIClickPixel[0] }}, {{ visionAIClickPixel[1] }})
/ {{ visionAIClickPercent[0].toFixed(4) }}, {{ visionAIClickPercent[1].toFixed(4) }}
手动:({{ visionAIManualX }}, {{ visionAIManualY }})
/ {{ (visionAIManualX/visionAIImgNaturalW).toFixed(4) }}, {{ (visionAIManualY/visionAIImgNaturalH).toFixed(4) }}
{{ visionAIError }}
点击图片获取坐标 | 红=AI 蓝=点击 绿=手动
AI 调用详情
私有提示词:{{ visionAIResult._ai_prompt || visionAIPrompt }}
图片尺寸:{{ visionAIResult.image_size.width }} x {{ visionAIResult.image_size.height }}
公共提示词:
{{ visionAIShowSystemPrompt?'收起':'展开' }}
{{ visionAIResult._system_prompt || '(未返回)' }}
AI 分析:
{{ visionAIResult.reasoning }}
AI 原始响应:
{{ visionAIResult._ai_raw_response }}
CV 模板匹配
上传截图
已选:{{ cvFileName }}
匹配模板
匹配所有模板
自动切割控件
阈值:
框选保存模板
在图片上拖拽框选区域,然后输入名称保存
区域:({{ cvCropRegion[0] }}, {{ cvCropRegion[1] }}) - ({{ cvCropRegion[2] }}, {{ cvCropRegion[3] }})
尺寸:{{ cvCropRegion[2] - cvCropRegion[0] }} x {{ cvCropRegion[3] - cvCropRegion[1] }}
保存为模板
匹配结果
匹配成功
坐标:({{ cvMatchResult.x }}, {{ cvMatchResult.y }})
置信度:{{ (cvMatchResult.confidence * 100).toFixed(1) }}%
区域:{{ JSON.stringify(cvMatchResult.region) }}
未匹配到
全模板匹配 ({{ cvMatchAllResults.length }})
{{ r.template }}
坐标 ({{ r.x }}, {{ r.y }}) | {{ (r.confidence * 100).toFixed(1) }}%
模板库 ({{ cvTemplates.length }})
刷新
{{ t }}
删
暂无模板
上传截图后预览,可在图片上框选区域保存为模板
图片尺寸: {{ cvImgNaturalW }} x {{ cvImgNaturalH }} | 拖拽框选区域保存模板 |
红点=匹配位置
蓝框=框选区域
AES 加解密工具 (ECB/CBC + PKCS7)
输入文本(明文/密文)
输出结果
{{ cryptoJsonPath }}
(点击复制)
{{ cryptoJsonValue }}
(点击复制)
{{ cryptoEditMode ? '切换树形视图' : '切换编辑模式' }}
复制
格式化
压缩
校验
Unicode转中文
中文转Unicode
首页路由设置
镜像路由
空白欢迎页
保存首页设置
设备自动化占用超时设置
保存超时设置
说明:子节点IP发起的占用视为自动化占用,超时后自动释放;非子节点占用为人工占用,不限制时间。
异常任务巡检设置
保存巡检设置
说明:分片运行超过指定时间无更新则标记为异常并释放设备;等待中的分片由调度器管理不做干预。任务的所有分片结束后自动汇总标记完成。
点点系统代理设置
保存
说明:点点系统的代理目标地址,默认 http://192.168.31.185:5273,后续迁移到其他服务器时修改此地址。
新增一级菜单
保存配置
重置
移动排序
思维导图
一级
添加子菜单
删除
二级
移动到
{{g.title || '(未命名)'}}
删除
直接拖拽节点调整顺序和层级,支持一级菜单互换位置、子菜单跨组移动。
取消
应用排序
拖拽节点可调整顺序和层级,修改后点「保存排序」生效。
全部展开
全部收起
{{ data.label }}
({{ data.routeKey }})
取消
保存排序
创建账号
全部(管理员)
已绑定
未绑定
{{scope.row.status===1?'正常':'禁用'}}
改密
{{scope.row.status===1?'禁用':'启用'}}
删号
用户名已存在
取消
创建
点击左侧用户,中间勾选路由权限,右侧实时预览该用户能看到的菜单。管理员自动全权限。
用户列表
飞书账号
管理
普通
{{ u.name }}
飞书
全部路由
{{u.routes.length}}个路由
无路由权限
账密账号
管理
普通
{{ u.name }}
账密
{{ u.username && u.username.indexOf('local:')===0 ? u.username.substring(6) : u.username }}
全部路由
{{u.routes.length}}个路由
无路由权限
暂无用户
请先选择左侧用户
{{ data.label }}
({{data.routeKey}})
{{ permEditName ? permEditName + ' 的视图' : '权限预览' }}
管理员
全路由
选择用户后显示视图
{{ data.label }}
{{ data.label }}
任务设置
自动重跑与通知规则
分片成功率低于此值自动触发重跑
低于此数量每小时报告会@告警
关闭后不再发送每小时设备统计
每个任务最多自动重跑次数
规则说明:
1. 分片完成时,如果成功率低于阈值,自动触发重跑(放到调度队列尾部)
2. 任务全部完成后,如果所有分片成功率都高于阈值但整体不是100%,群里 @ 低成功率用户
3. 任务全部完成后,如果成功率为0%,群里 @ 成功率0%用户
运行节点管理
刷新
暂无节点数据
启用
禁用
隐藏
启用:正常可选;
禁用:显示但不可选中;
隐藏:发起任务页面不显示。
状态实时生效。
禅道链接:
查询
飞书推送
缓存数据
缓存于 {{ item.cacheTime }}
耗时 {{ item.elapsed }}s
{{ item.dateRangeLabel }}
产品名称
{{ item.data.product_name }}
产品ID
{{ item.data.product_id }}
Bug总数
{{ item.data.total }}
统计周期
{{ item.dateRangeLabel || '最近3个月' }}
每日统计
{{ scope.row.total }}
{{ scope.row.p0 }}
0
{{ scope.row.p1 }}
0
{{ scope.row.p2 }}
0
{{ scope.row.p3 }}
0
{{ scope.row.p4 }}
暂无产品配置
点击上方"新增产品"按钮添加禅道产品链接
新增产品
数据库
加载中...
{{ data.label }}
({{ data.children ? data.children.length : 0 }})
{{ sqlMeta.selectedTable.name }}
{{ sqlMeta.selectedDb }}
{{ col.name }}
{{ col.type }}
[PK]
SQL 查询
Ctrl+Enter 执行
执行查询
重置
仅支持 SELECT,最多 1000 条
查询失败
{{ sqlQueryResult.error }}
查询成功
{{ sqlQueryResult.rows.length }} 条记录
{{ sqlQueryResult.duration }}ms
NULL
{{ scope.row[col] }}
历史记录
暂无历史记录
{{ item.sql.substring(0, 150) }}{{ item.sql.length > 150 ? '...' : '' }}
{{ item.user }}
{{ formatHistoryTime(item.last_used) }}
删除用户
{{ step.description }}
{{ step.detail }}