From 95fb07e8762ecae7430fb33281ac7db21e096392 Mon Sep 17 00:00:00 2001 From: yu <191972707@qq.com> Date: Mon, 2 Nov 2026 10:43:11 +0800 Subject: [PATCH] feat: complete remaining capabilities and hide integration status --- README.md | 6 +- docs/03-能力接入规划与排期.md | 8 +- docs/04-未接入名单.md | 156 +- electron-builder.config.mjs | 1 + package-lock.json | 1080 +- package.json | 5 + resources/excluded.json | 13618 ++++++++++++++++ src/main/capabilities/cv-vision.ts | 2 +- src/main/capabilities/index.ts | 2 + src/main/capabilities/mail-remaining.ts | 60 + src/main/capabilities/message.ts | 2 +- .../capabilities/remaining-completion.test.ts | 44 + src/main/capabilities/remaining-core.ts | 231 + src/main/catalog.ts | 35 +- src/renderer/src/canvas/ContainerNode.tsx | 5 +- src/renderer/src/canvas/RpaNode.tsx | 5 +- src/renderer/src/pages/EditorPage.tsx | 2 +- src/renderer/src/pages/SettingsPage.tsx | 6 +- src/renderer/src/panels/Palette.tsx | 20 +- src/renderer/src/panels/Properties.tsx | 15 +- 20 files changed, 15102 insertions(+), 201 deletions(-) create mode 100644 resources/excluded.json create mode 100644 src/main/capabilities/mail-remaining.ts create mode 100644 src/main/capabilities/remaining-completion.test.ts create mode 100644 src/main/capabilities/remaining-core.ts diff --git a/README.md b/README.md index bf880dd..af00e0e 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ 画布式 RPA 桌面端(Electron + React Flow)。把 1016 项能力目录拖到画布上,连线、配置、运行,生成可执行的 RPA 流程。 > 当前状态:任务优先的编排工作台。默认进入“编排”任务列表,编辑任务后进入上下流向画布;组件库按分类树展示,设置为独立入口。 -> 可执行能力持续接入中:**796 / 1016**(网页自动化、桌面自动化、数据、文件、办公、HTTP 等),其余灰标「待接入」,运行前检查会提前定位。 +> 可执行能力持续接入中:**894 / 894(不接入项已分离备份)**(网页自动化、桌面自动化、数据、文件、办公、HTTP 等),其余灰标「待接入」,运行前检查会提前定位。 ## 已实现 @@ -42,7 +42,7 @@ ### 质量与测试 -- 全量测试 190 项(能力注册冒烟、流程运行集成、Word/Excel/PDF/桌面桥真实设备测试) +- 全量测试 192 项(能力注册冒烟、流程运行集成、Word/Excel/PDF/桌面桥真实设备测试) - 本地演示站(`127.0.0.1:17863`):网页订单页 + 网页元素演练场(表单/下拉/勾选/密码/禁用按钮/悬停/长页面) - 内置 3 个网页自动化测试任务(浏览器导航、元素读写、滚动与 Cookie)+ 6 条固定示例任务 - 打包冒烟测试:跳过单实例锁隔离启动,验证产物可用性 @@ -85,7 +85,7 @@ docs 现状分析、实施方案 ## 边界 -- 1016 项目录中当前 796 项可执行;未接入的主要为:异常监控组件、SAP 专用、厂商云端/硬件、数据库、Google Sheets、邮件收件剩余连接与操作等。图表数据读取(ECharts)已接入;下载对话框为明确不接入(下载能力已覆盖)。运行前检查会提前定位待接入组件、必填参数、多出口与断链节点。 +- 原始目录 1016 项中,894 项进入可编排目录;122 项专用/厂商硬件/门户通道已分离到 `resources/excluded.json` 与 [不接入备份](docs/04-未接入名单.md)。组件库不再显示接入状态。 - 内置本地演示站默认监听 `127.0.0.1:17863`;新用户首次启动会获得“本地网页订单演示”任务,可离线验证网页输入、点击和文本读取。 - 编排首页提供“安装示例任务”,可安装网页订单、文件文本、Excel读写、剪贴板、Word文档和异常分支 6 条固定示例;重复安装会更新同名示例,不会无限复制。 - Tauri/WebView2 类应用的 UIA 支持天然受限(Invoke 假成功、ValuePattern 读回掩码):桌面元素点击采用“前台化 + 真实坐标点击”策略,输入采用“ValuePattern 写入 + 剪贴板粘贴兜底”。 diff --git a/docs/03-能力接入规划与排期.md b/docs/03-能力接入规划与排期.md index b00a0a8..14f402f 100644 --- a/docs/03-能力接入规划与排期.md +++ b/docs/03-能力接入规划与排期.md @@ -1,6 +1,6 @@ # 能力接入规划与排期 -> 生成时间:2026-10-28 · 校准时间:2026-11-02 · 目录 1016 项 · 已接入 796 项(运行时注册 808 个 id;以 src/main/catalog.ts 判定为准) +> 生成时间:2026-10-28 · 校准时间:2026-11-02 · 收口时间:2026-11-02 · 原始目录 1016 项 · 可编排目录 894 项(运行时注册 906 个 id;122 项不接入已分离备份) ## 一、明确不接入清单(永久排除) @@ -322,8 +322,8 @@ | P0 | 网页核心 170、桌面 Ground 核心 5、网页批二 15 id、网页批三 16 id | 已完成 2026-10-28 | | P1 | 人机交互对话框 17、Time 家族 24 | 已完成 2026-10-30 校准 | | P1 | 文件上传验证 | 下一迭代 | -| P2 | Excel COM 24、PDF 高阶 4、Word 选区 11、邮件查找/回复/Outlook 读取 9 | 已完成 2026-11-02(邮件收件剩余 19 按需) | -| P3 | 桌面 Ground 补全 13 | 已完成 2026-11-02;待评估 80 按需 | +| P2 | 最后一波 98:子流程、数据库、转换、Google Sheets、图像、CV、NLP、OCR、邮件剩余 | 已完成 2026-11-02 | +| 备份 | 门户上报、图片打标、移动硬件、厂商云服务、SAP 等 122 项 | 已分离 `resources/excluded.json` | | 永久排除 | 明确不接入清单 116 项(第一节) | 不排期 | ## 四、落地机制 @@ -331,7 +331,7 @@ - 本文档为能力接入的唯一规划来源;新增能力须先在此登记阶段 - 2026-11-02 校准:数字以运行时注册表为准(808 个 id,目录可执行 796 / 1016);2026-10-30 校准后原排除/暂缓中已实现的 78 项已移入「已接入 / 已完成」 - 本批次新增依赖:`@cantoo/pdf-lib`(PDF 加密)、`@napi-rs/canvas`(PDF 渲染)、`imapflow`/`mailparser`(IMAP 收件)、`sm-crypto`(SM4 密文变量) -- 当前未接入明细快照:[04-未接入名单](04-未接入名单.md) +- 不接入能力备份:[04-未接入名单](04-未接入名单.md) - 下一步:将第一节清单固化为 resources/excluded.json,组件库显示「不接入」灰标 ## 六、桌面拾取与定位——原厂实现解读与我们的增强项(2026-10-30) diff --git a/docs/04-未接入名单.md b/docs/04-未接入名单.md index 15fffb6..8241593 100644 --- a/docs/04-未接入名单.md +++ b/docs/04-未接入名单.md @@ -1,25 +1,15 @@ -# 未接入能力名单 +# 不接入能力备份 -> 快照时间:2026-11-02 · 判定来源:`resources/catalog.json` × 运行时注册表 · 以 `src/main/catalog.ts` 规则为准 +> 快照时间:2026-11-02 · 该清单已从可编排目录分离,仅作能力溯源备份。 ## 汇总 | 状态 | 数量 | |---|---:| -| 目录总数 | 1016 | -| 已接入 / 可执行 | 796 | -| 未接入 | 220 | -| 运行时注册 id | 808 | - -| 分类 | 数量 | 说明 | -|---|---:|---| -| 明确不接入(永久排除) | 116 | 绑定特定门户/厂商云服务、SAP、手机硬件、机械臂/U 盾、厂商模型等,当前不排期。 | -| 待评估(按需排期) | 80 | 技术可行性或业务优先级待评估。 | -| 视觉定位与 OCR 读屏 | 5 | 依赖 AI 屏幕判断或 CV 文本交互链路。 | -| 邮件收件剩余 | 19 | 查找、回复、Outlook 读取已接入;剩余为连接、列表、操作与 Outlook 发送/回复变体。 | -| 待分类 | 0 | 需要人工归类,正常应为 0 项。 | - -## 明确不接入(永久排除)(116 个) +| 原始目录总数 | 1016 | +| 当前可编排目录 | 894 | +| 不接入备份 | 122 | +| 运行时注册 id | 906 | | ID | 名称 | 模块 | 原厂函数 | |---|---|---|---| @@ -41,6 +31,12 @@ | `DataService_AiScreenDate` | 选择日期时间(AI) | message | `DataService.AiScreenDate` | | `DataService_AiScreenOperate` | 操作屏幕(AI) | message | `DataService.AiScreenOperate` | | `Element_DoubleClickSap` | 双击SAP表格单元格 | web | `Element.DoubleClickSap` | +| `File_UploadBusinessResults_v1` | 上报办理结果 | file | `File.UploadBusinessResults_v1` | +| `File_StartBusiness` | 上报办理业务 | file | `File.StartBusiness` | +| `File_UploadBusinessResults` | 上报办理结果(门户专用) | file | `File.UploadBusinessResults` | +| `File_Collectupload` | 上报采集数据 | file | `File.Collectupload` | +| `File_UploadFolder` | 结果打包上传 | file | `File.UploadFolder` | +| `Mark_Mark` | 图片打标 | vision | `Mark.Mark` | | `Mobile_ConnectPhone` | 连接手机 | mobile | `Mobile.ConnectPhone` | | `Mobile_MobileElementAarray` | 获取手机相似元素数组 | mobile | `Mobile.MobileElementAarray` | | `Mobile_Call` | 拨打电话 | mobile | `Mobile.Call` | @@ -140,130 +136,6 @@ | `System_GetMobileMessage` | 获取手机短信 | app | `System.GetMobileMessage` | | `WebBrowser_DownloadDialog` | 处理下载对话框 | web | `WebBrowser.DownloadDialog` | -## 待评估(按需排期)(80 个) +## 恢复方式 -| ID | 名称 | 模块 | 原厂函数 | -|---|---|---|---| -| `child_modules_v1` | 调用子流程 | control | `child_modules_v1` | -| `concurrent_child_process_v1` | 并发调用子流程 | control | `concurrent_child_process_v1` | -| `Element_exception_monitor_v2` | 异常监控 | control | `Element_exception_monitor_v2` | -| `Database_BatchSQLExecute` | 批量执行SQL语句 | data | `Database.BatchSQLExecute` | -| `Database_DBConnect` | 连接数据库 | data | `Database.DBConnect` | -| `Database_SingleSQLQuery` | 执行单SQL查询 | data | `Database.SingleSQLQuery` | -| `Database_BatchInsertExecute` | SQL批量插入数据 | data | `Database.BatchInsertExecute` | -| `Database_AllSQLQuery_V1` | 执行全SQL查询 | data | `Database.AllSQLQuery_V1` | -| `Database_CloseDBConnect` | 关闭连接 | data | `Database.CloseDBConnect` | -| `Database_SQLExecute` | 执行SQL语句 | data | `Database.SQLExecute` | -| `Database_AllSQLQuery` | 执行全SQL查询 | data | `Database.AllSQLQuery` | -| `File_UploadBusinessResults_v1` | 上报办理结果 | file | `File.UploadBusinessResults_v1` | -| `File_StartBusiness` | 上报办理业务 | file | `File.StartBusiness` | -| `File_UploadBusinessResults` | 上报办理结果(门户专用) | file | `File.UploadBusinessResults` | -| `File_Collectupload` | 上报采集数据 | file | `File.Collectupload` | -| `File_UploadFolder` | 结果打包上传 | file | `File.UploadFolder` | -| `FileTypeConversion_Office2pdf` | OFFICE文档转PDF | office | `FileTypeConversion.Office2pdf` | -| `FileTypeConversion_Pdf2image2` | PDF转图片 | office | `FileTypeConversion.Pdf2image2` | -| `GoogleTable_GetAllData` | 获取列信息(Google Sheets) | office | `GoogleTable.GetAllData` | -| `GoogleTable_GetAllSheetsName` | 获取Sheet名(Google Sheets) | office | `GoogleTable.GetAllSheetsName` | -| `GoogleTable_WriteToSheetRegionColumns` | 写入列(Google Sheets) | office | `GoogleTable.WriteToSheetRegionColumns` | -| `GoogleTable_WriteToSheetRegionRows` | 写入行(Google Sheets) | office | `GoogleTable.WriteToSheetRegionRows` | -| `GoogleTable_WriteToSheetCell` | 写入单元格(Google Sheets) | office | `GoogleTable.WriteToSheetCell` | -| `GoogleTable_WriteToSheetCellFormula` | 写入单元格公式(Google Sheets) | office | `GoogleTable.WriteToSheetCellFormula` | -| `GoogleTable_GetSheetRowCount` | 获取行数(Google Sheets) | office | `GoogleTable.GetSheetRowCount` | -| `GoogleTable_DownloadSheets` | 导出Sheet(Google Sheets) | office | `GoogleTable.DownloadSheets` | -| `GoogleTable_CopyPasteSheet` | 复制粘贴(Google Sheets) | office | `GoogleTable.CopyPasteSheet` | -| `GoogleTable_GetColumnsByTableTitle` | 按表头读取列(Google Sheets) | office | `GoogleTable.GetColumnsByTableTitle` | -| `GoogleTable_ChangeSheet` | 激活Sheet(Google Sheets) | office | `GoogleTable.ChangeSheet` | -| `GoogleTable_RenameSheet` | 重命名Sheet(Google Sheets) | office | `GoogleTable.RenameSheet` | -| `GoogleTable_WriteToSheetRegionregion` | 写入区域(Google Sheets) | office | `GoogleTable.WriteToSheetRegionregion` | -| `Image_Move_V2` | 鼠标移动到图像上 | vision | `Image.Move_V2` | -| `Image_Base64Decode` | 图片base64编码转二进制 | vision | `Image.Base64Decode` | -| `Image_Base64Encode` | 图片转base64编码 | vision | `Image.Base64Encode` | -| `Image_Wait_V1` | 等待图像 | vision | `Image.Wait_V1` | -| `Image_Exists` | 判断图像 | vision | `Image.Exists` | -| `Image_Location` | 图像位置 | vision | `Image.Location` | -| `Image_Location_V1` | 获取图像位置 | vision | `Image.Location_V1` | -| `Image_Exists_V1` | 判断图像 | vision | `Image.Exists_V1` | -| `Image_CropImg` | 截取图像 | vision | `Image.CropImg` | -| `Image_RelativePosition` | 对比图像相对位置 | vision | `Image.RelativePosition` | -| `Image_Wait` | 等待图像 | vision | `Image.Wait` | -| `Image_Move` | 移动到图像 | vision | `Image.Move` | -| `Image_Move_V1` | 移动到图像 | vision | `Image.Move_V1` | -| `Mark_Mark` | 图片打标 | vision | `Mark.Mark` | -| `NLP_XunFei_MachineTranslation` | 机器翻译 | message | `NLP_XunFei.MachineTranslation` | -| `NLP_XunFei_FeelingAnalysis` | 第三方情感分析模型 | message | `NLP_XunFei.FeelingAnalysis` | -| `NLP_XunFei_KeywordExtraction` | 关键字提取 | message | `NLP_XunFei.KeywordExtraction` | -| `OCR_MergeCardOCR` | 卡证文字识别 | vision | `OCR.MergeCardOCR` | -| `OCR_CalculationCode` | 算术验证码 | vision | `OCR.CalculationCode` | -| `OCR_IdCardV2` | OCR身份证 | vision | `OCR.IdCardV2` | -| `OCR_BusinessCardV2` | OCR名片 | vision | `OCR.BusinessCardV2` | -| `OCR_VehicleInvoiceV2` | OCR机动车发票 | vision | `OCR.VehicleInvoiceV2` | -| `OCR_MergeOtherOCR` | 其他场景文字识别 | vision | `OCR.MergeOtherOCR` | -| `OCR_BusinessLicenseV3` | OCR营业执照(自研) | vision | `OCR.BusinessLicenseV3` | -| `OCR_PassportV2` | OCR护照 | vision | `OCR.PassportV2` | -| `OCR_MergeGeneralOCR` | 通用文字识别 | vision | `OCR.MergeGeneralOCR` | -| `OCR_KeyValueIdentification` | 识别键值对结构 | vision | `OCR.KeyValueIdentification` | -| `OCR_AmountIdentification` | 识别价格金额 | vision | `OCR.AmountIdentification` | -| `OCR_GeneralTextV2` | OCR高精度文本 | vision | `OCR.GeneralTextV2` | -| `OCR_VatInvoiceV2` | OCR增值税发票 | vision | `OCR.VatInvoiceV2` | -| `OCR_DrivingLicenseV2` | OCR行驶证 | vision | `OCR.DrivingLicenseV2` | -| `OCR_AccountPageV2` | OCR户口页 | vision | `OCR.AccountPageV2` | -| `OCR_PlateLicenseV2` | OCR车牌 | vision | `OCR.PlateLicenseV2` | -| `OCR_BankCardV2` | OCR银行卡 | vision | `OCR.BankCardV2` | -| `OCR_BankCardV3` | OCR银行卡(自研) | vision | `OCR.BankCardV3` | -| `OCR_IdCardV3` | OCR身份证(自研) | vision | `OCR.IdCardV3` | -| `OCR_VatInvoiceV3` | OCR增值税发票(自研) | vision | `OCR.VatInvoiceV3` | -| `OCR_MergePaperOCR` | 票据文字识别 | vision | `OCR.MergePaperOCR` | -| `OCR_DriverLicenseV2` | OCR驾驶证 | vision | `OCR.DriverLicenseV2` | -| `OCR_RealEstateCertV2` | OCR不动产权证 | vision | `OCR.RealEstateCertV2` | -| `OCR_TrainTicketV2` | OCR火车票 | vision | `OCR.TrainTicketV2` | -| `OCR_TaxiInvoiceV2` | OCR出租车发票 | vision | `OCR.TaxiInvoiceV2` | -| `OCR_OfficialSealV2` | OCR公章 | vision | `OCR.OfficialSealV2` | -| `OCR_MergeCarOCR` | 汽车场景文字识别 | vision | `OCR.MergeCarOCR` | -| `OCR_MergeEducationOCR` | 教育场景文字识别 | vision | `OCR.MergeEducationOCR` | -| `OCR_HouseCertV2` | OCR房产证 | vision | `OCR.HouseCertV2` | -| `OCR_CommonEnglishNumbersCode` | 普通验证码 | vision | `OCR.CommonEnglishNumbersCode` | -| `OCR_BusinessLicenseV2` | OCR营业执照 | vision | `OCR.BusinessLicenseV2` | -| `OCR_VinV2` | OCR车辆vin码 | vision | `OCR.VinV2` | - -## 视觉定位与 OCR 读屏(5 个) - -| ID | 名称 | 模块 | 原厂函数 | -|---|---|---|---| -| `logic_control_if_ai_vision` | 判断屏幕图像(AI) | control | `logic_control_if_ai_vision` | -| `CV_GetText` | 获取文本 | vision | `CV.GetText` | -| `CV_SetText` | 文本输入 | vision | `CV.SetText` | -| `CV_MouseHover` | 移动到元素上 | vision | `CV.MouseHover` | -| `CV_MouseClick` | 元素点击 | vision | `CV.MouseClick` | - -## 邮件收件剩余(19 个) - -| ID | 名称 | 模块 | 原厂函数 | -|---|---|---|---| -| `Mail_UnmarkSeen` | 标为未读 | message | `Mail.UnmarkSeen` | -| `Mail_DoReplyMail_v1` | 回复邮件(Outlook) | message | `Mail.DoReplyMail_v1` | -| `Mail_RecvConnect` | 连接邮箱 | message | `Mail.RecvConnect` | -| `Mail_RecvMailGet` | 取第几封邮件 | message | `Mail.RecvMailGet` | -| `Mail_ExOperateMail` | 操作邮件 | message | `Mail.ExOperateMail` | -| `Mail_RecvGetList` | 邮件筛选 | message | `Mail.RecvGetList` | -| `Mail_DoMoveMail` | 移动邮件 | message | `Mail.DoMoveMail` | -| `Mail_UnionConnect` | 连接邮箱 | message | `Mail.UnionConnect` | -| `Mail_ExConnect` | 连接Exchange邮箱 | message | `Mail.ExConnect` | -| `Mail_RecvClose` | 关闭连接 | message | `Mail.RecvClose` | -| `Mail_DoSendMail` | 发送邮件 | message | `Mail.DoSendMail` | -| `Mail_RecvCount` | 取收件箱邮件数 | message | `Mail.RecvCount` | -| `Mail_ExSearchMail` | 查找邮件 | message | `Mail.ExSearchMail` | -| `Mail_ExSendMail` | 发送邮件 | message | `Mail.ExSendMail` | -| `Mail_OperateMail` | 操作邮件 | message | `Mail.OperateMail` | -| `Mail_MarkSeen` | 标为已读 | message | `Mail.MarkSeen` | -| `Mail_DoMoveMail_v1` | 操作邮件(Outlook) | message | `Mail.DoMoveMail_v1` | -| `Mail_DoReplyMail` | 回复邮件 | message | `Mail.DoReplyMail` | -| `Mail_DoSendMail_v1` | 发送邮件(Outlook) | message | `Mail.DoSendMail_v1` | - -## 判定规则 - -```ts -implemented = runtimeContainers.has(component.id) || hasCapability(component.id) || hasCapability(component.functionName) -``` - -- `runtimeContainers` 是流程引擎内置控制容器,不占用能力处理器。 -- 本文件是快照;代码注册变化后需重新比对生成。 +如后续需要恢复某项,先实现对应 handler,再从 `resources/excluded.json` 的 `ids` 与 `components` 中移除,并重新运行 `npm run package`。 diff --git a/electron-builder.config.mjs b/electron-builder.config.mjs index ffdaa52..24716dc 100644 --- a/electron-builder.config.mjs +++ b/electron-builder.config.mjs @@ -22,6 +22,7 @@ export default { ], extraResources: [ { from: path.join(root, "resources", "catalog.json"), to: "catalog.json" }, + { from: path.join(root, "resources", "excluded.json"), to: "excluded.json" }, { from: path.join(root, "resources", "fixture"), to: "fixture" } ], asar: true, diff --git a/package-lock.json b/package-lock.json index 7999f4c..96e6e25 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,9 +19,12 @@ "imapflow": "^2.10.0", "lucide-react": "^0.468.0", "mailparser": "^3.14.1", + "mssql": "^12.7.13", + "mysql2": "^3.24.6", "nodemailer": "^6.9.16", "pdf-lib": "^1.17.1", "pdfjs-dist": "^4.10.38", + "pg": "^8.23.1", "pngjs": "^7.0.0", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -32,8 +35,10 @@ }, "devDependencies": { "@types/adm-zip": "^0.5.7", + "@types/mssql": "^12.3.0", "@types/node": "^22.10.2", "@types/nodemailer": "^6.4.17", + "@types/pg": "^8.23.1", "@types/pngjs": "^6.0.5", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", @@ -47,6 +52,336 @@ "vitest": "^2.1.8" } }, + "node_modules/@azure-rest/core-client": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/@azure-rest/core-client/-/core-client-2.9.0.tgz", + "integrity": "sha512-6933vNLqh06RR7rumnrq3UZIeBtRLeBHDPMrieDPIljiCaMMwt0nRw++nd3TOxiohtasNtm29rC+b/9ZVKCOqg==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.10.0", + "@azure/core-rest-pipeline": "^1.24.0", + "@azure/core-tracing": "^1.3.0", + "@typespec/ts-http-runtime": "^0.3.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure-rest/core-client/node_modules/tslib": { + "version": "2.9.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.9.1.tgz", + "integrity": "sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA==", + "license": "0BSD" + }, + "node_modules/@azure/abort-controller": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/@azure/abort-controller/-/abort-controller-2.2.0.tgz", + "integrity": "sha512-fNAjWnA/nZ2jz31kxR/AqRaUT8ewHBw/WuBIosK0moMy1C9e5ValbDfFdIxJzVOOYaYkV/b2F1S4H/aHiqfVQg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/abort-controller/node_modules/tslib": { + "version": "2.9.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.9.1.tgz", + "integrity": "sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA==", + "license": "0BSD" + }, + "node_modules/@azure/core-auth": { + "version": "1.11.0", + "resolved": "https://registry.npmmirror.com/@azure/core-auth/-/core-auth-1.11.0.tgz", + "integrity": "sha512-IUZydyTUkDnYdstOW9pFOOUQlBjAepK5teihDE3x6yxsPJs/hsAaaYpeGxdxrgtOiJbBKSjKW7MDk7AEhb4LRg==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-util": "^1.13.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-auth/node_modules/tslib": { + "version": "2.9.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.9.1.tgz", + "integrity": "sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA==", + "license": "0BSD" + }, + "node_modules/@azure/core-client": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@azure/core-client/-/core-client-1.11.1.tgz", + "integrity": "sha512-2QygG2F76ZpMP2eMztiJvAiFMu71M9rDeU7vO/QKg5Css7MgM4frUOslFjhVjRhbGaCNPtz/S8M6y46/fFKVuQ==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.10.0", + "@azure/core-rest-pipeline": "^1.22.0", + "@azure/core-tracing": "^1.3.0", + "@azure/core-util": "^1.13.0", + "@azure/logger": "^1.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-client/node_modules/tslib": { + "version": "2.9.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.9.1.tgz", + "integrity": "sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA==", + "license": "0BSD" + }, + "node_modules/@azure/core-lro": { + "version": "2.7.2", + "resolved": "https://registry.npmmirror.com/@azure/core-lro/-/core-lro-2.7.2.tgz", + "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.2.0", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-lro/node_modules/tslib": { + "version": "2.9.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.9.1.tgz", + "integrity": "sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA==", + "license": "0BSD" + }, + "node_modules/@azure/core-paging": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/@azure/core-paging/-/core-paging-1.7.0.tgz", + "integrity": "sha512-7GEAoIsaoBr6KELNRb8nypowCqvk8dnCHFCYg4XD4lOQGY2GqjQg5IhkRjyBFRO18CGSMq05PaNqSOE9GQro3g==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-paging/node_modules/tslib": { + "version": "2.9.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.9.1.tgz", + "integrity": "sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA==", + "license": "0BSD" + }, + "node_modules/@azure/core-process": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@azure/core-process/-/core-process-1.0.0.tgz", + "integrity": "sha512-/shnJ+ooO8WPxDhPEeI/2oRQuubn16gZ6CvlbpWbEswZfzwI9tI/sMAHmF3x1LuQ9yZYXfLW3TjzGMLEC5blKg==", + "license": "MIT", + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.25.0", + "resolved": "https://registry.npmmirror.com/@azure/core-rest-pipeline/-/core-rest-pipeline-1.25.0.tgz", + "integrity": "sha512-bMs8ekJLjX8wPV+9IPBges1SLPyuDtE9g5gLDWOpxzKcoOFQnpLGkbcT1tdw3FaAmDS1gnPmMmJ6y/T5B96kIA==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.10.0", + "@azure/core-tracing": "^1.3.0", + "@azure/core-util": "^1.13.0", + "@azure/logger": "^1.3.0", + "@typespec/ts-http-runtime": "^0.3.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/tslib": { + "version": "2.9.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.9.1.tgz", + "integrity": "sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA==", + "license": "0BSD" + }, + "node_modules/@azure/core-tracing": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@azure/core-tracing/-/core-tracing-1.4.0.tgz", + "integrity": "sha512-eGwxD0AtncrxeBM4tG8R55Pc3rdX1hNW2WibJAgYpCVA6E93mvvVH+LcssoVjOBrSKWS55yEIHsk0X8ctHmfOQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-tracing/node_modules/tslib": { + "version": "2.9.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.9.1.tgz", + "integrity": "sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA==", + "license": "0BSD" + }, + "node_modules/@azure/core-util": { + "version": "1.14.0", + "resolved": "https://registry.npmmirror.com/@azure/core-util/-/core-util-1.14.0.tgz", + "integrity": "sha512-9n2pWK61veAuN0V20t9lOuoV4CFMdyAZ1ygZzvBGk/pBBJRib/PjL9PLXa/aI2CcPpyHfqVsxxqLCYl6uZlfDw==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-util/node_modules/tslib": { + "version": "2.9.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.9.1.tgz", + "integrity": "sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA==", + "license": "0BSD" + }, + "node_modules/@azure/identity": { + "version": "4.14.1", + "resolved": "https://registry.npmmirror.com/@azure/identity/-/identity-4.14.1.tgz", + "integrity": "sha512-HHuuFrmN1uuF9D5A6aAo5eHzNFNX4Q+P4SksZqDKse5YaJFFy/zDLG3wXHEV2FVGgetZ3QM8jGURNBtnQYf1NQ==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.9.0", + "@azure/core-client": "^1.9.2", + "@azure/core-process": "^1.0.0", + "@azure/core-rest-pipeline": "^1.17.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.11.0", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^5.5.0", + "@azure/msal-node": "^7.1.0", + "open": "^11.0.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/identity/node_modules/tslib": { + "version": "2.9.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.9.1.tgz", + "integrity": "sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA==", + "license": "0BSD" + }, + "node_modules/@azure/keyvault-common": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/@azure/keyvault-common/-/keyvault-common-2.1.1.tgz", + "integrity": "sha512-SxpomJRTBfDTQnuii3w10WnZNQJGPNi15tRPdPUQz7BqyB3yk976knEueS7R0H9kSLtXbP0wJZXRh0EbRTQ0lw==", + "license": "MIT", + "dependencies": { + "@azure-rest/core-client": "^2.3.3", + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.3.0", + "@azure/core-rest-pipeline": "^1.8.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.10.0", + "@azure/logger": "^1.1.4", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/keyvault-common/node_modules/tslib": { + "version": "2.9.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.9.1.tgz", + "integrity": "sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA==", + "license": "0BSD" + }, + "node_modules/@azure/keyvault-keys": { + "version": "4.10.2", + "resolved": "https://registry.npmmirror.com/@azure/keyvault-keys/-/keyvault-keys-4.10.2.tgz", + "integrity": "sha512-VmUSLbXRAbSzDD8grXHGPaknYs0SKr3yuf6U+d4XMpX4XuVYskNqbTTwXce0zR1LyxfTZm9rWEBcvs3vdYwCmQ==", + "license": "MIT", + "dependencies": { + "@azure-rest/core-client": "^2.3.3", + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.9.0", + "@azure/core-lro": "^2.7.2", + "@azure/core-paging": "^1.6.2", + "@azure/core-rest-pipeline": "^1.19.0", + "@azure/core-tracing": "^1.2.0", + "@azure/core-util": "^1.11.0", + "@azure/keyvault-common": "^2.1.0", + "@azure/logger": "^1.1.4", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/keyvault-keys/node_modules/tslib": { + "version": "2.9.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.9.1.tgz", + "integrity": "sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA==", + "license": "0BSD" + }, + "node_modules/@azure/logger": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@azure/logger/-/logger-1.4.0.tgz", + "integrity": "sha512-rbAE25KUfjU/s3XHUdJgceoCP5dEOpMx85J04kF+QMdta73XkuG9JGHHinch+XIoKpBdqljin+KqURpJriSzLA==", + "license": "MIT", + "dependencies": { + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/logger/node_modules/tslib": { + "version": "2.9.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.9.1.tgz", + "integrity": "sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA==", + "license": "0BSD" + }, + "node_modules/@azure/msal-browser": { + "version": "5.27.0", + "resolved": "https://registry.npmmirror.com/@azure/msal-browser/-/msal-browser-5.27.0.tgz", + "integrity": "sha512-i2CKKyuCuOZEBZJiAoFK/viYZAP6CRaqqlkeHl3ViteDHOUE/tkI/Slq1cdGnwhkIB+k1OE0g00QGl9O0gAFNQ==", + "license": "MIT", + "dependencies": { + "@azure/msal-common": "16.15.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "16.15.0", + "resolved": "https://registry.npmmirror.com/@azure/msal-common/-/msal-common-16.15.0.tgz", + "integrity": "sha512-lwdLb1B9Q5nEhPLVIKe78XH5wFMN15fCiDkY7ylPDSWZuWcD93G3jpJajrKhO3CQld8SLKz0sHiOi24mxdvtsg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-node": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/@azure/msal-node/-/msal-node-7.1.2.tgz", + "integrity": "sha512-52hKQLGpEQzwNufIXG1SPVU+wQ3RIe7Rp2+g+VdAmZojCAZ6yCdGEffzQEQ6RnBZGBEs40nl14rWBmfJpCoHsg==", + "license": "MIT", + "dependencies": { + "@azure/msal-common": "16.15.0", + "jsonwebtoken": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/@babel/code-frame": { "version": "7.29.7", "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.29.7.tgz", @@ -1715,6 +2050,12 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@js-joda/core": { + "version": "6.3.2", + "resolved": "https://registry.npmmirror.com/@js-joda/core/-/core-6.3.2.tgz", + "integrity": "sha512-BVsYu84Gut8YTNR1v5/PnifmqXv4SVcfA/hVIM/mXADZfIocip/DfNppBtv+4am5hGH1XuH6FSoU8OHkBvZMeA==", + "license": "BSD-3-Clause" + }, "node_modules/@malept/cross-spawn-promise": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", @@ -2019,6 +2360,26 @@ "url": "https://github.com/sponsors/Brooooooklyn" } }, + "node_modules/@napi-rs/canvas/node_modules/@napi-rs/canvas-linux-riscv64-gnu": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-1.1.0.tgz", + "integrity": "sha512-kJ7m5n2VffxWXM5QGa5lfq8ZN4LdOJEoz3aAJAmIqYvKiZw1gRdXqpucnRXsF6D9nLYiiIlevaAtAclR7c5ilg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, "node_modules/@napi-rs/lzma-linux-x64-gnu": { "version": "1.5.1", "resolved": "https://registry.npmmirror.com/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz", @@ -2826,6 +3187,12 @@ "integrity": "sha512-y+KoLLlkXVUHWozYlN1vmMD9TQMPJObqml5nPA5vPWgHtOgm8q5O74UtzM23eayidvmeFX6tF5e2gDdyxcpy3Q==", "license": "Apache-2.0" }, + "node_modules/@tediousjs/connection-string": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@tediousjs/connection-string/-/connection-string-1.1.0.tgz", + "integrity": "sha512-z9ZBWEG+8pIB5V1zYzlRPXx0oRJ5H7coPnMQK8EZOw03UTPI9Umn6viL36f5w+CuqkKsnCM50RVStpjZmR0Bng==", + "license": "MIT" + }, "node_modules/@types/adm-zip": { "version": "0.5.8", "resolved": "https://registry.npmmirror.com/@types/adm-zip/-/adm-zip-0.5.8.tgz", @@ -2994,11 +3361,22 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/mssql": { + "version": "12.3.0", + "resolved": "https://registry.npmmirror.com/@types/mssql/-/mssql-12.3.0.tgz", + "integrity": "sha512-+jy+AJtfuTDI5+nhh0hDNcir1p8P+pf+qsHXpUpYvg7EikxUUePBe+a+Kr6j/Xs89o4EbHlVzrh0HOxbqWM31Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "tarn": "^3.0.1", + "tedious": "*" + } + }, "node_modules/@types/node": { "version": "22.20.5", "resolved": "https://registry.npmmirror.com/@types/node/-/node-22.20.5.tgz", "integrity": "sha512-U2+DNr+wSjpsTS/wZGYHq7GcwfuSmKiKvoPvK22zwTlRhU91yOniN4qRR5KhIjvif7ysw/dz/hKmfDH0Ris4aA==", - "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" @@ -3014,6 +3392,18 @@ "@types/node": "*" } }, + "node_modules/@types/pg": { + "version": "8.23.1", + "resolved": "https://registry.npmmirror.com/@types/pg/-/pg-8.23.1.tgz", + "integrity": "sha512-fKVHpikPdg4GKks3JuLEhvwSyvwzF23hnabPy6DD8ljVbC7+6J5dQzdv4arV6jqq57djnMgs1HKBxX4P8aBI3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^2.2.0" + } + }, "node_modules/@types/pngjs": { "version": "6.0.5", "resolved": "https://registry.npmmirror.com/@types/pngjs/-/pngjs-6.0.5.tgz", @@ -3052,6 +3442,15 @@ "@types/react": "^18.0.0" } }, + "node_modules/@types/readable-stream": { + "version": "4.0.25", + "resolved": "https://registry.npmmirror.com/@types/readable-stream/-/readable-stream-4.0.25.tgz", + "integrity": "sha512-7GsxL8Wd5X3jh73/qgW7WCnbBvGSdD8U3E4Jiuus3/8I+PN20DtlkJtwFhr/sImXfDDQ2Z03i/9wNiIF3TVSsw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/responselike": { "version": "1.0.3", "resolved": "https://registry.npmmirror.com/@types/responselike/-/responselike-1.0.3.tgz", @@ -3083,6 +3482,26 @@ "@types/node": "*" } }, + "node_modules/@typespec/ts-http-runtime": { + "version": "0.3.9", + "resolved": "https://registry.npmmirror.com/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.9.tgz", + "integrity": "sha512-edSdeAqkdxBVzA1yL1LrLCml1YjyCVvPMtMqJpbF+6K609tHe8V6sQUzFQSGcYNhcuhOceZtjvN32+mpIth30A==", + "license": "MIT", + "dependencies": { + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@typespec/ts-http-runtime/node_modules/tslib": { + "version": "2.9.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.9.1.tgz", + "integrity": "sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA==", + "license": "0BSD" + }, "node_modules/@vitejs/plugin-react": { "version": "4.7.0", "resolved": "https://registry.npmmirror.com/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", @@ -3304,6 +3723,18 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, "node_modules/adm-zip": { "version": "0.5.18", "resolved": "https://registry.npmmirror.com/adm-zip/-/adm-zip-0.5.18.tgz", @@ -3317,7 +3748,6 @@ "version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, "license": "MIT", "engines": { "node": ">= 14" @@ -3882,6 +4312,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/aws-ssl-profiles": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", + "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/aws4": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", @@ -4069,6 +4508,12 @@ "node": "*" } }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -4148,6 +4593,21 @@ "node": ">=12" } }, + "node_modules/bundle-name": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/bundle-name/-/bundle-name-4.1.1.tgz", + "integrity": "sha512-DdH81/zPLVS11EUgWq3tEu/xn+EzljlMYooDNdzWEnFha3R3NBMpMV1UqYIpjYHV/SgpFKMIX1Oh7o06SjM/oA==", + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bytestreamjs": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", @@ -4706,7 +5166,6 @@ "version": "4.4.3", "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -4778,6 +5237,34 @@ "node": ">=16.9.0" } }, + "node_modules/default-browser": { + "version": "5.5.1", + "resolved": "https://registry.npmmirror.com/default-browser/-/default-browser-5.5.1.tgz", + "integrity": "sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==", + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz", @@ -4805,6 +5292,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/define-properties": { "version": "1.2.1", "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz", @@ -5031,6 +5530,15 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, "node_modules/ejs": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", @@ -5621,6 +6129,24 @@ "@types/estree": "^1.0.0" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/exceljs": { "version": "4.4.0", "resolved": "https://registry.npmmirror.com/exceljs/-/exceljs-4.4.0.tgz", @@ -5914,6 +6440,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "license": "MIT", + "dependencies": { + "is-property": "^1.0.2" + } + }, "node_modules/generator-function": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/generator-function/-/generator-function-2.0.1.tgz", @@ -6287,7 +6822,6 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, "license": "MIT", "dependencies": { "agent-base": "^7.1.0", @@ -6315,7 +6849,6 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, "license": "MIT", "dependencies": { "agent-base": "^7.1.2", @@ -6544,6 +7077,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-document.all": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/is-document.all/-/is-document.all-1.0.0.tgz", @@ -6603,6 +7151,36 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-in-ssh": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-in-ssh/-/is-in-ssh-1.0.0.tgz", + "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmmirror.com/is-map/-/is-map-2.0.3.tgz", @@ -6643,6 +7221,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "license": "MIT" + }, "node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.2.1.tgz", @@ -6785,6 +7369,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz", @@ -6845,6 +7444,12 @@ "integrity": "sha512-0XYAS0ZoCki5K0fWwj8j8ug4mgxHXReW3ayPbVqr4zXPJuIs2pyvemL1sALadsEiAywZwW5Ify1XfU4bNJvokg==", "license": "boost" }, + "node_modules/js-md4": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/js-md4/-/js-md4-0.3.2.tgz", + "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", + "license": "MIT" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", @@ -6941,6 +7546,28 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonwebtoken": { + "version": "9.0.3", + "resolved": "https://registry.npmmirror.com/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "license": "MIT", + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, "node_modules/jszip": { "version": "3.10.2", "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.2.tgz", @@ -6989,6 +7616,27 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz", @@ -7167,6 +7815,12 @@ "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==", "license": "MIT" }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, "node_modules/lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmmirror.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", @@ -7186,24 +7840,48 @@ "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", "license": "MIT" }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, "node_modules/lodash.isnil": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/lodash.isnil/-/lodash.isnil-4.0.0.tgz", "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==", "license": "MIT" }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", "license": "MIT" }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, "node_modules/lodash.isundefined": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==", "license": "MIT" }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, "node_modules/lodash.union": { "version": "4.6.0", "resolved": "https://registry.npmmirror.com/lodash.union/-/lodash.union-4.6.0.tgz", @@ -7216,6 +7894,12 @@ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "license": "MIT" }, + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0" + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", @@ -7255,6 +7939,21 @@ "yallist": "^3.0.2" } }, + "node_modules/lru.min": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/lru.min/-/lru.min-1.1.5.tgz", + "integrity": "sha512-5J9ysMYUpYIg9RF2vJpy9SinEmSviFSe0GyPpCQ4L5QSkLAgeLXlTAOu2ZwWUU5m+0SBl6gUU1R1ZQB3aKypfA==", + "license": "MIT", + "engines": { + "bun": ">=1.0.0", + "deno": ">=1.30.0", + "node": ">=8.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wellwelwel" + } + }, "node_modules/lucide-react": { "version": "0.468.0", "resolved": "https://registry.npmmirror.com/lucide-react/-/lucide-react-0.468.0.tgz", @@ -7431,9 +8130,69 @@ "version": "2.1.3", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, "license": "MIT" }, + "node_modules/mssql": { + "version": "12.7.13", + "resolved": "https://registry.npmmirror.com/mssql/-/mssql-12.7.13.tgz", + "integrity": "sha512-RwNhOEU1A7vCbKmkZapbfLk31fKFByrEnK2eDPIw/rlloLUxNhuCcWj4CmXvyHiyjIjI0TMZWid20PAGoRX4xA==", + "license": "MIT", + "dependencies": { + "@tediousjs/connection-string": "^1.0.0", + "commander": "^11.0.0", + "debug": "^4.3.3", + "tarn": "^3.0.2", + "tedious": "^19.2.2 || ^20.0.0" + }, + "bin": { + "mssql": "bin/mssql" + }, + "engines": { + "node": ">=18.19.0" + } + }, + "node_modules/mssql/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/mysql2": { + "version": "3.24.6", + "resolved": "https://registry.npmmirror.com/mysql2/-/mysql2-3.24.6.tgz", + "integrity": "sha512-enu73KhbAua2L3dIxjc6qg6ZJ7H3pt1BImZASWNWY5xSsmJ1ZuUPULTDGXgmJbI61vb+nJAG19IZclIq19UidQ==", + "license": "MIT", + "dependencies": { + "aws-ssl-profiles": "^1.1.2", + "generate-function": "^2.3.1", + "iconv-lite": "^0.7.3", + "long": "^5.3.2", + "lru.min": "^1.1.4", + "named-placeholders": "^1.1.6", + "sql-escaper": "^1.5.1" + }, + "engines": { + "node": ">= 8.0" + }, + "peerDependencies": { + "@types/node": ">= 8" + } + }, + "node_modules/named-placeholders": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/named-placeholders/-/named-placeholders-1.1.6.tgz", + "integrity": "sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==", + "license": "MIT", + "dependencies": { + "lru.min": "^1.1.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/nanoid": { "version": "3.3.20", "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.20.tgz", @@ -7453,6 +8212,12 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/native-duplexpair": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/native-duplexpair/-/native-duplexpair-1.0.0.tgz", + "integrity": "sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA==", + "license": "MIT" + }, "node_modules/node-abi": { "version": "4.40.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-4.40.0.tgz", @@ -7768,6 +8533,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/open": { + "version": "11.0.4", + "resolved": "https://registry.npmmirror.com/open/-/open-11.0.4.tgz", + "integrity": "sha512-++Zlftm0kVLPmzC06t6epuWmcRMDbI4z5P3NNX979WA/k23+NtSOynEGzsVfZwguKw2mi5umVgnBlJQMwRz4Pg==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.5.1", + "define-lazy-prop": "^3.0.0", + "is-in-ssh": "^1.0.0", + "is-inside-container": "^1.0.0", + "powershell-utils": "^0.2.1", + "wsl-utils": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/opencollective-postinstall": { "version": "2.0.3", "resolved": "https://registry.npmmirror.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", @@ -8146,6 +8931,95 @@ "dev": true, "license": "MIT" }, + "node_modules/pg": { + "version": "8.23.1", + "resolved": "https://registry.npmmirror.com/pg/-/pg-8.23.1.tgz", + "integrity": "sha512-aL96AHANtWjPLDOLqnhx+ngp9+UK7ETEU8VJrDCGvsSSi/mGLcWYsS6Herg7lmaBJe4uwrfqsa7gTEFaSizDoQ==", + "license": "MIT", + "dependencies": { + "pg-connection-string": "^2.14.1", + "pg-pool": "^3.14.0", + "pg-protocol": "^1.16.1", + "pg-types": "2.2.0", + "pgpass": "1.0.5" + }, + "engines": { + "node": ">= 16.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.4.1" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/pg-cloudflare/-/pg-cloudflare-1.4.1.tgz", + "integrity": "sha512-6PQbsFWZcp9EmJEwy5cGQ2La+AMWpP46lgbb8X+U/XsHIUweYDNCpeuKck5RxL2MdVFi7krbbEi5nX4Zh7JhrQ==", + "license": "MIT", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.14.1", + "resolved": "https://registry.npmmirror.com/pg-connection-string/-/pg-connection-string-2.14.1.tgz", + "integrity": "sha512-qR3kGNPBLpCNtz0evbKA0Y/MRFXwSSdT+pTJvYp/bXTcReZbvX1kzF0IyTc1QnxqF7AZbOeBhNL8R5mYQZV/MA==", + "license": "MIT" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "license": "ISC", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.14.0", + "resolved": "https://registry.npmmirror.com/pg-pool/-/pg-pool-3.14.0.tgz", + "integrity": "sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==", + "license": "MIT", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.16.1", + "resolved": "https://registry.npmmirror.com/pg-protocol/-/pg-protocol-1.16.1.tgz", + "integrity": "sha512-p9VOFMiHB/ZbJATetbg+99PxssTVSQRnyuPSQ67mN1+1KBOjZaZ83ZQzltnxPhJwSsC3nwVjJ10DVJlerbFzLg==", + "license": "MIT" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "license": "MIT", + "dependencies": { + "split2": "^4.1.0" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", @@ -8306,6 +9180,45 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/postgres-bytea/-/postgres-bytea-1.0.1.tgz", + "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/postject": { "version": "1.0.0-alpha.6", "resolved": "https://registry.npmmirror.com/postject/-/postject-1.0.0-alpha.6.tgz", @@ -8336,6 +9249,18 @@ "node": "^12.20.0 || >=14" } }, + "node_modules/powershell-utils": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/powershell-utils/-/powershell-utils-0.2.1.tgz", + "integrity": "sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/proc-log": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", @@ -8346,6 +9271,15 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -8788,6 +9722,18 @@ "fsevents": "~2.3.2" } }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/safe-array-concat": { "version": "1.1.4", "resolved": "https://registry.npmmirror.com/safe-array-concat/-/safe-array-concat-1.1.4.tgz", @@ -9273,6 +10219,21 @@ "license": "BSD-3-Clause", "optional": true }, + "node_modules/sql-escaper": { + "version": "1.5.2", + "resolved": "https://registry.npmmirror.com/sql-escaper/-/sql-escaper-1.5.2.tgz", + "integrity": "sha512-6CKD38c31SENivxOADeMNLdukOnUxUcflKtzVWzace7Riv1v7cAEym5Cx9Q7gYZ3ezIJI7ZpqecQq8cqNeSSFg==", + "license": "MIT", + "engines": { + "bun": ">=1.0.0", + "deno": ">=2.0.0", + "node": ">=12.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/mysqljs/sql-escaper?sponsor=1" + } + }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmmirror.com/stackback/-/stackback-0.0.2.tgz", @@ -9473,6 +10434,87 @@ "node": ">=18" } }, + "node_modules/tarn": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/tarn/-/tarn-3.1.2.tgz", + "integrity": "sha512-3RTvqKZcK/17jnJ8rMKFXbyNogywTs1z0gVPPwFsJGX46rkmUHOdIaSQ/aVO1rS7nH+soiXiWk7rvUXxndm8Dg==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/tedious": { + "version": "20.3.8", + "resolved": "https://registry.npmmirror.com/tedious/-/tedious-20.3.8.tgz", + "integrity": "sha512-ZrJiwyGn340Sa0V0g37Xqj5bvmJ1riYwvEtg7zdm/lpw70f2ZNIQ2fvHmntU5fEOorWDa48Jo1oKYAuUP+rh7Q==", + "license": "MIT", + "dependencies": { + "@azure/core-auth": "^1.10.1", + "@azure/identity": "^4.13.1", + "@azure/keyvault-keys": "^4.10.2", + "@js-joda/core": "^6.0.1", + "@types/node": ">=22", + "bl": "^6.1.4", + "iconv-lite": "^0.7.0", + "js-md4": "^0.3.2", + "native-duplexpair": "^1.0.0" + }, + "engines": { + "node": ">=22" + } + }, + "node_modules/tedious/node_modules/bl": { + "version": "6.1.6", + "resolved": "https://registry.npmmirror.com/bl/-/bl-6.1.6.tgz", + "integrity": "sha512-jLsPgN/YSvPUg9UX0Kd73CXpm2Psg9FxMeCSXnk3WBO3CMT10JMwijubhGfHCnFu6TPn1ei3b975dxv7K2pWVg==", + "license": "MIT", + "dependencies": { + "@types/readable-stream": "^4.0.0", + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^4.2.0" + } + }, + "node_modules/tedious/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/tedious/node_modules/readable-stream": { + "version": "4.8.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-4.8.0.tgz", + "integrity": "sha512-2jhTTU3Eilp/2DMT71gbcoqC35eQHasMJH0RHkYxwlxIv3+FR6Y5xAFZIwEGLxKkjZYEFlsiMNIdwUqjK2lLHQ==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/temp": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", @@ -9888,7 +10930,6 @@ "version": "6.21.0", "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-6.21.0.tgz", "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, "license": "MIT" }, "node_modules/universalify": { @@ -11420,6 +12461,22 @@ } } }, + "node_modules/wsl-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/wsl-utils/-/wsl-utils-1.0.1.tgz", + "integrity": "sha512-c16PKLIRxBYpR3jSWsdS7SFp0COm5SOQdiFjY818dYFHJbMGuLBszpF07LBWmOS1uzrHa9VGdynsEgoeKy0oOQ==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0", + "powershell-utils": "^0.2.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/xmlbuilder": { "version": "15.1.1", "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz", @@ -11436,6 +12493,15 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "license": "MIT" }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index 01129b7..d5d0e35 100644 --- a/package.json +++ b/package.json @@ -28,9 +28,12 @@ "imapflow": "^2.10.0", "lucide-react": "^0.468.0", "mailparser": "^3.14.1", + "mssql": "^12.7.13", + "mysql2": "^3.24.6", "nodemailer": "^6.9.16", "pdf-lib": "^1.17.1", "pdfjs-dist": "^4.10.38", + "pg": "^8.23.1", "pngjs": "^7.0.0", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -41,8 +44,10 @@ }, "devDependencies": { "@types/adm-zip": "^0.5.7", + "@types/mssql": "^12.3.0", "@types/node": "^22.10.2", "@types/nodemailer": "^6.4.17", + "@types/pg": "^8.23.1", "@types/pngjs": "^6.0.5", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", diff --git a/resources/excluded.json b/resources/excluded.json new file mode 100644 index 0000000..42927da --- /dev/null +++ b/resources/excluded.json @@ -0,0 +1,13618 @@ +{ + "schemaVersion": 1, + "generatedAt": "2026-11-02T02:28:00.143Z", + "reason": "不接入能力备份", + "count": 122, + "ids": [ + "Basic_GetSystemAccount_v2", + "Basic_GetSystemAccount", + "Basic_GetSystemAccount_v1", + "DataService_DeleteControllerFiles_v1", + "DataService_ReportException", + "DataService_ProductionQueue", + "DataService_UploadControllerFiles_v1", + "DataService_ServiceNew", + "DataService_DeleteControllerFiles", + "DataService_Service", + "DataService_DownloadControllerFiles", + "DataService_DownloadControllerFiles_v1", + "DataService_ConsumptionQueue", + "DataService_UploadControllerFiles", + "DataService_AiScreenText", + "DataService_AiScreenDate", + "DataService_AiScreenOperate", + "Element_DoubleClickSap", + "File_UploadBusinessResults_v1", + "File_StartBusiness", + "File_UploadBusinessResults", + "File_Collectupload", + "File_UploadFolder", + "Mark_Mark", + "Mobile_ConnectPhone", + "Mobile_MobileElementAarray", + "Mobile_Call", + "Mobile_MobileSetText_V1", + "Mobile_ClickButton", + "Mobile_SetInputV1", + "Mobile_ConnectPhoneV3", + "Mobile_GetAttribute", + "Mobile_Exists", + "Mobile_MobileElementList", + "Mobile_FileTransfer", + "Mobile_GetPhoneInfomation", + "Mobile_ClickLocation", + "Mobile_SaveFilePhone", + "Mobile_SetInput", + "Mobile_MobileCvClick", + "Mobile_TouchSlideV1", + "Mobile_GetPhoneFiles", + "Mobile_OpenMobileApp", + "Mobile_TouchSlide", + "Mobile_GetMobileUiTree", + "Mobile_GetScreenOrientation", + "Mobile_GetElement", + "Mobile_MobileCvSetText", + "Mobile_ClosePhone", + "Mobile_SetInputV2", + "Mobile_SetScreenOrientation", + "Mobile_ImageClick", + "Mobile_CloseMobileApp", + "Mobile_ElementShot", + "Mobile_ScreenShot", + "Mobile_GetClipboardText", + "Mobile_ConnectPhoneV2", + "Mobile_GetText", + "Mobile_MobileSetText", + "Mobile_MobileElementList_V1", + "Mobile_ElementClick", + "Mobile_GetChildren", + "Mobile_SetClipboardText", + "Mobile_ConnectPhoneV1", + "OCR_RotateVerificationCodeV1", + "OCR_PuzzleVerificationCode_v1", + "OCR_ClickVerificationCodeV2", + "OCR_SourceCommonEnglishNumbersCodeV2", + "OCR_SimpleSliderVerificationCode", + "OCR_SourceMergeCardOCR", + "OCR_SliderVerificationCodeV5", + "OCR_SliderVerificationCodeV4", + "OCR_SourceMergeOtherOCR", + "OCR_SliderCode", + "OCR_SourceMergeGeneralOCR", + "OCR_RotateVerificationCodeV2", + "OCR_RotateVerificationCode", + "OCR_ClickVerificationCodeV1", + "OCR_PuzzleVerificationCode", + "OCR_SimpleSliderVerificationCodeV2", + "OCR_SourceCommonEnglishNumbersCode", + "OCR_SourceMergeCarOCR", + "OCR_SliderVerificationCodeV2", + "OCR_SliderVerificationCodeV1", + "OCR_SliderVerificationCode", + "OCR_SourceMergeEducationOCR", + "OCR_SliderVerificationCodeV3", + "OCR_ClickVerificationCode", + "OCR_SourceCommonEnglishNumbersCodeV1", + "OCR_PuzzleVerificationCode_v2", + "OCR_SourceMergePaperOCR", + "OCR_SimpleSliderVerificationCodeV1", + "OCR_SourceMergeGeneralOCR_V1", + "OCR_SliderVerificationCodePosition", + "OcrOffline_ClickOcrText_V1", + "OcrOffline_MoveToOcrText", + "OcrOffline_ClickOcrText", + "OcrOffline_MoveToOcrText_V1", + "OCR_BaiDu_CarOCR", + "OCR_BaiDu_OtherOCR", + "OCR_BaiDu_EducationOCR", + "OCR_BaiDu_GeneralOCR", + "OCR_BaiDu_CardOCR", + "OCR_BaiDu_PaperOCR", + "peripherals_UsbCom", + "peripherals_CloseNetworkUsbCom", + "peripherals_CloseUsbCom", + "peripherals_NetworkUsbCom", + "peripherals_OpenNetworkUsbCom", + "peripherals_OpenUsbCom", + "SafeControlInput_KeyInput", + "Scenario_CreditVerify", + "Scenario_VatInvoice", + "Scenario_PhysicalExamination", + "System_ResetMechanicalArm", + "System_MechanicalArmClick", + "System_ConnectingUshield", + "System_ConnectingMechanicalArm", + "System_CloseMechanicalArm", + "System_CloseUshield", + "System_GetMobileMessage", + "WebBrowser_DownloadDialog" + ], + "components": [ + { + "id": "Basic_GetSystemAccount_v2", + "name": "获取平台账号(通用)", + "kind": "vendor", + "group": "app", + "categories": [ + "automation_portal" + ], + "categorySignature": "automation_portal", + "description": "获取门户中配置的系统账号信息,用以登录业务系统。", + "messageTemplate": "获取 $1 业务 $2 平台账号, 然后把结果保存到 $0", + "baseType": "Basic_GetSystemAccount", + "functionName": "Basic.GetSystemAccount_v2", + "functionCalls": [ + { + "function": "Basic.GetSystemAccount_v2", + "args": [ + "businessType", + "platform" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "获取", + "账号", + "门户", + "系统账号" + ], + "platformTag": null, + "icon": "app", + "risk": "high", + "fields": [ + { + "key": "businessType", + "label": "业务类型", + "widget": "text", + "type": "string", + "displayType": "remotePortalBusinessType", + "required": false, + "defaultValue": "{}", + "placeholder": "", + "description": "设置需要关联业务,用来关联业务执行结果。", + "advanced": false, + "valueTypes": [] + }, + { + "key": "platform", + "label": "指定平台", + "widget": "text", + "type": "string", + "displayType": "remotePortalPlatform", + "required": false, + "defaultValue": "{}", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "平台账号", + "valueTypes": [ + "rpa_dict_portal" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "平台账号", + "valueTypes": [ + "rpa_dict_portal" + ] + } + ] + }, + "slots": [] + }, + { + "id": "Basic_GetSystemAccount", + "name": "获取系统账号(门户专用)", + "kind": "vendor", + "group": "app", + "categories": [ + "automation_portal" + ], + "categorySignature": "automation_portal", + "description": "获取门户中配置的系统账号信息,用以登录业务系统。", + "messageTemplate": "获取 $1 业务系统账号, 然后把结果保存到 $0", + "baseType": "Basic_GetSystemAccount", + "functionName": "Basic.GetSystemAccount", + "functionCalls": [ + { + "function": "Basic.GetSystemAccount", + "args": [ + "category" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "获取", + "账号", + "门户", + "系统账号" + ], + "platformTag": null, + "icon": "app", + "risk": "high", + "fields": [ + { + "key": "category", + "label": "指定系统", + "widget": "select", + "type": "string", + "displayType": "remoteOptionSelect", + "required": false, + "defaultValue": "{}", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "账号密码", + "valueTypes": [ + "rpa_dict_portal" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "账号密码", + "valueTypes": [ + "rpa_dict_portal" + ] + } + ] + }, + "slots": [] + }, + { + "id": "Basic_GetSystemAccount_v1", + "name": "获取平台账号", + "kind": "vendor", + "group": "app", + "categories": [ + "automation_portal" + ], + "categorySignature": "automation_portal", + "description": "获取门户中配置的系统账号信息,用以登录业务系统。", + "messageTemplate": "获取 $1 业务 $2 平台账号, 然后把结果保存到 $0", + "baseType": "Basic_GetSystemAccount", + "functionName": "Basic.GetSystemAccount_v1", + "functionCalls": [ + { + "function": "Basic.GetSystemAccount_v1", + "args": [ + "businessType", + "platform" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "获取", + "账号", + "门户", + "系统账号" + ], + "platformTag": null, + "icon": "app", + "risk": "high", + "fields": [ + { + "key": "businessType", + "label": "业务类型", + "widget": "text", + "type": "string", + "displayType": "remotePortalBusinessType", + "required": false, + "defaultValue": "{}", + "placeholder": "", + "description": "设置需要关联业务,用来关联业务执行结果。", + "advanced": false, + "valueTypes": [] + }, + { + "key": "platform", + "label": "指定平台", + "widget": "text", + "type": "string", + "displayType": "remotePortalPlatform", + "required": false, + "defaultValue": "{}", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "平台账号", + "valueTypes": [ + "rpa_dict_portal" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "平台账号", + "valueTypes": [ + "rpa_dict_portal" + ] + } + ] + }, + "slots": [] + }, + { + "id": "DataService_DeleteControllerFiles_v1", + "name": "删除文件", + "kind": "vendor", + "group": "message", + "categories": [ + "controller" + ], + "categorySignature": "controller", + "description": "删除实在RPA-控制器/运营平台的【文件管理】云端文件。", + "messageTemplate": "删除云端 {$$1 == 1 && '$2'} {$$1 != 1 && '$3'}, 然后把结果保存到 $0", + "baseType": "DataService_DeleteControllerFiles", + "functionName": "DataService.DeleteControllerFiles_v1", + "functionCalls": [ + { + "function": "DataService.DeleteControllerFiles_v1", + "args": [ + "del_type", + "file_data", + "data", + "folder_path" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "删除", + "移除", + "删掉", + "清除", + "删去", + "文件", + "文档", + "文件档" + ], + "platformTag": null, + "icon": "message", + "risk": "high", + "fields": [ + { + "key": "del_type", + "label": "匹配方式", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "选择匹配控制器/运营平台中文件的方式", + "advanced": false, + "valueTypes": [] + }, + { + "key": "file_data", + "label": "选择文件路径", + "widget": "file", + "type": "object", + "displayType": "selectControllerFile", + "required": true, + "defaultValue": "{}", + "placeholder": "请选择文件路径", + "description": "可选您账号权限范围内的文件,若选择时未见所需要文件请联系所在企业管理员进行权限修改", + "advanced": false, + "valueTypes": [ + "rpa_dict" + ] + }, + { + "key": "data", + "label": "文件名称", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请输入或选择文件", + "description": "输入或选择需要在控制器/运营平台中删除的文件名称", + "advanced": false, + "valueTypes": [ + "rpa_str", + "rpa_int", + "rpa_list" + ] + }, + { + "key": "folder_path", + "label": "文件夹路径", + "widget": "folder", + "type": "object", + "displayType": "selectControllerFolder", + "required": true, + "defaultValue": "", + "placeholder": "请输入或选择所在文件夹路径", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "删除结果", + "valueTypes": [ + "rpa_bool" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "删除结果", + "valueTypes": [ + "rpa_bool" + ] + } + ] + }, + "slots": [] + }, + { + "id": "DataService_ReportException", + "name": "上报异常信息", + "kind": "vendor", + "group": "message", + "categories": [ + "controller" + ], + "categorySignature": "controller", + "description": "向控制器/运营平台上报异常原因,由控制器/运营平台记录并多方式推送异常消息。", + "messageTemplate": "将异常原因 $0 上报到云端", + "baseType": "DataService_ReportException", + "functionName": "DataService.ReportException", + "functionCalls": [ + { + "function": "DataService.ReportException", + "args": [ + "reason" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "异常", + "错误", + "异常情况", + "错误信息", + "异常信息" + ], + "platformTag": null, + "icon": "message", + "risk": "high", + "fields": [ + { + "key": "reason", + "label": "异常原因", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "DataService_ProductionQueue", + "name": "将数据存入队列", + "kind": "vendor", + "group": "message", + "categories": [ + "controller" + ], + "categorySignature": "controller", + "description": "将数据存至控制器/运营平台已有队列中。", + "messageTemplate": "将数据 $1 数据存入队列 $2 中, 然后把结果保存到 $0", + "baseType": "DataService_ProductionQueue", + "functionName": "DataService.ProductionQueue", + "functionCalls": [ + { + "function": "DataService.ProductionQueue", + "args": [ + "data", + "queue" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "数据", + "资料", + "数据信息", + "数据内容", + "数据集" + ], + "platformTag": null, + "icon": "message", + "risk": "high", + "fields": [ + { + "key": "data", + "label": "数据", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请输入要放入的数据", + "description": "要数据存入队列的数据,支持变量、表达式、文本等多种形式", + "advanced": false, + "valueTypes": [] + }, + { + "key": "queue", + "label": "队列名称", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "请输入队列名称", + "description": "可至资源管理-队列管理-对应队列详情中,查看队列名称信息", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "结果", + "valueTypes": [ + "rpa_bool" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "结果", + "valueTypes": [ + "rpa_bool" + ] + } + ] + }, + "slots": [] + }, + { + "id": "DataService_UploadControllerFiles_v1", + "name": "上传文件", + "kind": "vendor", + "group": "message", + "categories": [ + "controller" + ], + "categorySignature": "controller", + "description": "将本地文件上传至实在RPA-控制器/运营平台指定路径下。", + "messageTemplate": "上传文件 $1 至云端, 然后把结果保存到 $0", + "baseType": "DataService_UploadControllerFiles", + "functionName": "DataService.UploadControllerFiles_v1", + "functionCalls": [ + { + "function": "DataService.UploadControllerFiles_v1", + "args": [ + "file_path", + "folder_path", + "is_cover" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "文件", + "文档", + "文件档", + "档案", + "文件资料" + ], + "platformTag": null, + "icon": "message", + "risk": "high", + "fields": [ + { + "key": "file_path", + "label": "上传文件", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": true, + "defaultValue": "", + "placeholder": "请输入或选择本地文件路径", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "folder_path", + "label": "保存至路径", + "widget": "folder", + "type": "object", + "displayType": "selectControllerFolder", + "required": true, + "defaultValue": "", + "placeholder": "请输入或选择文件夹路径", + "description": "输入或选择控制器/运营平台中的路径", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "is_cover", + "label": "重名时覆盖文件", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "如果勾选则直接覆盖源文件,如果不勾选则重名时会上传失败", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "结果", + "valueTypes": [ + "rpa_dict" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "结果", + "valueTypes": [ + "rpa_dict" + ] + } + ] + }, + "slots": [] + }, + { + "id": "DataService_ServiceNew", + "name": "数据服务(松塔)", + "kind": "vendor", + "group": "message", + "categories": [ + "data_parse" + ], + "categorySignature": "data_parse", + "description": "连接松塔·Lite DS产品,把获取到的数据存到松塔的数据库中 并将结果输出到变量(可在松塔中进行数据加工和可视化展示)。", + "messageTemplate": "在数据服务中为数据表 $1 新增数据, 然后把结果保存到 $0", + "baseType": "DataService_Service", + "functionName": "DataService.ServiceNew", + "functionCalls": [ + { + "function": "DataService.ServiceNew", + "args": [ + "config", + "showTable" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "数据", + "服务" + ], + "platformTag": null, + "icon": "message", + "risk": "high", + "fields": [ + { + "key": "config", + "label": "同步数据到(松塔)", + "widget": "text", + "type": "string", + "displayType": "setDataService", + "required": true, + "defaultValue": "{}", + "placeholder": "", + "description": "同步采集数据到松塔内,并设置数据表信息。", + "advanced": false, + "valueTypes": [] + }, + { + "key": "showTable", + "label": "将结果保存至数据表", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "将本次同步到“松塔”中的数据保存到控制台的“数据表”中显示。", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "数据服务表", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "数据服务表", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "DataService_DeleteControllerFiles", + "name": "删除控制器文件", + "kind": "vendor", + "group": "message", + "categories": [ + "controller" + ], + "categorySignature": "controller", + "description": "删除实在RPA-控制器的【文件管理】云端文件。", + "messageTemplate": "删除控制器文件 {$$1 == 1 && '$2'} {$$1 != 1 && '$3'}, 然后把结果保存到 $0", + "baseType": "DataService_DeleteControllerFiles", + "functionName": "DataService.DeleteControllerFiles", + "functionCalls": [ + { + "function": "DataService.DeleteControllerFiles", + "args": [ + "del_type", + "file_data", + "data" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "message", + "risk": "high", + "fields": [ + { + "key": "del_type", + "label": "匹配方式", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "选择匹配控制器文件的方式。", + "advanced": false, + "valueTypes": [] + }, + { + "key": "file_data", + "label": "控制器文件", + "widget": "file", + "type": "object", + "displayType": "selectControllerFile", + "required": true, + "defaultValue": "{}", + "placeholder": "请选择控制器文件", + "description": "可选您账号权限范围内的文件,若选择时未见所需要文件请联系所在企业管理员进行权限修改", + "advanced": false, + "valueTypes": [ + "rpa_dict" + ] + }, + { + "key": "data", + "label": "控制器文件", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "可选您账号权限范围内的文件,若选择时未见所需要文件请联系所在企业管理员进行权限修改", + "advanced": false, + "valueTypes": [ + "rpa_str", + "rpa_int", + "rpa_list" + ] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "删除结果", + "valueTypes": [ + "rpa_bool" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "删除结果", + "valueTypes": [ + "rpa_bool" + ] + } + ] + }, + "slots": [] + }, + { + "id": "DataService_Service", + "name": "数据服务", + "kind": "vendor", + "group": "message", + "categories": [ + "data_parse" + ], + "categorySignature": "data_parse", + "description": "在松塔的数据服务中为选定的数据表新增数据,并将结果输出。", + "messageTemplate": "在数据服务中为数据表 $1 新增数据, 然后把结果保存到 $0", + "baseType": "DataService_Service", + "functionName": "DataService.Service", + "functionCalls": [ + { + "function": "DataService.Service", + "args": [ + "config", + "showTable" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "数据", + "服务" + ], + "platformTag": null, + "icon": "message", + "risk": "high", + "fields": [ + { + "key": "config", + "label": "配置数据", + "widget": "text", + "type": "string", + "displayType": "dataService", + "required": true, + "defaultValue": "{}", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "showTable", + "label": "在数据表中预览数据效果", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "勾选后,该组件运行后的采集结果可在控制台的“数据表”tab中进行展示。", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "数据表", + "valueTypes": [ + "rpa_list" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "数据表", + "valueTypes": [ + "rpa_list" + ] + } + ] + }, + "slots": [] + }, + { + "id": "DataService_DownloadControllerFiles", + "name": "下载控制器文件", + "kind": "vendor", + "group": "message", + "categories": [ + "controller" + ], + "categorySignature": "controller", + "description": "从实在RPA-控制器的【文件管理】下载云端文件至本地。", + "messageTemplate": "下载控制器文件 {$$1 == 1 && '$2'} {$$1 != 1 && '$3'} 至 $4, 然后把结果保存到 $0", + "baseType": "DataService_DownloadControllerFiles", + "functionName": "DataService.DownloadControllerFiles", + "functionCalls": [ + { + "function": "DataService.DownloadControllerFiles", + "args": [ + "load_type", + "file_data", + "data", + "file_path", + "is_cover" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "message", + "risk": "high", + "fields": [ + { + "key": "load_type", + "label": "匹配方式", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "选择匹配控制器文件的方式。", + "advanced": false, + "valueTypes": [] + }, + { + "key": "file_data", + "label": "控制器文件", + "widget": "file", + "type": "object", + "displayType": "selectControllerFile", + "required": true, + "defaultValue": "{}", + "placeholder": "请选择控制器文件", + "description": "可选您账号权限范围内的文件,若选择时未见所需要文件请联系所在企业管理员进行权限修改", + "advanced": false, + "valueTypes": [ + "rpa_dict" + ] + }, + { + "key": "data", + "label": "控制器文件", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "请选择或输入文件夹路径", + "description": "可选您账号权限范围内的文件,若选择时未见所需要文件请联系所在企业管理员进行权限修改", + "advanced": false, + "valueTypes": [ + "rpa_str", + "rpa_int" + ] + }, + { + "key": "file_path", + "label": "文件保存路径", + "widget": "folder", + "type": "object", + "displayType": "selectFile", + "required": false, + "defaultValue": "", + "placeholder": "请输入或选择文件保存路径", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_folder", + "rpa_str" + ] + }, + { + "key": "is_cover", + "label": "重名时覆盖文件", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "如果勾选则直接覆盖源文件;如果不勾选,则会在文件名后添加“副本”(示例:“实在智能(副本).xlsx”)", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "文件路径", + "valueTypes": [ + "rpa_str" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "文件路径", + "valueTypes": [ + "rpa_str" + ] + } + ] + }, + "slots": [] + }, + { + "id": "DataService_DownloadControllerFiles_v1", + "name": "下载文件", + "kind": "vendor", + "group": "message", + "categories": [ + "controller" + ], + "categorySignature": "controller", + "description": "从实在RPA-控制器/运营平台的【文件管理】下载云端文件至本地。", + "messageTemplate": "下载云端 {$$1 == 1 && '$2'} {$$1 != 1 && '$3'} 至 $5, 然后把结果保存到 $0", + "baseType": "DataService_DownloadControllerFiles", + "functionName": "DataService.DownloadControllerFiles_v1", + "functionCalls": [ + { + "function": "DataService.DownloadControllerFiles_v1", + "args": [ + "load_type", + "file_data", + "data", + "folder_path", + "file_path", + "is_cover" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "文件", + "文档", + "文件档", + "档案", + "文件资料" + ], + "platformTag": null, + "icon": "message", + "risk": "high", + "fields": [ + { + "key": "load_type", + "label": "匹配方式", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "选择匹配控制器/运营平台中文件的方式", + "advanced": false, + "valueTypes": [] + }, + { + "key": "file_data", + "label": "选择文件路径", + "widget": "file", + "type": "object", + "displayType": "selectControllerFile", + "required": true, + "defaultValue": "{}", + "placeholder": "请选择文件路径", + "description": "请选择您账号权限范围内的文件。若未找到所需文件,请联系企业管理员调整权限", + "advanced": false, + "valueTypes": [ + "rpa_dict" + ] + }, + { + "key": "data", + "label": "文件名称", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "请输入或选择文件", + "description": "输入或选择需要在控制器/运营平台中下载的文件名称", + "advanced": false, + "valueTypes": [ + "rpa_str", + "rpa_int" + ] + }, + { + "key": "folder_path", + "label": "文件夹路径", + "widget": "folder", + "type": "object", + "displayType": "selectControllerFolder", + "required": true, + "defaultValue": "", + "placeholder": "请输入或选择所在文件夹路径", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "file_path", + "label": "文件保存路径", + "widget": "folder", + "type": "object", + "displayType": "selectFile", + "required": false, + "defaultValue": "", + "placeholder": "请输入或选择文件保存路径", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_folder", + "rpa_str" + ] + }, + { + "key": "is_cover", + "label": "重名时覆盖文件", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "如果勾选则直接覆盖源文件;如果不勾选,则会在文件名后添加“副本”(示例:“实在智能(副本).xlsx”)", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "文件路径", + "valueTypes": [ + "rpa_str" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "文件路径", + "valueTypes": [ + "rpa_str" + ] + } + ] + }, + "slots": [] + }, + { + "id": "DataService_ConsumptionQueue", + "name": "从队列获取数据", + "kind": "vendor", + "group": "message", + "categories": [ + "controller" + ], + "categorySignature": "controller", + "description": "从控制器/运营平台具体队列中取出数据。", + "messageTemplate": "从队列 $1 中取出数据, 然后把结果保存到 $0", + "baseType": "DataService_ConsumptionQueue", + "functionName": "DataService.ConsumptionQueue", + "functionCalls": [ + { + "function": "DataService.ConsumptionQueue", + "args": [ + "queue", + "num" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "获取", + "得到", + "取得", + "提取", + "获取到" + ], + "platformTag": null, + "icon": "message", + "risk": "high", + "fields": [ + { + "key": "queue", + "label": "队列名称", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请输入队列名称", + "description": "可至资源管理-队列管理-对应队列详情中,查看队列名称信息", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "num", + "label": "获取消息", + "widget": "textarea", + "type": "string", + "displayType": "inputComposeLabel", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "队列数据", + "valueTypes": [ + "rpa_list" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "队列数据", + "valueTypes": [ + "rpa_list" + ] + } + ] + }, + "slots": [] + }, + { + "id": "DataService_UploadControllerFiles", + "name": "上传文件至控制器", + "kind": "vendor", + "group": "message", + "categories": [ + "controller" + ], + "categorySignature": "controller", + "description": "将本地文件上传至实在RPA-控制器指定路径下。", + "messageTemplate": "上传文件 $1 至控制器, 然后把结果保存到 $0", + "baseType": "DataService_UploadControllerFiles", + "functionName": "DataService.UploadControllerFiles", + "functionCalls": [ + { + "function": "DataService.UploadControllerFiles", + "args": [ + "file_path", + "is_cover" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "message", + "risk": "high", + "fields": [ + { + "key": "file_path", + "label": "上传文件", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": true, + "defaultValue": "", + "placeholder": "请输入或选择本地文件路径", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "is_cover", + "label": "重名时覆盖文件", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "如果勾选则直接覆盖源文件,如果不勾选则重名时会上传失败", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "结果", + "valueTypes": [ + "rpa_dict" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "结果", + "valueTypes": [ + "rpa_dict" + ] + } + ] + }, + "slots": [] + }, + { + "id": "DataService_AiScreenText", + "name": "提取屏幕数据(AI)", + "kind": "vendor", + "group": "message", + "categories": [ + "ai_operation_screen" + ], + "categorySignature": "ai_operation_screen", + "description": "AI识别并提取屏幕中的数据,支持提取表格数据、语义数据、非结构化数据。", + "messageTemplate": "AI识别提取屏幕数据, 然后把结果保存到 $0", + "baseType": "DataService_AiScreenText", + "functionName": "DataService.AiScreenText", + "functionCalls": [ + { + "function": "DataService.AiScreenText", + "args": [ + "input_data", + "log_process" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "识别", + "智能", + "采集", + "处理", + "语义" + ], + "platformTag": null, + "icon": "message", + "risk": "high", + "fields": [ + { + "key": "input_data", + "label": "输入需求", + "widget": "text", + "type": "string", + "displayType": "aiVisualAnalysis", + "required": true, + "defaultValue": "", + "placeholder": "请输入待执行的操作,例如:获取屏幕中的数据", + "description": "最大支持输入500个字符。引用变量时,变量值也将算入字符", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "log_process", + "label": "打印模型处理过程", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "识别结果", + "key": "var_name", + "suggestedName": "AI识别提取屏幕数据", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "识别结果", + "defaultValue": "AI识别提取屏幕数据", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "DataService_AiScreenDate", + "name": "选择日期时间(AI)", + "kind": "vendor", + "group": "message", + "categories": [ + "ai_operation_screen" + ], + "categorySignature": "ai_operation_screen", + "description": "AI操作屏幕,按要求选择屏幕中的日期时间或其他选项。", + "messageTemplate": "AI操作屏幕中的选择器,完成 $0", + "baseType": "DataService_AiScreenDate", + "functionName": "DataService.AiScreenDate", + "functionCalls": [ + { + "function": "DataService.AiScreenDate", + "args": [ + "input_data", + "max_step", + "log_process" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "识别", + "智能", + "采集", + "处理", + "语义" + ], + "platformTag": null, + "icon": "message", + "risk": "high", + "fields": [ + { + "key": "input_data", + "label": "输入需求", + "widget": "text", + "type": "string", + "displayType": "aiVisualAnalysis", + "required": true, + "defaultValue": "", + "placeholder": "请描述关于日期选择的操作,例如:在屏幕中的日期选择器中选择2025年1月1日。", + "description": "最大支持输入500个字符。引用变量时,变量值也将算入字符", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "max_step", + "label": "最大执行步骤", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "20", + "placeholder": "请输入1-100之间的数字", + "description": "设置AI可执行的最大步骤数,防止陷入错误的循环导致过度消耗。输入范围1-100,空值默认20", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "log_process", + "label": "打印模型处理过程", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "DataService_AiScreenOperate", + "name": "操作屏幕(AI)", + "kind": "vendor", + "group": "message", + "categories": [ + "ai_operation_screen" + ], + "categorySignature": "ai_operation_screen", + "description": "AI操作屏幕完成任务,支持意图识别、图像识别、数据处理等。", + "messageTemplate": "AI操作屏幕完成任务, 然后把结果保存到 $0", + "baseType": "DataService_AiScreenOperate", + "functionName": "DataService.AiScreenOperate", + "functionCalls": [ + { + "function": "DataService.AiScreenOperate", + "args": [ + "input_data", + "max_step", + "log_process" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "识别", + "智能", + "操作", + "屏幕", + "提取数据", + "自定义" + ], + "platformTag": null, + "icon": "message", + "risk": "high", + "fields": [ + { + "key": "input_data", + "label": "输入需求", + "widget": "text", + "type": "string", + "displayType": "aiVisualAnalysis", + "required": true, + "defaultValue": "", + "placeholder": "请输入待执行的操作,例如:关闭弹窗、获取屏幕中的数据", + "description": "最大支持输入500个字符。引用变量时,变量值也将算入字符", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "max_step", + "label": "最大执行步骤", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "10", + "placeholder": "请输入1-100之间的数字", + "description": "设置AI可执行的最大步骤数,防止陷入错误的循环导致过度消耗。输入范围1-100,空值默认10", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "log_process", + "label": "打印模型处理过程", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "操作结果", + "key": "var_name", + "suggestedName": "AI操作屏幕返回内容", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "操作结果", + "defaultValue": "AI操作屏幕返回内容", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "Element_DoubleClickSap", + "name": "双击SAP表格单元格", + "kind": "vendor", + "group": "web", + "categories": [ + "SAP" + ], + "categorySignature": "SAP", + "description": "双击SAP表格单元格。", + "messageTemplate": "双击目标元素 $0 ", + "baseType": "Element_DoubleClickSap", + "functionName": "Element.DoubleClickSap", + "functionCalls": [ + { + "function": "Element.DoubleClickSap", + "args": [ + "uiSelector", + "rowNo", + "columnNo" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "web", + "risk": "high", + "fields": [ + { + "key": "uiSelector", + "label": "目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "rowNo", + "label": "行号", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "columnNo", + "label": "列号", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "File_UploadBusinessResults_v1", + "name": "上报办理结果", + "kind": "vendor", + "group": "file", + "categories": [ + "automation_portal" + ], + "categorySignature": "automation_portal", + "description": "上传业务结果文件到门户,可在门户中查看。", + "messageTemplate": "将业务结果 $2,结果原因 $3,业务文件 $4 上传至门户, 然后把结果保存到 $0", + "baseType": "File_UploadBusinessResults", + "functionName": "File.UploadBusinessResults_v1", + "functionCalls": [ + { + "function": "File.UploadBusinessResults_v1", + "args": [ + "businessType", + "business", + "business_result", + "business_reason", + "uploadSrc" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "结果上传", + "业务", + "门户", + "业务结果" + ], + "platformTag": null, + "icon": "file", + "risk": "low", + "fields": [ + { + "key": "businessType", + "label": "业务类型", + "widget": "text", + "type": "string", + "displayType": "remotePortalBusinessType", + "required": false, + "defaultValue": "{}", + "placeholder": "", + "description": "设置需要关联业务,用来关联业务执行结果。", + "advanced": false, + "valueTypes": [] + }, + { + "key": "business", + "label": "关联业务", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "业务变量", + "placeholder": "", + "description": "选择“执行业务上报(门户专用)”组件输出的上报业务变量,用来关联业务执行结果。", + "advanced": false, + "valueTypes": [] + }, + { + "key": "business_result", + "label": "业务结果", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "business_reason", + "label": "结果原因", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "uploadSrc", + "label": "业务文件", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "上报结果", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "上报结果", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "File_StartBusiness", + "name": "上报办理业务", + "kind": "vendor", + "group": "file", + "categories": [ + "automation_portal" + ], + "categorySignature": "automation_portal", + "description": "上传需要办理的业务数据到门户,把数据存到变量给“业务结果上报(门户专用)”组件使用。", + "messageTemplate": "把要办理的业务 $1 上报, 然后把结果保存到 $0", + "baseType": "File_StartBusiness", + "functionName": "File.StartBusiness", + "functionCalls": [ + { + "function": "File.StartBusiness", + "args": [ + "business_id", + "business" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "执行", + "业务", + "门户" + ], + "platformTag": null, + "icon": "file", + "risk": "low", + "fields": [ + { + "key": "business_id", + "label": "业务主键", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "办理业务的唯一值。", + "advanced": false, + "valueTypes": [] + }, + { + "key": "business", + "label": "业务信息", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "业务变量", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "业务变量", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "File_UploadBusinessResults", + "name": "上报办理结果(门户专用)", + "kind": "vendor", + "group": "file", + "categories": [ + "automation_portal" + ], + "categorySignature": "automation_portal", + "description": "上传业务结果文件到门户,可在门户中查看。", + "messageTemplate": "将业务结果 $2,结果原因 $3,业务文件 $4 上传至门户, 然后把结果保存到 $0", + "baseType": "File_UploadBusinessResults", + "functionName": "File.UploadBusinessResults", + "functionCalls": [ + { + "function": "File.UploadBusinessResults", + "args": [ + "business", + "business_result", + "business_reason", + "uploadSrc" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "结果上传", + "业务", + "门户", + "业务结果" + ], + "platformTag": null, + "icon": "file", + "risk": "low", + "fields": [ + { + "key": "business", + "label": "关联业务", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "业务变量", + "placeholder": "", + "description": "选择“执行业务上报(门户专用)”组件输出的上报业务变量,用来关联业务执行结果。", + "advanced": false, + "valueTypes": [] + }, + { + "key": "business_result", + "label": "业务结果", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "business_reason", + "label": "结果原因", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "uploadSrc", + "label": "业务文件", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "上报结果", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "上报结果", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "File_Collectupload", + "name": "上报采集数据", + "kind": "vendor", + "group": "file", + "categories": [ + "automation_portal" + ], + "categorySignature": "automation_portal", + "description": "上传业务数据到门户系统,可登录门户在待办中查看数据。", + "messageTemplate": "把业务信息 $1 上报, 然后把结果保存到 $0", + "baseType": "File_Collectupload", + "functionName": "File.Collectupload", + "functionCalls": [ + { + "function": "File.Collectupload", + "args": [ + "business" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "执行", + "业务", + "门户" + ], + "platformTag": null, + "icon": "file", + "risk": "low", + "fields": [ + { + "key": "business", + "label": "业务信息", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "结果变量", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "结果变量", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "File_UploadFolder", + "name": "结果打包上传", + "kind": "vendor", + "group": "file", + "categories": [ + "automation_portal", + "controller", + "file" + ], + "categorySignature": "automation_portal|controller|file", + "description": "将需要交付的文件或文件夹打包上传至云端,可在后台供用户下载。(注意:使用该组件前请先使用“生成上传路径”组件)。", + "messageTemplate": "将 $0 路径下文件打包上传至云端", + "baseType": "File_UploadFolder", + "functionName": "File.UploadFolder", + "functionCalls": [ + { + "function": "File.UploadFolder", + "args": [ + "uploadSrc" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "文件夹", + "上传", + "打包", + "结果上传", + "门户" + ], + "platformTag": null, + "icon": "file", + "risk": "low", + "fields": [ + { + "key": "uploadSrc", + "label": "上传路径", + "widget": "folder", + "type": "object", + "displayType": "selectFile", + "required": true, + "defaultValue": "", + "placeholder": "请输入“生成上传路径”组件输出的变量", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_folder", + "rpa_str" + ] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mark_Mark", + "name": "图片打标", + "kind": "vendor", + "group": "vision", + "categories": [ + "mark" + ], + "categorySignature": "mark", + "description": "。", + "messageTemplate": "对图片做信息提取, 然后把结果保存到 $0", + "baseType": "Mark_Mark", + "functionName": "Mark.Mark", + "functionCalls": [ + { + "function": "Mark.Mark", + "args": [ + "imagePath", + "labels" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "图片打标", + "打标" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "imagePath", + "label": "图片全路径", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "labels", + "label": "信息标签", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "[]", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "arrElement", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "arrElement", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_ConnectPhone", + "name": "连接手机", + "kind": "vendor", + "group": "mobile", + "categories": [ + "connect_mobile" + ], + "categorySignature": "connect_mobile", + "description": "连接移动设备管理中的指定的移动设备。", + "messageTemplate": "在移动设备管理列表中选择自定义移动设备$1,将该移动设备保存至手机对象并建立连接,, 然后把结果保存到 $0", + "baseType": "Mobile_ConnectPhone", + "functionName": "Mobile.ConnectPhone", + "functionCalls": [ + { + "function": "Mobile.ConnectPhone", + "args": [ + "mobileInfo" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileInfo", + "label": "自定义设备名称", + "widget": "select", + "type": "string", + "displayType": "mobileDeviceDropDownSelect", + "required": false, + "defaultValue": "{}", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "连接手机", + "valueTypes": [ + "rpa_mobile" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "连接手机", + "valueTypes": [ + "rpa_mobile" + ] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_MobileElementAarray", + "name": "获取手机相似元素数组", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "获取手机相似元素数组。", + "messageTemplate": "获取手机相似元素数组", + "baseType": "Mobile_MobileElementAarray", + "functionName": "Mobile.MobileElementAarray", + "functionCalls": [ + { + "function": "Mobile.MobileElementAarray", + "args": [ + "uiSelector", + "mobileDevice" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "uiSelector", + "label": "目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "mobileDevice", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_Call", + "name": "拨打电话", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "通过已连接的手机拨打指定号码。", + "messageTemplate": "通过移动设备 $0 向号码 $1 拨打电话", + "baseType": "Mobile_Call", + "functionName": "Mobile.Call", + "functionCalls": [ + { + "function": "Mobile.Call", + "args": [ + "mobileDevice", + "number", + "brand" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "number", + "label": "需拨打的号码", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "填写需要拨打的电话号码", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "brand", + "label": "手机品牌", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "如是华为品牌手机,请输入\"华为\",其他品牌可填入品牌名称或不填。", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_MobileSetText_V1", + "name": "手机键盘输入", + "kind": "vendor", + "group": "mobile", + "categories": [ + "anthro_operation" + ], + "categorySignature": "anthro_operation", + "description": "使用手机模拟键盘输入指定内容。部分设备需安装ADB Keyboard,请在设置中心 - 扩展程序中下载。", + "messageTemplate": "在移动设备 $0 中,模拟手机键盘输入 $1", + "baseType": "Mobile_MobileSetText", + "functionName": "Mobile.MobileSetText_V1", + "functionCalls": [ + { + "function": "Mobile.MobileSetText_V1", + "args": [ + "mobileDevice", + "text", + "isEnter" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "text", + "label": "文本", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "isEnter", + "label": "输入完成回车", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "输入完成后点击键盘回车键,根据不同场景触发确认、搜索、换行等事件", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_ClickButton", + "name": "系统导航键", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "点击手机底部的默认按键(Home、返回、菜单键)。", + "messageTemplate": "在移动设备 $0 上,点击 $1 键按键", + "baseType": "Mobile_ClickButton", + "functionName": "Mobile.ClickButton", + "functionCalls": [ + { + "function": "Mobile.ClickButton", + "args": [ + "mobileDevice", + "phoneKey" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "phoneKey", + "label": "手机按键", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_SetInputV1", + "name": "手机输入文本", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "在手机指定输入框中输入文本。", + "messageTemplate": "在移动设备 $1 中,将目标元素 $2 的文本内容设置为 $3, 然后把结果保存到 $0", + "baseType": "Mobile_SetInput", + "functionName": "Mobile.SetInputV1", + "functionCalls": [ + { + "function": "Mobile.SetInputV1", + "args": [ + "mobileDevice", + "uiSelector", + "text", + "input", + "isEnter" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "uiSelector", + "label": "目标输入框", + "widget": "element", + "type": "object", + "displayType": "phoneSelector", + "required": true, + "defaultValue": "", + "placeholder": "拾取或选择输入框", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "text", + "label": "输入内容", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "输入内容", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "input", + "label": "输入方式", + "widget": "radio", + "type": "string", + "displayType": "radioGroup", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "替换原文:清空原内容后输入\n追加输入:在已有内容结尾输入", + "advanced": false, + "valueTypes": [] + }, + { + "key": "isEnter", + "label": "输入完成回车", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "输入完成后点击键盘回车键,根据不同场景触发确认、搜索、换行等事件", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输入文本", + "key": "var_name", + "suggestedName": "文本内容", + "valueTypes": [ + "rpa_str" + ], + "fields": [ + { + "key": "var_name", + "label": "输入文本", + "defaultValue": "文本内容", + "valueTypes": [ + "rpa_str" + ] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_ConnectPhoneV3", + "name": "连接手机", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "连接手机管理器中的设备,作为手机自动化类组件操作对象。", + "messageTemplate": "以 $2 连接方式,{$$2 == 0 && '连接 $3 等手机'}{$$2 != 0 && '连接手机'}, 然后把结果保存到 $0 $1", + "baseType": "Mobile_ConnectPhone", + "functionName": "Mobile.ConnectPhoneV3", + "functionCalls": [ + { + "function": "Mobile.ConnectPhoneV3", + "args": [ + "conn_type", + "mobileInfo", + "ignore_phone", + "conn_mode", + "auto_unlock", + "unlock_type", + "design_password", + "num_password", + "mix_password" + ], + "assignTo": "var0,var1" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "conn_type", + "label": "连接方式", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "2", + "placeholder": "", + "description": "指定手机:\n指定单台或多台手机管理器中的手机。\n\n运行前手动选择手机:\n运行连接手机组件时,手动选择手机管理器中的单台或多台手机。\n\n任意连接的单台手机:\n手机管理器中,只能有一台手机与当前电脑连接,仅适用于单手机自动化场景。\n\n所有手机:\n连接所有手机管理器中的手机。", + "advanced": false, + "valueTypes": [] + }, + { + "key": "mobileInfo", + "label": "手机连接对象", + "widget": "select", + "type": "string", + "displayType": "newMobileDeviceDropDownSelectV2", + "required": false, + "defaultValue": "[]", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "ignore_phone", + "label": "忽略连接失败的手机", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "部分手机连接失败时,继续保持其他手机运行,并将连接失败设备以列表形式输出", + "advanced": false, + "valueTypes": [] + }, + { + "key": "conn_mode", + "label": "连接模式", + "widget": "hidden", + "type": "string", + "displayType": "hidden", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "auto_unlock", + "label": "连接时自动解锁", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "unlock_type", + "label": "解锁方式", + "widget": "radio", + "type": "string", + "displayType": "buttonGroup", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "design_password", + "label": "design_password", + "widget": "secret", + "type": "string", + "displayType": "designPassword", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "根据解锁顺序,至少点击连接4个点", + "advanced": false, + "valueTypes": [] + }, + { + "key": "num_password", + "label": "数字密码", + "widget": "secret", + "type": "string", + "displayType": "encryption", + "required": true, + "defaultValue": "", + "placeholder": "请输入4~16位数字密码", + "description": "4~16位数字密码", + "advanced": false, + "valueTypes": [ + "rpa_password", + "rpa_str" + ] + }, + { + "key": "mix_password", + "label": "混合密码", + "widget": "secret", + "type": "string", + "displayType": "encryption", + "required": true, + "defaultValue": "", + "placeholder": "请输入4~16位字母和数字密码", + "description": "4~16位字母和数字密码", + "advanced": false, + "valueTypes": [ + "rpa_password", + "rpa_str" + ] + } + ], + "output": { + "label": "手机操作对象", + "key": "var0", + "suggestedName": "手机操作对象", + "valueTypes": [ + "rpa_list_mobile", + "rpa_list_mobile", + "rpa_mobile", + "rpa_list_mobile" + ], + "fields": [ + { + "key": "var0", + "label": "手机操作对象", + "defaultValue": "手机操作对象", + "valueTypes": [ + "rpa_list_mobile", + "rpa_list_mobile", + "rpa_mobile", + "rpa_list_mobile" + ] + }, + { + "key": "var1", + "label": "连接失败的手机", + "defaultValue": "连接失败的手机", + "valueTypes": [ + "rpa_list_mobile" + ] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_GetAttribute", + "name": "手机元素属性拾取", + "kind": "vendor", + "group": "mobile", + "categories": [ + "element_operation" + ], + "categorySignature": "element_operation", + "description": "获取手机某元素的属性内容。", + "messageTemplate": "在移动设备 $1 中,获取目标元素 $2 中的文本, 然后把结果保存到 $0", + "baseType": "Mobile_GetAttribute", + "functionName": "Mobile.GetAttribute", + "functionCalls": [ + { + "function": "Mobile.GetAttribute", + "args": [ + "mobileDevice", + "uiSelector", + "name", + "isVerifyPage", + "isVerifyElementImage" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "uiSelector", + "label": "目标", + "widget": "element", + "type": "object", + "displayType": "phoneSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "name", + "label": "属性名称", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "输入属性名称", + "description": "index:父级下索引\npackage:包名\nclass:类名\nbounds:坐标范围\nresource-id:唯一标识\ntext:文本\nenabled:可用\nclickable:可点击\nlong-clickable:可长按\ncheckable:可勾选\nfocusable:可获取焦点\nscrollable:可滚动\ndisplayed:可显示\npassword:内容可隐藏", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "isVerifyPage", + "label": "是否校验页面", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前手机页面是否与元素拾取时所在页面一致", + "advanced": true, + "valueTypes": [] + }, + { + "key": "isVerifyElementImage", + "label": "是否校验元素图像", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前定位到的元素区域内是否存在拾取时保存的元素图像", + "advanced": true, + "valueTypes": [] + } + ], + "output": { + "label": "手机元素属性", + "key": "var_name", + "suggestedName": "手机元素属性值", + "valueTypes": [ + "rpa_str" + ], + "fields": [ + { + "key": "var_name", + "label": "手机元素属性", + "defaultValue": "手机元素属性值", + "valueTypes": [ + "rpa_str" + ] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_Exists", + "name": "手机元素判断", + "kind": "vendor", + "group": "mobile", + "categories": [ + "element_operation" + ], + "categorySignature": "element_operation", + "description": "判断手机中指定元素是否存在。", + "messageTemplate": "判断指定元素 $2 是否存在, 然后把结果保存到 $0", + "baseType": "Mobile_Exists", + "functionName": "Mobile.Exists", + "functionCalls": [ + { + "function": "Mobile.Exists", + "args": [ + "mobileDevice", + "uiSelector", + "isVerifyPage", + "isVerifyElementImage" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "元素存在", + "存在", + "判断元素存在", + "元素", + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "uiSelector", + "label": "目标", + "widget": "element", + "type": "object", + "displayType": "phoneSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "isVerifyPage", + "label": "是否校验页面", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前手机页面是否与元素拾取时所在页面一致", + "advanced": true, + "valueTypes": [] + }, + { + "key": "isVerifyElementImage", + "label": "是否校验元素图像", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前定位到的元素区域内是否存在拾取时保存的元素图像", + "advanced": true, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "判断结果", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "判断结果", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_MobileElementList", + "name": "获取手机相似元素列表", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "获取手机中,与指定元素相似的其他元素信息。", + "messageTemplate": "在移动设备 $2 中,以元素拾取定位方式,获取 $3 的相似元素,然后把结果保存到 $0", + "baseType": "Mobile_MobileElementList", + "functionName": "Mobile.MobileElementList", + "functionCalls": [ + { + "function": "Mobile.MobileElementList", + "args": [ + "mobileDevice", + "selector" + ], + "assignTo": "var0,var1" + } + ], + "version": "3.3.5.0", + "tags": [ + "相似元素", + "拾取元素", + "捕获元素", + "保存元素", + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "selector", + "label": "目标选择", + "widget": "text", + "type": "string", + "displayType": "captureSimilarElementsWithPhone", + "required": false, + "defaultValue": "{}", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "相似元素列表", + "key": "var0", + "suggestedName": "相似元素列表", + "valueTypes": [ + "rpa_list_element_v1" + ], + "fields": [ + { + "key": "var0", + "label": "相似元素列表", + "defaultValue": "相似元素列表", + "valueTypes": [ + "rpa_list_element_v1" + ] + }, + { + "key": "var1", + "label": "相似元素总数", + "defaultValue": "相似元素总数", + "valueTypes": [ + "rpa_int" + ] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_FileTransfer", + "name": "手机文件传输", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "在手机和电脑之间,进行文件传输。", + "messageTemplate": "以 $1 为传输目标,{$$1 == 0 && '将 $2 传输到 $3'}{$$1 == 1 && '将 $5 传输到 $6'}", + "baseType": "Mobile_FileTransfer", + "functionName": "Mobile.FileTransfer", + "functionCalls": [ + { + "function": "Mobile.FileTransfer", + "args": [ + "mobileDevice", + "transfer_direction", + "pc_path", + "mobile_save_path", + "mobile_custom_path", + "mobile_path", + "pc_save_path", + "pc_custom_path", + "overwrite", + "auto_create", + "del_origin" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "transfer_direction", + "label": "传输目标", + "widget": "radio", + "type": "string", + "displayType": "buttonGroup", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "pc_path", + "label": "电脑文件", + "widget": "file", + "type": "object", + "displayType": "multiSelectFileOrDir", + "required": true, + "defaultValue": "", + "placeholder": "请选择或输入电脑文件所在路径,及文件名称+后缀", + "description": "多个文件路径之间,使用英文\";\"分割", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "mobile_save_path", + "label": "手机保存路径", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "/sdcard/Download/", + "placeholder": "", + "description": "根目录:/sdcard/ 或 /storage/emulated/0/\n下载:/sdcard/Download/\n文档:/sdcard/Documents/\n相册:/sdcard/DCIM/Camera/\n截图:/sdcard/DCIM/Screenshots/ 或 /sdcard/Pictures/Screenshots/\n临时:/data/local/tmp/", + "advanced": false, + "valueTypes": [] + }, + { + "key": "mobile_custom_path", + "label": "手机自定义路径", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请选择或输入电脑保存路径", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "mobile_path", + "label": "手机文件", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请输入手机文件所在路径,及文件名称+后缀", + "description": "多个文件路径之间,使用英文\";\"分割", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "pc_save_path", + "label": "电脑保存路径", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "Desktop", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "pc_custom_path", + "label": "电脑自定义路径", + "widget": "folder", + "type": "object", + "displayType": "selectFile", + "required": true, + "defaultValue": "", + "placeholder": "请选择或输入电脑保存路径", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_folder", + "rpa_str" + ] + }, + { + "key": "overwrite", + "label": "覆盖同名文件", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "auto_create", + "label": "路径不存在时,自动创建", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "del_origin", + "label": "传输完成后删除原文件", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_GetPhoneInfomation", + "name": "获取手机连接详情", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "获取手机连接的详细信息,并存入指定的字典类型变量。", + "messageTemplate": "获取移动设备 $1 的连接详情, 然后把结果保存到 $0", + "baseType": "Mobile_GetPhoneInfomation", + "functionName": "Mobile.GetPhoneInfomation", + "functionCalls": [ + { + "function": "Mobile.GetPhoneInfomation", + "args": [ + "mobileDevice" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "手机连接详情", + "valueTypes": [ + "rpa_dict" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "手机连接详情", + "valueTypes": [ + "rpa_dict" + ] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_ClickLocation", + "name": "手机屏幕坐标点击", + "kind": "vendor", + "group": "mobile", + "categories": [ + "anthro_operation" + ], + "categorySignature": "anthro_operation", + "description": "模拟手势点击操作。", + "messageTemplate": "点击移动设备屏幕 $0 的 $1 位置", + "baseType": "Mobile_ClickLocation", + "functionName": "Mobile.ClickLocation", + "functionCalls": [ + { + "function": "Mobile.ClickLocation", + "args": [ + "mobileDevice", + "location", + "type" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "location", + "label": "获取坐标", + "widget": "region", + "type": "object", + "displayType": "mouseRecordPhone", + "required": false, + "defaultValue": "[0,0]", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "type", + "label": "点击方式", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_SaveFilePhone", + "name": "保存文件到手机", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "将电脑中的文件保存至手机中的指定位置。", + "messageTemplate": "将本地 $1 下的文件保存至移动设备 $0 中的指定路径下", + "baseType": "Mobile_SaveFilePhone", + "functionName": "Mobile.SaveFilePhone", + "functionCalls": [ + { + "function": "Mobile.SaveFilePhone", + "args": [ + "mobileDevice", + "filePath", + "phonePath" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "mobileDevice", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "filePath", + "label": "电脑文件路径", + "widget": "folder", + "type": "object", + "displayType": "selectFile", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_folder", + "rpa_str" + ] + }, + { + "key": "phonePath", + "label": "手机储存文件位置", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_SetInput", + "name": "设置文本|填写输入框", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "在手机指定输入框中输入文本。", + "messageTemplate": "在移动设备 $1 中,将目标元素 $2 的文本内容设置为 $3, 然后把结果保存到 $0", + "baseType": "Mobile_SetInput", + "functionName": "Mobile.SetInput", + "functionCalls": [ + { + "function": "Mobile.SetInput", + "args": [ + "mobileDevice", + "uiSelector", + "text", + "input" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "uiSelector", + "label": "目标", + "widget": "element", + "type": "object", + "displayType": "phoneSelector", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "text", + "label": "写入文本", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "input", + "label": "追加输入", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "手机文本内容", + "valueTypes": [ + "rpa_str" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "手机文本内容", + "valueTypes": [ + "rpa_str" + ] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_MobileCvClick", + "name": "手机智能元素点击", + "kind": "vendor", + "group": "mobile", + "categories": [ + "element_operation" + ], + "categorySignature": "element_operation", + "description": "通过AI能力,获取手机页面中的元素,并对元素进行点击操作。", + "messageTemplate": "在移动设备 $0 中,通过AI能力获取目标元素 $1 ,并进行 $2 操作", + "baseType": "Mobile_MobileCvClick", + "functionName": "Mobile.MobileCvClick", + "functionCalls": [ + { + "function": "Mobile.MobileCvClick", + "args": [ + "mobileDevice", + "cvSelector", + "clickway", + "offsetX", + "offsetY" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "cvSelector", + "label": "目标", + "widget": "element", + "type": "object", + "displayType": "phoneSelectorCv", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "clickway", + "label": "点击类型", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "offsetX", + "label": "x轴偏移量", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "offsetY", + "label": "y轴偏移量", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_TouchSlideV1", + "name": "触摸滑动", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "模拟手势滑动屏幕。", + "messageTemplate": "以$1方式,{$$1 == 0 && '从$3$4$6起始,角度方向$7,滑动距离$8,'}{$$1 == 0 && $$13 == 1 && '持续滑动至$15$16出现'} {$$1 == 0 && $$13 == 0 && '进行滑动'}{$$1 == 1 && '单点触控,滑动 $11 段'}", + "baseType": "Mobile_TouchSlide", + "functionName": "Mobile.TouchSlideV1", + "functionCalls": [ + { + "function": "Mobile.TouchSlideV1", + "args": [ + "mobileDevice", + "slide_type", + "start_type", + "start_selector", + "start_image", + "start_image_data", + "start_location", + "angle", + "distance", + "slide_time", + "touch_type", + "single_touch", + "press_slide", + "slide_target", + "target_type", + "target_selector", + "target_image", + "target_image_data", + "slide_times", + "human_speed", + "human_curvature", + "auto_resolution", + "isVerifyPage", + "isVerifyElementImage" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "slide_type", + "label": "滑动方式", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "按方向:以坐标/元素/图像为目标,设置方向、距离和时间,进行单方向滑动\n\n按坐标:指定坐标,进行多段距离、多点触控滑动", + "advanced": false, + "valueTypes": [] + }, + { + "key": "start_type", + "label": "起始位置", + "widget": "radio", + "type": "string", + "displayType": "buttonGroup", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "start_selector", + "label": "目标元素", + "widget": "element", + "type": "object", + "displayType": "phoneSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "start_image", + "label": "目标图像", + "widget": "text", + "type": "string", + "displayType": "imageSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "start_image_data", + "label": "start_image_data", + "widget": "region", + "type": "object", + "displayType": "clickPositionV3", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_dict" + ] + }, + { + "key": "start_location", + "label": "起始坐标", + "widget": "region", + "type": "object", + "displayType": "mouseRecordPhone", + "required": true, + "defaultValue": "[0,0]", + "placeholder": "请输入或拾取坐标点", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_list" + ] + }, + { + "key": "angle", + "label": "角度方向(度)", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "0", + "placeholder": "", + "description": "0:向右\n90:向上\n180:向左\n270:向下", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "distance", + "label": "滑动距离", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "slide_time", + "label": "滑动时间", + "widget": "hidden", + "type": "string", + "displayType": "hidden", + "required": true, + "defaultValue": "0.5", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_int", + "rpa_float" + ] + }, + { + "key": "touch_type", + "label": "触控方式", + "widget": "hidden", + "type": "string", + "displayType": "hidden", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "single_touch", + "label": "single_touch", + "widget": "number", + "type": "number", + "displayType": "touchCoord", + "required": true, + "defaultValue": "[]", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_list" + ] + }, + { + "key": "press_slide", + "label": "长按拖动", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "slide_target", + "label": "持续滑动至指定目标出现", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "在指定查找次数内滑动,直到目标出现在界面后,自动停止", + "advanced": false, + "valueTypes": [] + }, + { + "key": "target_type", + "label": "指定出现目标", + "widget": "radio", + "type": "string", + "displayType": "buttonGroup", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "target_selector", + "label": "目标元素", + "widget": "element", + "type": "object", + "displayType": "phoneSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "target_image", + "label": "目标图像", + "widget": "text", + "type": "string", + "displayType": "imageSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "target_image_data", + "label": "target_image_data", + "widget": "region", + "type": "object", + "displayType": "clickPositionV3", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_dict" + ] + }, + { + "key": "slide_times", + "label": "滑动查找次数", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "3", + "placeholder": "", + "description": "滑动指定次数后,仍未找到目标,则自动停止,并执行组件异常处理逻辑", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "human_speed", + "label": "模拟真人滑动速率", + "widget": "hidden", + "type": "string", + "displayType": "hidden", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "在滑动过程中,随机变化滑动速度", + "advanced": false, + "valueTypes": [] + }, + { + "key": "human_curvature", + "label": "模拟真人滑动曲率", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "在滑动过程中,轻微增加滑动轨迹曲率", + "advanced": false, + "valueTypes": [] + }, + { + "key": "auto_resolution", + "label": "自适应屏幕分辨率", + "widget": "hidden", + "type": "string", + "displayType": "hidden", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "以当前设备为基础,根据其他设备分辨率宽高比例,调整坐标和滑动距离。适用于宽高比近似手机操作", + "advanced": false, + "valueTypes": [] + }, + { + "key": "isVerifyPage", + "label": "是否校验页面", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前手机页面是否与元素拾取时所在页面一致", + "advanced": true, + "valueTypes": [] + }, + { + "key": "isVerifyElementImage", + "label": "是否校验元素图像", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前定位到的元素区域内是否存在拾取时保存的元素图像", + "advanced": true, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_GetPhoneFiles", + "name": "从手机中获取文件", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "将手机中的文件保存至电脑中的指定位置。", + "messageTemplate": "从移动设备 $0 中获取文件,保存到本地 $2 文件夹中", + "baseType": "Mobile_GetPhoneFiles", + "functionName": "Mobile.GetPhoneFiles", + "functionCalls": [ + { + "function": "Mobile.GetPhoneFiles", + "args": [ + "mobileDevice", + "phonePath", + "filePath" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "mobileDevice", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "phonePath", + "label": "手机储存文件位置", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "filePath", + "label": "电脑文件路径", + "widget": "folder", + "type": "object", + "displayType": "selectFile", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_folder", + "rpa_str" + ] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_OpenMobileApp", + "name": "打开手机APP", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "通过名称或包名打开手机应用。", + "messageTemplate": "在移动设备 $0 中,打开 $1 应用", + "baseType": "Mobile_OpenMobileApp", + "functionName": "Mobile.OpenMobileApp", + "functionCalls": [ + { + "function": "Mobile.OpenMobileApp", + "args": [ + "mobileDevice", + "package", + "homepage" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "package", + "label": "包名", + "widget": "text", + "type": "string", + "displayType": "getMobileApp", + "required": true, + "defaultValue": "", + "placeholder": "手机打开应用,点击获取包名,自动填入", + "description": "手机打开应用后,点击“获取包名”按钮,自动填入", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "homepage", + "label": "打开前先关闭APP", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "如果APP已打开,则先关闭,确保流程从APP主页执行\n关闭对象不存在,则跳过此操作", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_TouchSlide", + "name": "触摸滑动", + "kind": "vendor", + "group": "mobile", + "categories": [ + "element_operation" + ], + "categorySignature": "element_operation", + "description": "模拟人触摸滑动手机屏幕。", + "messageTemplate": "在移动设备 $0 中,以开始位置 $1,结束位置 $3 进行 $2 滑动的操作", + "baseType": "Mobile_TouchSlide", + "functionName": "Mobile.TouchSlide", + "functionCalls": [ + { + "function": "Mobile.TouchSlide", + "args": [ + "mobileDevice", + "location", + "direction", + "locationEnd", + "SlidingMode" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "location", + "label": "起始坐标", + "widget": "region", + "type": "object", + "displayType": "mouseRecordPhone", + "required": false, + "defaultValue": "[0,0]", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "direction", + "label": "滑动方向", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "locationEnd", + "label": "截止坐标", + "widget": "region", + "type": "object", + "displayType": "mouseRecordPhone", + "required": false, + "defaultValue": "[0,0]", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "SlidingMode", + "label": "滑动方式", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "选择方向时,起始坐标必填,截止坐标可不填;选择坐标时,起始坐标必填,滑动方向可不填。", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_GetMobileUiTree", + "name": "获取手机UI树", + "kind": "vendor", + "group": "mobile", + "categories": [ + "element_operation" + ], + "categorySignature": "element_operation", + "description": "获取手机当前界面元素层级的XML结构信息。", + "messageTemplate": "在移动设备 $2 中,获取界面元素层级的XML结构,然后把结果保存到 $0", + "baseType": "Mobile_GetMobileUiTree", + "functionName": "Mobile.GetMobileUiTree", + "functionCalls": [ + { + "function": "Mobile.GetMobileUiTree", + "args": [ + "mobileDevice", + "save_file", + "folder_path", + "filename", + "is_cover" + ], + "assignTo": "var0,var1" + } + ], + "version": "3.3.5.0", + "tags": [ + "UI", + "树", + "XML", + "元素结构", + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "save_file", + "label": "将元素层级信息保存到文件", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "将页面元素层级信息以XML格式保存", + "advanced": false, + "valueTypes": [] + }, + { + "key": "folder_path", + "label": "保存路径", + "widget": "folder", + "type": "object", + "displayType": "selectFile", + "required": true, + "defaultValue": "", + "placeholder": "请输入或填写文件保存路径", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_folder", + "rpa_str" + ] + }, + { + "key": "filename", + "label": "文件名称", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "请输入文件名称", + "description": "不填写名称时,系统随机生成,文件后缀固定为.xml", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "is_cover", + "label": "覆盖同名文件", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "勾选:覆盖同名文件\n不勾选:在名称后添加“(副本)”进行区分", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "页面元素结构", + "key": "var0", + "suggestedName": "页面元素XML结构", + "valueTypes": [ + "rpa_str" + ], + "fields": [ + { + "key": "var0", + "label": "页面元素结构", + "defaultValue": "页面元素XML结构", + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "var1", + "label": "文件路径", + "defaultValue": "文件路径", + "valueTypes": [ + "rpa_str" + ] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_GetScreenOrientation", + "name": "获取手机屏幕方向", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "获取手机当前的屏幕方向:竖屏(portrait)、横屏(landscape)。", + "messageTemplate": "获取移动设备 $1 屏幕方向信息,, 然后把结果保存到 $0", + "baseType": "Mobile_GetScreenOrientation", + "functionName": "Mobile.GetScreenOrientation", + "functionCalls": [ + { + "function": "Mobile.GetScreenOrientation", + "args": [ + "mobileDevice" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "手机屏幕方向", + "valueTypes": [ + "rpa_str" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "手机屏幕方向", + "valueTypes": [ + "rpa_str" + ] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_GetElement", + "name": "获取手机元素对象", + "kind": "vendor", + "group": "mobile", + "categories": [ + "element_operation" + ], + "categorySignature": "element_operation", + "description": "获取指定页面中指定元素对象。", + "messageTemplate": "在移动设备 $1 中,以 $2 定位方式,获取 $3$4 的相似元素, 然后把结果保存到 $0", + "baseType": "Mobile_GetElement", + "functionName": "Mobile.GetElement", + "functionCalls": [ + { + "function": "Mobile.GetElement", + "args": [ + "mobileDevice", + "element_position", + "selector", + "xpath", + "isVerifyPage", + "isVerifyElementImage" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "元素", + "元素对象", + "拾取元素", + "xpath", + "手机", + "获取元素对象" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "element_position", + "label": "定位方式", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "default", + "placeholder": "", + "description": "图形化操作拾取元素,通过元素层级结构进行定位,可调整属性值,定位动态变化的元素", + "advanced": false, + "valueTypes": [] + }, + { + "key": "selector", + "label": "目标选择", + "widget": "text", + "type": "string", + "displayType": "captureSimilarElementsWithPhone", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "xpath", + "label": "XPath选择器", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "isVerifyPage", + "label": "是否校验页面", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前手机页面是否与元素拾取时所在页面一致", + "advanced": true, + "valueTypes": [] + }, + { + "key": "isVerifyElementImage", + "label": "是否校验元素图像", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前定位到的元素区域内是否存在拾取时保存的元素图像", + "advanced": true, + "valueTypes": [] + } + ], + "output": { + "label": "元素对象", + "key": "var_name", + "suggestedName": "元素对象", + "valueTypes": [ + "rpa_element" + ], + "fields": [ + { + "key": "var_name", + "label": "元素对象", + "defaultValue": "元素对象", + "valueTypes": [ + "rpa_element" + ] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_MobileCvSetText", + "name": "智能设置文本|填写输入框", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "通过AI能力,获取手机页面中的元素,若该元素可进行文本输入,则输入设置的文本内容。", + "messageTemplate": "在移动设备 $0 中,将目标元素 $1 的文本内容设置为 $2", + "baseType": "Mobile_MobileCvSetText", + "functionName": "Mobile.MobileCvSetText", + "functionCalls": [ + { + "function": "Mobile.MobileCvSetText", + "args": [ + "mobileDevice", + "cvSelector", + "text" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "mobileDevice", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "cvSelector", + "label": "目标", + "widget": "element", + "type": "object", + "displayType": "phoneSelectorCv", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "text", + "label": "文本", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_ClosePhone", + "name": "关闭连接手机", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "断开已连接的移动设备。", + "messageTemplate": "选择已连接的移动设备$0,并断开连接", + "baseType": "Mobile_ClosePhone", + "functionName": "Mobile.ClosePhone", + "functionCalls": [ + { + "function": "Mobile.ClosePhone", + "args": [ + "mobileDevice" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_SetInputV2", + "name": "手机输入文本", + "kind": "vendor", + "group": "mobile", + "categories": [ + "element_operation" + ], + "categorySignature": "element_operation", + "description": "在手机指定输入框中输入文本。", + "messageTemplate": "在移动设备 $2 中,将目标元素 $3 的文本内容设置为 $4,然后把结果保存到 $0", + "baseType": "Mobile_SetInput", + "functionName": "Mobile.SetInputV2", + "functionCalls": [ + { + "function": "Mobile.SetInputV2", + "args": [ + "mobileDevice", + "uiSelector", + "text", + "verifying_input", + "input", + "isEnter", + "isVerifyPage", + "isVerifyElementImage" + ], + "assignTo": "var0,var1" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "uiSelector", + "label": "目标输入框", + "widget": "element", + "type": "object", + "displayType": "phoneSelector", + "required": true, + "defaultValue": "", + "placeholder": "拾取或选择输入框", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "text", + "label": "输入内容", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "输入内容", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "verifying_input", + "label": "校验输入内容", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "输入完成后,检查输入框内容与实际输入是否相同", + "advanced": false, + "valueTypes": [] + }, + { + "key": "input", + "label": "输入方式", + "widget": "radio", + "type": "string", + "displayType": "radioGroup", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "替换原文:清空原内容后输入\n追加输入:在已有内容结尾输入", + "advanced": false, + "valueTypes": [] + }, + { + "key": "isEnter", + "label": "输入完成回车", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "输入完成后点击键盘回车键,根据不同场景触发确认、搜索、换行等事件", + "advanced": false, + "valueTypes": [] + }, + { + "key": "isVerifyPage", + "label": "是否校验页面", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前手机页面是否与元素拾取时所在页面一致", + "advanced": true, + "valueTypes": [] + }, + { + "key": "isVerifyElementImage", + "label": "是否校验元素图像", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前定位到的元素区域内是否存在拾取时保存的元素图像", + "advanced": true, + "valueTypes": [] + } + ], + "output": { + "label": "输入文本", + "key": "var0", + "suggestedName": "文本内容", + "valueTypes": [ + "rpa_str" + ], + "fields": [ + { + "key": "var0", + "label": "输入文本", + "defaultValue": "文本内容", + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "var1", + "label": "校验结果", + "defaultValue": "校验结果", + "valueTypes": [ + "rpa_bool" + ] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_SetScreenOrientation", + "name": "设置手机屏幕方向", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "设置手机当前的屏幕方向:竖屏或横屏。", + "messageTemplate": "将移动设备 $0 的屏幕方向设置为 $1", + "baseType": "Mobile_SetScreenOrientation", + "functionName": "Mobile.SetScreenOrientation", + "functionCalls": [ + { + "function": "Mobile.SetScreenOrientation", + "args": [ + "mobileDevice", + "direction" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "direction", + "label": "屏幕方向", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_ImageClick", + "name": "点击手机图像", + "kind": "vendor", + "group": "mobile", + "categories": [ + "anthro_operation" + ], + "categorySignature": "anthro_operation", + "description": "点击指定区域内匹配图像。", + "messageTemplate": "查找图像 $2 使用 $4 方式, {$$4 == 0 && \"点击 $5 次,间隔 $6 秒。\"}{$$4 == 2 && \"持续时间 $7 秒。\"}{$$8 == 1 && \"将目标图像文件保存到 $0\"}", + "baseType": "Mobile_ImageClick", + "functionName": "Mobile.ImageClick", + "functionCalls": [ + { + "function": "Mobile.ImageClick", + "args": [ + "mobileDevice", + "image_selector", + "click_data", + "click_way", + "click_num", + "click_interval", + "stay_time", + "match_status" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机", + "图片", + "手势" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "image_selector", + "label": "目标图像", + "widget": "text", + "type": "string", + "displayType": "imageSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "click_data", + "label": "click_data", + "widget": "region", + "type": "object", + "displayType": "clickPositionV3", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_dict" + ] + }, + { + "key": "click_way", + "label": "点击类型", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "click_num", + "label": "点击次数", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "click_interval", + "label": "点击间隔(秒)", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "stay_time", + "label": "持续时间(秒)", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "2", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "match_status", + "label": "匹配到多个图像时", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": true, + "valueTypes": [] + } + ], + "output": { + "label": "目标图像", + "key": "var_name", + "suggestedName": "图像坐标列表", + "valueTypes": [ + "rpa_list" + ], + "fields": [ + { + "key": "var_name", + "label": "目标图像", + "defaultValue": "图像坐标列表", + "valueTypes": [ + "rpa_list" + ] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_CloseMobileApp", + "name": "关闭手机APP", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "通过名称或包名关闭手机应用。", + "messageTemplate": "在移动设备 $0 中,关闭 $1 应用", + "baseType": "Mobile_CloseMobileApp", + "functionName": "Mobile.CloseMobileApp", + "functionCalls": [ + { + "function": "Mobile.CloseMobileApp", + "args": [ + "mobileDevice", + "package" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "package", + "label": "包名", + "widget": "text", + "type": "string", + "displayType": "getMobileApp", + "required": true, + "defaultValue": "", + "placeholder": "手机打开应用,点击获取包名,自动填入", + "description": "手机打开应用后,点击“获取包名”按钮,自动填入", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_ElementShot", + "name": "手机元素截图", + "kind": "vendor", + "group": "mobile", + "categories": [ + "element_operation" + ], + "categorySignature": "element_operation", + "description": "对指定的元素进行截图,并图片保存至指定的文件夹中。", + "messageTemplate": "在移动设备 $1 中,将目标元素 $2 进行截图,将图片保存至指定路径下, 然后把结果保存到 $0", + "baseType": "Mobile_ElementShot", + "functionName": "Mobile.ElementShot", + "functionCalls": [ + { + "function": "Mobile.ElementShot", + "args": [ + "mobileDevice", + "uiSelector", + "filePath", + "filename", + "isVerifyPage", + "isVerifyElementImage" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "uiSelector", + "label": "目标", + "widget": "element", + "type": "object", + "displayType": "phoneSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "filePath", + "label": "保存路径", + "widget": "folder", + "type": "object", + "displayType": "selectFile", + "required": true, + "defaultValue": "${res}", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_folder", + "rpa_str" + ] + }, + { + "key": "filename", + "label": "文件名称", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "截图_${randomString}.png", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "isVerifyPage", + "label": "是否校验页面", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前手机页面是否与元素拾取时所在页面一致", + "advanced": true, + "valueTypes": [] + }, + { + "key": "isVerifyElementImage", + "label": "是否校验元素图像", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前定位到的元素区域内是否存在拾取时保存的元素图像", + "advanced": true, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "手机元素图片", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "手机元素图片", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_ScreenShot", + "name": "手机截屏", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "截屏手机当前页面,并将截图保存至指定的文件夹中。", + "messageTemplate": "对移动设备 $0 的当前页面进行截图,将图片保存至指定路径下", + "baseType": "Mobile_ScreenShot", + "functionName": "Mobile.ScreenShot", + "functionCalls": [ + { + "function": "Mobile.ScreenShot", + "args": [ + "mobileDevice", + "filePath", + "filename" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "filePath", + "label": "保存路径", + "widget": "folder", + "type": "object", + "displayType": "selectFile", + "required": false, + "defaultValue": "${res}", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_folder", + "rpa_str" + ] + }, + { + "key": "filename", + "label": "文件名称", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "截图_${randomString}.png", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_GetClipboardText", + "name": "获取手机剪切板文本", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "获取手机剪切板文本内容。", + "messageTemplate": "获取移动设备 $1 上剪切板的文本内容, 然后把结果保存到 $0", + "baseType": "Mobile_GetClipboardText", + "functionName": "Mobile.GetClipboardText", + "functionCalls": [ + { + "function": "Mobile.GetClipboardText", + "args": [ + "mobileDevice" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "手机剪切板文本", + "valueTypes": [ + "rpa_str" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "手机剪切板文本", + "valueTypes": [ + "rpa_str" + ] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_ConnectPhoneV2", + "name": "连接手机", + "kind": "vendor", + "group": "mobile", + "categories": [ + "connect_mobile" + ], + "categorySignature": "connect_mobile", + "description": "连接手机管理器中的设备,作为手机自动化类组件操作对象。", + "messageTemplate": "以 $2 连接方式, {$$2 == 1 && '连接手机'}{$$2 != 1 && '连接 $3 等手机'}, 然后把结果保存到 $0 $1", + "baseType": "Mobile_ConnectPhone", + "functionName": "Mobile.ConnectPhoneV2", + "functionCalls": [ + { + "function": "Mobile.ConnectPhoneV2", + "args": [ + "conn_type", + "mobileInfo", + "ignore_phone" + ], + "assignTo": "var0,var1" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "conn_type", + "label": "连接方式", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "指定手机:\n指定单台或多台手机管理器中的手机。\n运行前手动选择手机:\n运行连接手机组件时,手动选择手机管理器中的单台或多台手机。\n任意连接的单台手机:\n手机管理器中,只能有一台手机与当前电脑连接,仅适用于单手机自动化场景。\n所有手机:\n连接所有手机管理器中的手机。", + "advanced": false, + "valueTypes": [] + }, + { + "key": "mobileInfo", + "label": "手机连接对象", + "widget": "select", + "type": "string", + "displayType": "newMobileDeviceDropDownSelectV2", + "required": false, + "defaultValue": "[]", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "ignore_phone", + "label": "忽略连接失败的手机", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "部分手机连接失败时,继续保持其他手机运行,并将连接失败设备以列表形式输出", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "手机操作对象", + "key": "var0", + "suggestedName": "手机操作对象", + "valueTypes": [ + "rpa_list_mobile", + "rpa_list_mobile", + "rpa_mobile", + "rpa_list_mobile" + ], + "fields": [ + { + "key": "var0", + "label": "手机操作对象", + "defaultValue": "手机操作对象", + "valueTypes": [ + "rpa_list_mobile", + "rpa_list_mobile", + "rpa_mobile", + "rpa_list_mobile" + ] + }, + { + "key": "var1", + "label": "连接失败的手机", + "defaultValue": "连接失败的手机", + "valueTypes": [ + "rpa_list_mobile" + ] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_GetText", + "name": "手机元素文本拾取", + "kind": "vendor", + "group": "mobile", + "categories": [ + "element_operation" + ], + "categorySignature": "element_operation", + "description": "获取手机元素中的文本内容。", + "messageTemplate": "在移动设备 $1 中,获取目标元素 $2 中的文本内容, 然后把结果保存到 $0", + "baseType": "Mobile_GetText", + "functionName": "Mobile.GetText", + "functionCalls": [ + { + "function": "Mobile.GetText", + "args": [ + "mobileDevice", + "uiSelector", + "isVerifyPage", + "isVerifyElementImage" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "uiSelector", + "label": "目标", + "widget": "element", + "type": "object", + "displayType": "phoneSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "isVerifyPage", + "label": "是否校验页面", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前手机页面是否与元素拾取时所在页面一致", + "advanced": true, + "valueTypes": [] + }, + { + "key": "isVerifyElementImage", + "label": "是否校验元素图像", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前定位到的元素区域内是否存在拾取时保存的元素图像", + "advanced": true, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "手机元素文本", + "valueTypes": [ + "rpa_str" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "手机元素文本", + "valueTypes": [ + "rpa_str" + ] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_MobileSetText", + "name": "手机键盘输入", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "模拟手机键盘输入指定内容。", + "messageTemplate": "在移动设备 $0 中,模拟手机键盘输入 $1", + "baseType": "Mobile_MobileSetText", + "functionName": "Mobile.MobileSetText", + "functionCalls": [ + { + "function": "Mobile.MobileSetText", + "args": [ + "mobileDevice", + "text" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "text", + "label": "文本", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_MobileElementList_V1", + "name": "获取手机相似元素列表", + "kind": "vendor", + "group": "mobile", + "categories": [ + "element_operation" + ], + "categorySignature": "element_operation", + "description": "获取手机中,与指定元素相似的其他元素信息。", + "messageTemplate": "在移动设备 $2 中,以 $3 定位方式,获取 $4$5 的相似元素,然后把结果保存到 $0", + "baseType": "Mobile_MobileElementList", + "functionName": "Mobile.MobileElementList_V1", + "functionCalls": [ + { + "function": "Mobile.MobileElementList_V1", + "args": [ + "mobileDevice", + "element_position", + "selector", + "xpath", + "action", + "attr_complate", + "attr_name", + "reverse", + "start_index", + "end_index", + "is_engine", + "isVerifyPage", + "isVerifyElementImage" + ], + "assignTo": "var0,var1" + } + ], + "version": "3.3.5.0", + "tags": [ + "相似元素", + "拾取元素", + "捕获元素", + "保存元素", + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "element_position", + "label": "定位方式", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "default", + "placeholder": "", + "description": "图形化操作拾取元素,通过元素层级结构进行定位,可调整属性值,定位动态变化的元素", + "advanced": false, + "valueTypes": [] + }, + { + "key": "selector", + "label": "目标选择", + "widget": "text", + "type": "string", + "displayType": "captureSimilarElementsWithPhone", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "xpath", + "label": "XPath选择器", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "action", + "label": "元素操作", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "attr_complate", + "label": "自动补充完整地址", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "当地址缺少http://、https://,或为相对地址时,自动补充为完整地址。", + "advanced": false, + "valueTypes": [] + }, + { + "key": "attr_name", + "label": "属性名", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请输入元素属性名", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "reverse", + "label": "获取方式", + "widget": "radio", + "type": "string", + "displayType": "radioGroup", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": true, + "valueTypes": [] + }, + { + "key": "start_index", + "label": "开始获取位置", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "默认为1表示从第1项开始获取。支持选择整型变量。", + "advanced": true, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "end_index", + "label": "结束获取位置", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "-1", + "placeholder": "", + "description": "默认为-1表示将获取至倒数第1项。支持选择整型变量。", + "advanced": true, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "is_engine", + "label": "is_engine", + "widget": "hidden", + "type": "string", + "displayType": "hidden", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "isVerifyPage", + "label": "是否校验页面", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前手机页面是否与元素拾取时所在页面一致", + "advanced": true, + "valueTypes": [] + }, + { + "key": "isVerifyElementImage", + "label": "是否校验元素图像", + "widget": "hidden", + "type": "string", + "displayType": "hidden", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前定位到的元素区域内是否存在拾取时保存的元素图像", + "advanced": true, + "valueTypes": [] + } + ], + "output": { + "label": "相似元素列表", + "key": "var0", + "suggestedName": "相似元素列表", + "valueTypes": [ + "rpa_list_element_v1" + ], + "fields": [ + { + "key": "var0", + "label": "相似元素列表", + "defaultValue": "相似元素列表", + "valueTypes": [ + "rpa_list_element_v1" + ] + }, + { + "key": "var1", + "label": "相似元素总数", + "defaultValue": "相似元素总数", + "valueTypes": [ + "rpa_int" + ] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_ElementClick", + "name": "手机元素点击", + "kind": "vendor", + "group": "mobile", + "categories": [ + "element_operation" + ], + "categorySignature": "element_operation", + "description": "点击手机页面内的各种元素(如:按钮、图标、链接等)。", + "messageTemplate": "在移动设备 $0 中,获取目标元素 $1,并进行 $2 操作", + "baseType": "Mobile_ElementClick", + "functionName": "Mobile.ElementClick", + "functionCalls": [ + { + "function": "Mobile.ElementClick", + "args": [ + "mobileDevice", + "uiSelector", + "clickfunc", + "click_data", + "isVerifyPage", + "isVerifyElementImage" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "uiSelector", + "label": "目标", + "widget": "element", + "type": "object", + "displayType": "phoneSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "clickfunc", + "label": "点击方式", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "click_data", + "label": "点击位置", + "widget": "region", + "type": "object", + "displayType": "clickPositionV2", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "选择随机偏移,则会随机点击界面元素的任意位置", + "advanced": true, + "valueTypes": [] + }, + { + "key": "isVerifyPage", + "label": "是否校验页面", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前手机页面是否与元素拾取时所在页面一致", + "advanced": true, + "valueTypes": [] + }, + { + "key": "isVerifyElementImage", + "label": "是否校验元素图像", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前定位到的元素区域内是否存在拾取时保存的元素图像", + "advanced": true, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_GetChildren", + "name": "获取手机子元素", + "kind": "vendor", + "group": "mobile", + "categories": [ + "element_operation" + ], + "categorySignature": "element_operation", + "description": "获取指定的手机元素对象,并以数组的形式输出。", + "messageTemplate": "在移动设备 $1 中,获取目标元素 $2 下的所有子元素, 然后把结果保存到 $0", + "baseType": "Mobile_GetChildren", + "functionName": "Mobile.GetChildren", + "functionCalls": [ + { + "function": "Mobile.GetChildren", + "args": [ + "mobileDevice", + "uiSelector", + "isVerifyPage", + "isVerifyElementImage" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "uiSelector", + "label": "目标", + "widget": "element", + "type": "object", + "displayType": "phoneSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "isVerifyPage", + "label": "是否校验页面", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前手机页面是否与元素拾取时所在页面一致", + "advanced": true, + "valueTypes": [] + }, + { + "key": "isVerifyElementImage", + "label": "是否校验元素图像", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "校验当前定位到的元素区域内是否存在拾取时保存的元素图像", + "advanced": true, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "手机子元素列表", + "valueTypes": [ + "rpa_list" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "手机子元素列表", + "valueTypes": [ + "rpa_list" + ] + } + ] + }, + "slots": [] + }, + { + "id": "Mobile_SetClipboardText", + "name": "设置手机剪切板文本", + "kind": "vendor", + "group": "mobile", + "categories": [ + "mobile" + ], + "categorySignature": "mobile", + "description": "设置手机剪切板中的文本内容。", + "messageTemplate": "将移动设备剪切板的文本内容设置为 $1", + "baseType": "Mobile_SetClipboardText", + "functionName": "Mobile.SetClipboardText", + "functionCalls": [ + { + "function": "Mobile.SetClipboardText", + "args": [ + "mobileDevice", + "text" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileDevice", + "label": "手机连接对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "手机操作对象", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_mobile" + ] + }, + { + "key": "text", + "label": "剪切板内容", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "Mobile_ConnectPhoneV1", + "name": "连接手机", + "kind": "vendor", + "group": "mobile", + "categories": [ + "connect_mobile" + ], + "categorySignature": "connect_mobile", + "description": "连接移动设备管理中的指定的移动设备。", + "messageTemplate": "在移动设备管理列表中选择自定义移动设备$1,将该移动设备保存至手机对象并建立连接,, 然后把结果保存到 $0", + "baseType": "Mobile_ConnectPhone", + "functionName": "Mobile.ConnectPhoneV1", + "functionCalls": [ + { + "function": "Mobile.ConnectPhoneV1", + "args": [ + "mobileInfo", + "time_out" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "手机" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "mobileInfo", + "label": "手机选择", + "widget": "select", + "type": "string", + "displayType": "newMobileDeviceDropDownSelect", + "required": false, + "defaultValue": "{}", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "time_out", + "label": "超时时间(秒)", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "60", + "placeholder": "请输入超时时间(秒)", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "连接手机", + "valueTypes": [ + "rpa_mobile" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "连接手机", + "valueTypes": [ + "rpa_mobile" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_RotateVerificationCodeV1", + "name": "旋转图片验证码", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "拖动滑块按钮使图片的展示角度为正,并自动完成验证。", + "messageTemplate": "识别要旋转的图片 $0 以及滑动条区域 $1 ,并拖动滑块按钮 $2 ,自动完成验证", + "baseType": "OCR_RotateVerificationCode", + "functionName": "OCR.RotateVerificationCodeV1", + "functionCalls": [ + { + "function": "OCR.RotateVerificationCodeV1", + "args": [ + "verifyPicUiSelector", + "sliderBarSelector", + "sliderButtonSelector", + "browser_type" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "验证码", + "旋转", + "滑块验证码(旋转式)" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "verifyPicUiSelector", + "label": "旋转图片目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "选择窗口中要旋转的图片。", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "sliderBarSelector", + "label": "滑动条区域", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "选择窗口中的滑动条可滑动的区域元素。", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "sliderButtonSelector", + "label": "滑块按钮", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "选择窗口可拖动的滑块按钮。", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "browser_type", + "label": "浏览器类型", + "widget": "hidden", + "type": "string", + "displayType": "hidden", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "指当前执行操作所在的浏览器类型,如Chrome、Edge、Sogou浏览器等。可选择“打开网页”或“获取网页Tab对象”组件输出变量的子变量。", + "advanced": false, + "valueTypes": [ + "rpa_hweb", + "rpa_hWeb_type" + ] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "OCR_PuzzleVerificationCode_v1", + "name": "推理拼图验证码", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "拖动并交换两个拼图块的位置使图片复原,完成验证码解锁。", + "messageTemplate": "识别完整图片 $0,并自动完成验证", + "baseType": "OCR_PuzzleVerificationCode", + "functionName": "OCR.PuzzleVerificationCode_v1", + "functionCalls": [ + { + "function": "OCR.PuzzleVerificationCode_v1", + "args": [ + "verifyPicUiSelector", + "browser_type", + "rowNum", + "columnNum" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "验证码", + "推理拼图", + "推理拼图验证码" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "verifyPicUiSelector", + "label": "完整图片目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请选择待拼图的完整图片元素(非小图)", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "browser_type", + "label": "浏览器类型", + "widget": "hidden", + "type": "string", + "displayType": "hidden", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "指当前执行操作所在的浏览器类型,如Chrome、Edge、Sogou浏览器等。可选择“打开网页”或“获取网页Tab对象”组件输出变量的子变量。", + "advanced": false, + "valueTypes": [ + "rpa_hweb", + "rpa_hWeb_type" + ] + }, + { + "key": "rowNum", + "label": "拼图行数", + "widget": "number", + "type": "number", + "displayType": "inputNumber", + "required": false, + "defaultValue": "2", + "placeholder": "", + "description": "请输入拼图的行数", + "advanced": false, + "valueTypes": [] + }, + { + "key": "columnNum", + "label": "拼图列数", + "widget": "number", + "type": "number", + "displayType": "inputNumber", + "required": false, + "defaultValue": "4", + "placeholder": "", + "description": "请输入拼图的列数", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "OCR_ClickVerificationCodeV2", + "name": "点选验证码", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "识别依次点选文字或图标类验证码,然后自动完成验证。", + "messageTemplate": "识别文字背景图 $0 以及“依次点击”文字说明 $1,自动完成验证", + "baseType": "OCR_ClickVerificationCode", + "functionName": "OCR.ClickVerificationCodeV2", + "functionCalls": [ + { + "function": "OCR.ClickVerificationCodeV2", + "args": [ + "verifyPicUiSelector", + "verifySeqUiSelector", + "designated_info", + "designated_obj", + "code_num", + "category" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "验证码", + "点选", + "点选验证码" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "verifyPicUiSelector", + "label": "文字背景图", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "选择包含要点选文字的背景图片元素", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "verifySeqUiSelector", + "label": "文字说明", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "选择包含点选次序的文字说明元素", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "designated_info", + "label": "指定网页/窗口对象", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "designated_obj", + "label": "网页/窗口对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请选择或输入网页对象", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_hWeb", + "rpa_window_new" + ] + }, + { + "key": "code_num", + "label": "点选数字", + "widget": "radio", + "type": "string", + "displayType": "radioGroup", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "选择要点选的字数区间", + "advanced": false, + "valueTypes": [] + }, + { + "key": "category", + "label": "识别引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "OCR_SourceCommonEnglishNumbersCodeV2", + "name": "普通验证码", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "识别目标验证码图片信息,并输出到指定变量。", + "messageTemplate": "识别 $1 $3$4 验证码信息, 然后把结果保存到 $0", + "baseType": "OCR_SourceCommonEnglishNumbersCode", + "functionName": "OCR.SourceCommonEnglishNumbersCodeV2", + "functionCalls": [ + { + "function": "OCR.SourceCommonEnglishNumbersCodeV2", + "args": [ + "imageType", + "pictureSource", + "image_path", + "uiSelector", + "designated_info", + "designated_obj", + "category" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "OCR" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "imageType", + "label": "识别类型", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "数英混合", + "placeholder": "", + "description": "根据验证码图片内容,选择对应的验证码识别类型", + "advanced": false, + "valueTypes": [] + }, + { + "key": "pictureSource", + "label": "图像源", + "widget": "radio", + "type": "string", + "displayType": "radioGroup", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "image_path", + "label": "图片路径", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "uiSelector", + "label": "图片目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "designated_info", + "label": "指定网页/窗口对象", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "designated_obj", + "label": "网页/窗口对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请选择或输入网页对象", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_hWeb", + "rpa_window_new" + ] + }, + { + "key": "category", + "label": "识别引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "3", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "识别结果", + "key": "var_name", + "suggestedName": "验证码", + "valueTypes": [ + "rpa_str" + ], + "fields": [ + { + "key": "var_name", + "label": "识别结果", + "defaultValue": "验证码", + "valueTypes": [ + "rpa_str" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_SimpleSliderVerificationCode", + "name": "滑块验证码(滑动条式)", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "拖动滑动按钮,完成验证码解锁。", + "messageTemplate": "识取验证码中的滑块及滑动区域,拖动滑块完成验证码解锁", + "baseType": "OCR_SimpleSliderVerificationCode", + "functionName": "OCR.SimpleSliderVerificationCode", + "functionCalls": [ + { + "function": "OCR.SimpleSliderVerificationCode", + "args": [ + "buttonUiSelector", + "sliderUiSelector", + "showDeviation", + "deviation" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "验证码", + "滑动", + "滑动条样式" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "buttonUiSelector", + "label": "滑动按钮目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": false, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "验证码中的可拖动的滑块", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "sliderUiSelector", + "label": "滑动条目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": false, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "验证码中的滑动条区域", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "showDeviation", + "label": "校正偏移量", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "deviation", + "label": "偏移量校正值", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "请视滑动条拖动的实际偏移情况,输入校准值,偏左则输入正值,偏右输入负值", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "OCR_SourceMergeCardOCR", + "name": "识别卡证文字", + "kind": "vendor", + "group": "vision", + "categories": [ + "OCR" + ], + "categorySignature": "OCR", + "description": "结构化识别身份证、银行卡、营业执照、护照、户口本等常用卡片及证照的文字内容。", + "messageTemplate": "识别 $2 中常用卡片及证照的文字内容, 然后把结果保存到 $0", + "baseType": "OCR_SourceMergeCardOCR", + "functionName": "OCR.SourceMergeCardOCR", + "functionCalls": [ + { + "function": "OCR.SourceMergeCardOCR", + "args": [ + "imageType", + "pictureSource", + "image_path", + "image_url", + "category", + "AppKey", + "SecretKey", + "front" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "OCR", + "发票" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "imageType", + "label": "图片类型", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "pictureSource", + "label": "图像源", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "image_path", + "label": "图片地址", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": true, + "defaultValue": "", + "placeholder": "请输入或选择本地路径", + "description": "图片的存储路径(请确认路径存在)", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "image_url", + "label": "图片URL", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请输入URL链接", + "description": "图片的访问链接(请确认链接能正常访问)", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "category", + "label": "AI引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "AppKey", + "label": "用户API Key", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请输入您的百度智能云的访问密钥ID(Access Key Id)", + "advanced": false, + "valueTypes": [] + }, + { + "key": "SecretKey", + "label": "用户APP secret Key", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请输入您的百度智能云秘密访问密钥(Secret Access Key)", + "advanced": false, + "valueTypes": [] + }, + { + "key": "front", + "label": "身份证朝向", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "True", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "识别的文字", + "valueTypes": [ + "rpa_dict_identity_card_shizai", + "rpa_dict_identity_card_juhe", + "rpa_dict_identity_card_reverse_juhe", + "rpa_dict", + "rpa_dict", + "rpa_dict_bank_card_juhe", + "rpa_dict", + "rpa_dict_business_license_shizai", + "rpa_dict_business_license_juhe", + "rpa_dict", + "rpa_dict", + "rpa_dict_business_card_juhe", + "rpa_dict_passport_juhe", + "rpa_dict", + "rpa_dict", + "rpa_dict", + "rpa_dict_account_page_juhe", + "rpa_dict", + "rpa_dict", + "rpa_dict_house_cert_juhe", + "rpa_dict_real_estate_cert_juhe", + "rpa_dict_official_seal_juhe", + "rpa_list", + "rpa_none" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "识别的文字", + "valueTypes": [ + "rpa_dict_identity_card_shizai", + "rpa_dict_identity_card_juhe", + "rpa_dict_identity_card_reverse_juhe", + "rpa_dict", + "rpa_dict", + "rpa_dict_bank_card_juhe", + "rpa_dict", + "rpa_dict_business_license_shizai", + "rpa_dict_business_license_juhe", + "rpa_dict", + "rpa_dict", + "rpa_dict_business_card_juhe", + "rpa_dict_passport_juhe", + "rpa_dict", + "rpa_dict", + "rpa_dict", + "rpa_dict_account_page_juhe", + "rpa_dict", + "rpa_dict", + "rpa_dict_house_cert_juhe", + "rpa_dict_real_estate_cert_juhe", + "rpa_dict_official_seal_juhe", + "rpa_list", + "rpa_none" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_SliderVerificationCodeV5", + "name": "滑动拼图验证码", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "识别验证码的拼图位置,并拖动滑块按钮完成验证,或返回拼图终点位置。", + "messageTemplate": "识别背景图 $3 {$$1 == 2 && $$5 == 1 && '以及拼图块 $6 的位置'}{$$9 == 1 && '并模拟拖动滑块按钮 $4 ,自动完成验证'}{$$9 == 2 && '并识别滑块按钮 $4 的终点位置,然后把结果保存到 $0'}", + "baseType": "OCR_SliderVerificationCodeV2", + "functionName": "OCR.SliderVerificationCodeV5", + "functionCalls": [ + { + "function": "OCR.SliderVerificationCodeV5", + "args": [ + "category", + "service", + "backgroundUiSelector", + "buttonUiSelector", + "need_slider", + "sliderUiSelector", + "designated_info", + "designated_obj", + "ret", + "showDeviation", + "deviation", + "drag" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "验证码", + "滑动" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "category", + "label": "识别引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "2", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "service", + "label": "选择服务", + "widget": "radio", + "type": "string", + "displayType": "radioGroup", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "backgroundUiSelector", + "label": "背景图", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请选择验证码中的背景图元素", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "buttonUiSelector", + "label": "滑块按钮", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请选择验证码下方的滑动按钮元素", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "need_slider", + "label": "识别拼图块", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "勾选后,需要选择拼图块元素,并在运行时进行识别,可根据实际情况配置", + "advanced": false, + "valueTypes": [] + }, + { + "key": "sliderUiSelector", + "label": "拼图块", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请选择验证码的拼图块", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "designated_info", + "label": "指定网页/窗口对象", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "designated_obj", + "label": "网页/窗口对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请选择或输入网页对象", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_hWeb", + "rpa_window_new" + ] + }, + { + "key": "ret", + "label": "验证方式", + "widget": "radio", + "type": "string", + "displayType": "radioGroup", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "showDeviation", + "label": "校正偏移量", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "用于校正鼠标拖动与滑块移动不同步的误差(单位:像素)", + "advanced": false, + "valueTypes": [] + }, + { + "key": "deviation", + "label": "deviation", + "widget": "number", + "type": "number", + "displayType": "sliderBar", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "请视验证码滑块拖动的实际偏移情况,输入校准值,偏左则输入正值,偏右输入负值", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "drag", + "label": "IE浏览器适配", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "如果IE浏览器无法正常拖动滑块按钮时,可勾选此选项", + "advanced": true, + "valueTypes": [ + "rpa_int" + ] + } + ], + "output": { + "label": "返回数据", + "key": "var_name", + "suggestedName": "拼图终点坐标", + "valueTypes": [ + "rpa_dict_pintu_coordinate" + ], + "fields": [ + { + "key": "var_name", + "label": "返回数据", + "defaultValue": "拼图终点坐标", + "valueTypes": [ + "rpa_dict_pintu_coordinate" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_SliderVerificationCodeV4", + "name": "滑动拼图验证码", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "识别验证码的拼图位置,并拖动滑块按钮完成验证,或返回拼图终点位置。", + "messageTemplate": "识别背景图 $3 {$$1 == 2 && '以及拼图块 $4 的位置'},{$$8 == 1 && '并模拟拖动滑块按钮 $5 ,自动完成验证'}{$$8 == 2 && '并识别滑块按钮 $5 的终点位置,然后把结果保存到 $0'}", + "baseType": "OCR_SliderVerificationCodeV2", + "functionName": "OCR.SliderVerificationCodeV4", + "functionCalls": [ + { + "function": "OCR.SliderVerificationCodeV4", + "args": [ + "category", + "service", + "backgroundUiSelector", + "sliderUiSelector", + "buttonUiSelector", + "designated_info", + "designated_obj", + "ret", + "showDeviation", + "deviation", + "drag" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "验证码", + "滑动" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "category", + "label": "识别引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "2", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "service", + "label": "选择服务", + "widget": "radio", + "type": "string", + "displayType": "radioGroup", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "backgroundUiSelector", + "label": "背景图", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请选择验证码中的背景图元素", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "sliderUiSelector", + "label": "拼图块", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请选择验证码的拼图块", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "buttonUiSelector", + "label": "滑块按钮", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请选择验证码下方的滑动按钮元素", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "designated_info", + "label": "指定网页/窗口对象", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "designated_obj", + "label": "网页/窗口对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请选择或输入网页对象", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_hWeb", + "rpa_window_new" + ] + }, + { + "key": "ret", + "label": "验证方式", + "widget": "radio", + "type": "string", + "displayType": "radioGroup", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "showDeviation", + "label": "校正偏移量", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "用于校正鼠标拖动与滑块移动不同步的误差(单位:像素)", + "advanced": false, + "valueTypes": [] + }, + { + "key": "deviation", + "label": "deviation", + "widget": "number", + "type": "number", + "displayType": "sliderBar", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "请视验证码滑块拖动的实际偏移情况,输入校准值,偏左则输入正值,偏右输入负值", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "drag", + "label": "IE浏览器适配", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "如果IE浏览器无法正常拖动滑块按钮时,可勾选此选项", + "advanced": true, + "valueTypes": [ + "rpa_int" + ] + } + ], + "output": { + "label": "返回数据", + "key": "var_name", + "suggestedName": "拼图终点坐标", + "valueTypes": [ + "rpa_dict_pintu_coordinate" + ], + "fields": [ + { + "key": "var_name", + "label": "返回数据", + "defaultValue": "拼图终点坐标", + "valueTypes": [ + "rpa_dict_pintu_coordinate" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_SourceMergeOtherOCR", + "name": "识别其他场景文字", + "kind": "vendor", + "group": "vision", + "categories": [ + "OCR" + ], + "categorySignature": "OCR", + "description": "对目标文本内容进行通用OCR识别。", + "messageTemplate": "识别 $2 中文本内容, 然后把结果保存到 $0", + "baseType": "OCR_SourceMergeOtherOCR", + "functionName": "OCR.SourceMergeOtherOCR", + "functionCalls": [ + { + "function": "OCR.SourceMergeOtherOCR", + "args": [ + "imageType", + "pictureSource", + "image_path", + "image_url", + "category", + "AppKey", + "SecretKey" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "OCR", + "发票" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "imageType", + "label": "图片类型", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "pictureSource", + "label": "图像源", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "image_path", + "label": "图片地址", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": true, + "defaultValue": "", + "placeholder": "请输入或选择本地路径", + "description": "图片的存储路径(请确认路径存在)", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "image_url", + "label": "图片URL", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请输入URL链接", + "description": "图片的访问链接(请确认链接能正常访问)", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "category", + "label": "AI引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "AppKey", + "label": "用户API Key", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请输入您的百度智能云的访问密钥ID(Access Key Id)", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "SecretKey", + "label": "用户APP secret Key", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请输入您的百度智能云秘密访问密钥(Secret Access Key)", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "识别的文字", + "valueTypes": [ + "rpa_str" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "识别的文字", + "valueTypes": [ + "rpa_str" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_SliderCode", + "name": "滑块验证码", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "识别目标验证码图片信息,并输出到指定变量。", + "messageTemplate": "背景图片 $2 识别滑块验证码的内容, 然后把结果保存到 $0", + "baseType": "OCR_SliderCode", + "functionName": "OCR.SliderCode", + "functionCalls": [ + { + "function": "OCR.SliderCode", + "args": [ + "imageFrontPath", + "imageBackPath", + "needFrontPath" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "imageFrontPath", + "label": "滑块图片地址", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "imageBackPath", + "label": "背景图片地址", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "needFrontPath", + "label": "是否需要滑块图片", + "widget": "radio", + "type": "string", + "displayType": "radioGroup", + "required": false, + "defaultValue": "False", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "滑动距离", + "valueTypes": [ + "rpa_dict", + "rpa_int" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "滑动距离", + "valueTypes": [ + "rpa_dict", + "rpa_int" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_SourceMergeGeneralOCR", + "name": "通用文字识别", + "kind": "vendor", + "group": "vision", + "categories": [ + "OCR" + ], + "categorySignature": "OCR", + "description": "对目标文本内容进行通用OCR识别。", + "messageTemplate": "识别 $1 中 $3 文本的内容, 然后把结果保存到 $0", + "baseType": "OCR_SourceMergeGeneralOCR", + "functionName": "OCR.SourceMergeGeneralOCR", + "functionCalls": [ + { + "function": "OCR.SourceMergeGeneralOCR", + "args": [ + "pictureSource", + "image_path", + "uiSelector", + "image_url", + "category", + "AppKey", + "SecretKey" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "pictureSource", + "label": "图像源", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "image_path", + "label": "图片地址", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": false, + "defaultValue": "", + "placeholder": "请输入或选择本地路径", + "description": "图片的存储路径(请确认路径存在)", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "uiSelector", + "label": "目标", + "widget": "element", + "type": "object", + "displayType": "uiselectorOcr", + "required": false, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "image_url", + "label": "图片URL", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "请输入URL链接", + "description": "图片的访问链接(请确认链接能正常访问)", + "advanced": false, + "valueTypes": [] + }, + { + "key": "category", + "label": "AI引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "2", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "AppKey", + "label": "用户API Key", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "请输入您的百度智能云的访问密钥ID(Access Key Id)", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "SecretKey", + "label": "用户APP secret Key", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "请输入您的百度智能云秘密访问密钥(Secret Access Key)", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "识别的文字", + "valueTypes": [ + "rpa_dict" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "识别的文字", + "valueTypes": [ + "rpa_dict" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_RotateVerificationCodeV2", + "name": "旋转图片验证码", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "拖动滑块按钮使图片的展示角度为正,并自动完成验证。", + "messageTemplate": "识别要旋转的图片 $0 以及滑动条区域 $1 ,并拖动滑块按钮 $2 ,自动完成验证", + "baseType": "OCR_RotateVerificationCode", + "functionName": "OCR.RotateVerificationCodeV2", + "functionCalls": [ + { + "function": "OCR.RotateVerificationCodeV2", + "args": [ + "verifyPicUiSelector", + "sliderBarSelector", + "sliderButtonSelector", + "designated_info", + "designated_obj" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "验证码", + "旋转", + "滑块验证码(旋转式)", + "图片", + "图像", + "图形", + "图象", + "相片" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "verifyPicUiSelector", + "label": "旋转图片目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "选择窗口中要旋转的图片。", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "sliderBarSelector", + "label": "滑动条区域", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "选择窗口中的滑动条可滑动的区域元素。", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "sliderButtonSelector", + "label": "滑块按钮", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "选择窗口可拖动的滑块按钮。", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "designated_info", + "label": "指定网页/窗口对象", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "designated_obj", + "label": "网页/窗口对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请选择或输入网页对象", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_hWeb", + "rpa_window_new" + ] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "OCR_RotateVerificationCode", + "name": "滑块验证码(旋转式)", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "拖动滑动按钮旋转图片,完成旋转类型验证码解锁。", + "messageTemplate": "识取验证码中的待旋转图,计算旋转角度后拖动滑动按钮,完成验证码解锁。", + "baseType": "OCR_RotateVerificationCode", + "functionName": "OCR.RotateVerificationCode", + "functionCalls": [ + { + "function": "OCR.RotateVerificationCode", + "args": [ + "verifyPicUiSelector", + "sliderButtonSelector", + "sliderBarSelector" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "验证码", + "旋转", + "滑块验证码(旋转式)" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "verifyPicUiSelector", + "label": "待旋转图片目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": false, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "验证码中可旋转的背景图", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "sliderButtonSelector", + "label": "滑动按钮目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": false, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "验证码中可拖动的滑块", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "sliderBarSelector", + "label": "滑动条目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": false, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "验证码中的滑动条区域", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "OCR_ClickVerificationCodeV1", + "name": "点选验证码", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "识别依次点选文字或图标类验证码,然后自动完成验证。", + "messageTemplate": "识别文字背景图 $0 以及“依次点击”文字说明 $1,自动完成验证", + "baseType": "OCR_ClickVerificationCode", + "functionName": "OCR.ClickVerificationCodeV1", + "functionCalls": [ + { + "function": "OCR.ClickVerificationCodeV1", + "args": [ + "verifyPicUiSelector", + "verifySeqUiSelector", + "browser_type", + "code_num", + "category" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "验证码", + "点选", + "点选验证码" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "verifyPicUiSelector", + "label": "文字背景图", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "选择包含要点选文字的背景图片元素", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "verifySeqUiSelector", + "label": "文字说明", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "选择包含点选次序的文字说明元素", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "browser_type", + "label": "浏览器类型", + "widget": "hidden", + "type": "string", + "displayType": "hidden", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "指当前执行操作所在的浏览器类型,如Chrome、Edge、Sogou浏览器等。可选择“打开网页”或“获取网页Tab对象”组件输出变量的子变量。", + "advanced": false, + "valueTypes": [ + "rpa_hweb", + "rpa_hWeb_type" + ] + }, + { + "key": "code_num", + "label": "点选数字", + "widget": "radio", + "type": "string", + "displayType": "radioGroup", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "选择要点选的字数区间", + "advanced": false, + "valueTypes": [] + }, + { + "key": "category", + "label": "识别引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "OCR_PuzzleVerificationCode", + "name": "推理拼图验证码", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "拖动并交换两个拼图块的位置使图片复原,完成验证码解锁。", + "messageTemplate": "识别完整图片 $0,并自动完成验证", + "baseType": "OCR_PuzzleVerificationCode", + "functionName": "OCR.PuzzleVerificationCode", + "functionCalls": [ + { + "function": "OCR.PuzzleVerificationCode", + "args": [ + "verifyPicUiSelector", + "rowNum", + "columnNum" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "验证码", + "推理拼图", + "推理拼图验证码" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "verifyPicUiSelector", + "label": "完整图片目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": false, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "验证码中整个拼图区域", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "rowNum", + "label": "拼图行数", + "widget": "number", + "type": "number", + "displayType": "inputNumber", + "required": false, + "defaultValue": "2", + "placeholder": "", + "description": "请输入拼图的行数", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "columnNum", + "label": "拼图列数", + "widget": "number", + "type": "number", + "displayType": "inputNumber", + "required": false, + "defaultValue": "4", + "placeholder": "", + "description": "请输入拼图的列数", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "OCR_SimpleSliderVerificationCodeV2", + "name": "滑动条验证码", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "识别滑动条验证码的滑动区域位置,并拖动滑块按钮完成验证,或返回滑块终点位置。", + "messageTemplate": "识别滑动条区域 $1{$$5 == 1 && '并模拟拖动滑块按钮 $2 ,自动完成验证'}{$$5 == 2 && '以及滑块按钮 $2 的相对位置,然后把结果保存到 $0'}", + "baseType": "OCR_SimpleSliderVerificationCode", + "functionName": "OCR.SimpleSliderVerificationCodeV2", + "functionCalls": [ + { + "function": "OCR.SimpleSliderVerificationCodeV2", + "args": [ + "sliderUiSelector", + "buttonUiSelector", + "designated_info", + "designated_obj", + "ret", + "showDeviation", + "deviation", + "uniform_speed", + "bobs" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "验证码", + "滑动", + "滑动条样式" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "sliderUiSelector", + "label": "滑动条区域", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请选择滑动条元素", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "buttonUiSelector", + "label": "滑块按钮", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请选择滑动按钮元素", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "designated_info", + "label": "指定网页/窗口对象", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "designated_obj", + "label": "网页/窗口对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请选择或输入网页对象", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_hWeb", + "rpa_window_new" + ] + }, + { + "key": "ret", + "label": "验证方式", + "widget": "radio", + "type": "string", + "displayType": "radioGroup", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "showDeviation", + "label": "校正偏移量", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "用于校正鼠标拖动与滑块移动不同步的误差(单位:像素)", + "advanced": false, + "valueTypes": [] + }, + { + "key": "deviation", + "label": "deviation", + "widget": "number", + "type": "number", + "displayType": "sliderBar", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "请视滑动条拖动的实际偏移情况,输入校准值,偏左则输入正值,偏右输入负值", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "uniform_speed", + "label": "IE浏览器适配", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "如果IE浏览器无法正常拖动滑块按钮时,可勾选此选项", + "advanced": true, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "bobs", + "label": "轨迹上下浮动", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": true, + "valueTypes": [] + } + ], + "output": { + "label": "返回数据", + "key": "var_name", + "suggestedName": "滑块终点坐标", + "valueTypes": [ + "rpa_dict_huakuai_coordinate" + ], + "fields": [ + { + "key": "var_name", + "label": "返回数据", + "defaultValue": "滑块终点坐标", + "valueTypes": [ + "rpa_dict_huakuai_coordinate" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_SourceCommonEnglishNumbersCode", + "name": "普通验证码", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "识别目标验证码图片信息,并输出到指定变量。", + "messageTemplate": "识别 $1 中类型为 $4 的验证码信息, 然后把结果保存到 $0", + "baseType": "OCR_SourceCommonEnglishNumbersCode", + "functionName": "OCR.SourceCommonEnglishNumbersCode", + "functionCalls": [ + { + "function": "OCR.SourceCommonEnglishNumbersCode", + "args": [ + "pictureSource", + "image_path", + "uiSelector", + "imageType", + "category" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "pictureSource", + "label": "图像源", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "image_path", + "label": "验证码图片地址", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": false, + "defaultValue": "", + "placeholder": "请输入或选择本地路径", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "uiSelector", + "label": "验证码目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": false, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "imageType", + "label": "识别类型", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "验证码的样式类型", + "advanced": false, + "valueTypes": [] + }, + { + "key": "category", + "label": "识别引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "验证码", + "valueTypes": [ + "rpa_str", + "rpa_str", + "rpa_str", + "rpa_str", + "rpa_str", + "rpa_str", + "rpa_str", + "rpa_str" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "验证码", + "valueTypes": [ + "rpa_str", + "rpa_str", + "rpa_str", + "rpa_str", + "rpa_str", + "rpa_str", + "rpa_str", + "rpa_str" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_SourceMergeCarOCR", + "name": "识别汽车场景文字", + "kind": "vendor", + "group": "vision", + "categories": [ + "OCR" + ], + "categorySignature": "OCR", + "description": "对汽车场景下所涉及的各类卡证、票据进行结构化识别,包括行驶证、驾驶证、车牌、VIN码、车辆合格证等。", + "messageTemplate": "识别 $2 中对汽车购买及使用过程中所涉及的卡证进行文字识别, 然后把结果保存到 $0", + "baseType": "OCR_SourceMergeCarOCR", + "functionName": "OCR.SourceMergeCarOCR", + "functionCalls": [ + { + "function": "OCR.SourceMergeCarOCR", + "args": [ + "imageType", + "pictureSource", + "image_path", + "image_url", + "category", + "AppKey", + "SecretKey", + "multiCrop", + "detectDirection", + "front" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "OCR" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "imageType", + "label": "图片类型", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "pictureSource", + "label": "图像源", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "image_path", + "label": "图片地址", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": true, + "defaultValue": "", + "placeholder": "请输入或选择本地路径", + "description": "图片的存储路径(请确认路径存在)", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "image_url", + "label": "图片URL", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请输入URL链接", + "description": "图片的访问链接(请确认链接能正常访问)", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "category", + "label": "AI引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "AppKey", + "label": "用户API Key", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请输入您的百度智能云的访问密钥ID(Access Key Id)", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "SecretKey", + "label": "用户APP secret Key", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请输入您的百度智能云秘密访问密钥(Secret Access Key)", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "multiCrop", + "label": "是否只返回高置信度且大于7位的车牌号", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "False", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "detectDirection", + "label": "是否检测图片方向", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "True", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "front", + "label": "是否是正面", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "True", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "识别的文字", + "valueTypes": [ + "rpa_dict_driving_license_juhe", + "rpa_dict", + "rpa_dict", + "rpa_dict_driver_license_juhe", + "rpa_dict_driver_license_shizai", + "rpa_dict_plate_license_juhe", + "rpa_dict", + "rpa_dict_vin_juhe", + "rpa_dict", + "rpa_dict", + "rpa_dict_vehicle_lnvoice_juhe", + "rpa_dict", + "rpa_none" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "识别的文字", + "valueTypes": [ + "rpa_dict_driving_license_juhe", + "rpa_dict", + "rpa_dict", + "rpa_dict_driver_license_juhe", + "rpa_dict_driver_license_shizai", + "rpa_dict_plate_license_juhe", + "rpa_dict", + "rpa_dict_vin_juhe", + "rpa_dict", + "rpa_dict", + "rpa_dict_vehicle_lnvoice_juhe", + "rpa_dict", + "rpa_none" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_SliderVerificationCodeV2", + "name": "滑块验证码(拼图样式)", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "对滑块验证码进行识别,然后滑动滑块至缺口处,完成验证码解锁。", + "messageTemplate": "拖动滑块按钮 $3, {$$0 == 2 && \"使拼图块 $2 与背景图 $1 重合\"}{$$0 == 1 && \"使拼图块与背景图 $1 重合\"}", + "baseType": "OCR_SliderVerificationCode", + "functionName": "OCR.SliderVerificationCodeV2", + "functionCalls": [ + { + "function": "OCR.SliderVerificationCodeV2", + "args": [ + "category", + "backgroundUiSelector", + "sliderUiSelector", + "buttonUiSelector", + "showDeviation", + "deviation", + "drag" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "验证码", + "滑动" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "category", + "label": "识别引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "根据不同的场景,不同AI引擎的识别率存在差异,可切换使用。", + "advanced": false, + "valueTypes": [] + }, + { + "key": "backgroundUiSelector", + "label": "背景图目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "验证码中的背景图", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "sliderUiSelector", + "label": "拼图块目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "验证码中跟随滑块移动的拼图块", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "buttonUiSelector", + "label": "滑动按钮目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "验证码中可拖动的滑块", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "showDeviation", + "label": "校正偏移量", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "用于校正鼠标拖动与滑块移动不同步的误差", + "advanced": false, + "valueTypes": [] + }, + { + "key": "deviation", + "label": "偏移量校正值", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "0", + "placeholder": "请输入校正数值(单位:像素)", + "description": "滑块相对鼠标位置,偏左—输入正值;偏右—输入负值(单位:像素)。", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "drag", + "label": "拖动增强", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "仅用于IE浏览器下部分不能拖动的场景,其他场景请不要勾选", + "advanced": true, + "valueTypes": [ + "rpa_int" + ] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "OCR_SliderVerificationCodeV1", + "name": "滑块验证码(拼图样式)", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "对滑块验证码进行识别,然后滑动滑块至缺口处,完成验证码解锁。", + "messageTemplate": "识别滑块验证码信息,然后滑动滑块至缺口处,完成验证码解锁。", + "baseType": "OCR_SliderVerificationCode", + "functionName": "OCR.SliderVerificationCodeV1", + "functionCalls": [ + { + "function": "OCR.SliderVerificationCodeV1", + "args": [ + "backgroundUiSelector", + "buttonUiSelector", + "category", + "showDeviation", + "deviation" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "验证码", + "滑动" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "backgroundUiSelector", + "label": "背景图目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": false, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "验证码中的背景图", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "buttonUiSelector", + "label": "滑动按钮目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": false, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "验证码中可拖动的滑块", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "category", + "label": "识别引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "根据不同的场景,不同AI引擎的识别率存在差异,可切换使用。", + "advanced": false, + "valueTypes": [] + }, + { + "key": "showDeviation", + "label": "校正偏移量", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "用于校正鼠标拖动与滑块移动不同步的误差(单位:像素)", + "advanced": false, + "valueTypes": [] + }, + { + "key": "deviation", + "label": "偏移量校正值", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "0", + "placeholder": "请输入校正数值(单位:像素)", + "description": "滑块相对鼠标位置:偏左—输入正值;偏右—输入负值;", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "OCR_SliderVerificationCode", + "name": "滑块验证码(拼图样式)", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "对滑块验证码进行识别,然后滑动滑块至缺口处,完成验证码解锁。", + "messageTemplate": "识别滑块验证码信息,然后滑动滑块至缺口处,完成验证码解锁。", + "baseType": "OCR_SliderVerificationCode", + "functionName": "OCR.SliderVerificationCode", + "functionCalls": [ + { + "function": "OCR.SliderVerificationCode", + "args": [ + "sliderUiSelector", + "backgroundUiSelector", + "buttonUiSelector", + "category" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "验证码", + "滑动" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "sliderUiSelector", + "label": "滑块目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "请选择验证码中的滑块元素", + "advanced": false, + "valueTypes": [] + }, + { + "key": "backgroundUiSelector", + "label": "背景图目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "请选择验证码中的背景图元素", + "advanced": false, + "valueTypes": [] + }, + { + "key": "buttonUiSelector", + "label": "滑动按钮目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "请选择验证码下方的滑动按钮元素", + "advanced": false, + "valueTypes": [] + }, + { + "key": "category", + "label": "识别引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "OCR_SourceMergeEducationOCR", + "name": "识别教育场景文字", + "kind": "vendor", + "group": "vision", + "categories": [ + "OCR" + ], + "categorySignature": "OCR", + "description": "对教育场景下所涉及的作业/试卷中公式、手写文字等内容进行结构化识别。", + "messageTemplate": "识别 $2 中对教育场景所涉及的手写文字, 公示等进行文字识别, 然后把结果保存到 $0", + "baseType": "OCR_SourceMergeEducationOCR", + "functionName": "OCR.SourceMergeEducationOCR", + "functionCalls": [ + { + "function": "OCR.SourceMergeEducationOCR", + "args": [ + "imageType", + "pictureSource", + "image_path", + "image_url", + "category", + "AppKey", + "SecretKey" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "OCR", + "发票" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "imageType", + "label": "图片类型", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "pictureSource", + "label": "图像源", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "image_path", + "label": "图片地址", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": true, + "defaultValue": "", + "placeholder": "请输入或选择本地路径", + "description": "图片的存储路径(请确认路径存在)", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "image_url", + "label": "图片URL", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请输入URL链接", + "description": "图片的访问链接(请确认链接能正常访问)", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "category", + "label": "AI引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "AppKey", + "label": "用户API Key", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请输入您的百度智能云的访问密钥ID(Access Key Id)", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "SecretKey", + "label": "用户APP secret Key", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请输入您的百度智能云秘密访问密钥(Secret Access Key)", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "识别的文字", + "valueTypes": [ + "rpa_list", + "rpa_str" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "识别的文字", + "valueTypes": [ + "rpa_list", + "rpa_str" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_SliderVerificationCodeV3", + "name": "滑动拼图验证码", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "识别验证码的拼图位置,并拖动滑块按钮完成验证,或返回拼图终点位置。", + "messageTemplate": "识别背景图 $2 {$$1 == 2 && '以及拼图块 $3 的位置'},{$$6 == 1 && '并模拟拖动滑块按钮 $4 ,自动完成验证'}{$$6 == 2 && '并识别滑块按钮 $4 的终点位置,然后把结果保存到 $0'}", + "baseType": "OCR_SliderVerificationCode", + "functionName": "OCR.SliderVerificationCodeV3", + "functionCalls": [ + { + "function": "OCR.SliderVerificationCodeV3", + "args": [ + "category", + "backgroundUiSelector", + "sliderUiSelector", + "buttonUiSelector", + "browser_type", + "ret", + "showDeviation", + "deviation", + "drag" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "验证码", + "滑动" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "category", + "label": "识别引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "2", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "backgroundUiSelector", + "label": "背景图", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请选择验证码中的背景图元素", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "sliderUiSelector", + "label": "拼图块", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请选择验证码的拼图块", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "buttonUiSelector", + "label": "滑块按钮", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请选择验证码下方的滑动按钮元素", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "browser_type", + "label": "浏览器类型", + "widget": "hidden", + "type": "string", + "displayType": "hidden", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "指当前执行操作所在的浏览器类型,如Chrome、Edge、Sogou浏览器等。可选择“打开网页”或“获取网页Tab对象”组件输出变量的子变量。", + "advanced": false, + "valueTypes": [ + "rpa_hweb", + "rpa_hWeb_type" + ] + }, + { + "key": "ret", + "label": "验证方式", + "widget": "radio", + "type": "string", + "displayType": "radioGroup", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "showDeviation", + "label": "校正偏移量", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "用于校正鼠标拖动与滑块移动不同步的误差(单位:像素)", + "advanced": false, + "valueTypes": [] + }, + { + "key": "deviation", + "label": "deviation", + "widget": "number", + "type": "number", + "displayType": "sliderBar", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "请视验证码滑块拖动的实际偏移情况,输入校准值,偏左则输入正值,偏右输入负值", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "drag", + "label": "IE浏览器适配", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "如果IE浏览器无法正常拖动滑块按钮时,可勾选此选项", + "advanced": true, + "valueTypes": [ + "rpa_int" + ] + } + ], + "output": { + "label": "返回数据", + "key": "var_name", + "suggestedName": "拼图终点坐标", + "valueTypes": [ + "rpa_dict_pintu_coordinate" + ], + "fields": [ + { + "key": "var_name", + "label": "返回数据", + "defaultValue": "拼图终点坐标", + "valueTypes": [ + "rpa_dict_pintu_coordinate" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_ClickVerificationCode", + "name": "点选验证码", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "对点选验证码进行识别,然后依次点击相应位置,完成验证码解锁。", + "messageTemplate": "识别验证码信息,然后依次点击相应位置,完成验证码解锁。", + "baseType": "OCR_ClickVerificationCode", + "functionName": "OCR.ClickVerificationCode", + "functionCalls": [ + { + "function": "OCR.ClickVerificationCode", + "args": [ + "code_num", + "verifyPicUiSelector", + "verifySeqUiSelector", + "category" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "验证码", + "点选", + "点选验证码" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "code_num", + "label": "验证码图内字数", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "验证码中需要点击识别的字数范围", + "advanced": false, + "valueTypes": [] + }, + { + "key": "verifyPicUiSelector", + "label": "验证码图片目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": false, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "验证码中的背景图", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "verifySeqUiSelector", + "label": "点选文字目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": false, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "验证码提示中要识别的文字", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "category", + "label": "识别引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "OCR_SourceCommonEnglishNumbersCodeV1", + "name": "普通验证码", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "识别目标验证码图片信息,并输出到指定变量。", + "messageTemplate": "识别 $1 $3$4 验证码信息, 然后把结果保存到 $0", + "baseType": "OCR_SourceCommonEnglishNumbersCode", + "functionName": "OCR.SourceCommonEnglishNumbersCodeV1", + "functionCalls": [ + { + "function": "OCR.SourceCommonEnglishNumbersCodeV1", + "args": [ + "imageType", + "pictureSource", + "image_path", + "uiSelector", + "browser_type", + "category" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "imageType", + "label": "识别类型", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "数英混合", + "placeholder": "", + "description": "根据验证码图片内容,选择对应的验证码识别类型", + "advanced": false, + "valueTypes": [] + }, + { + "key": "pictureSource", + "label": "图像源", + "widget": "radio", + "type": "string", + "displayType": "radioGroup", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "image_path", + "label": "图片路径", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "uiSelector", + "label": "图片目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "browser_type", + "label": "浏览器类型", + "widget": "hidden", + "type": "string", + "displayType": "hidden", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "指当前执行操作所在的浏览器类型,如Chrome、Edge、Sogou浏览器等。可选择“打开网页”或“获取网页Tab对象”组件输出变量的子变量。", + "advanced": false, + "valueTypes": [ + "rpa_hweb", + "rpa_hWeb_type" + ] + }, + { + "key": "category", + "label": "识别引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "3", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "识别结果", + "key": "var_name", + "suggestedName": "验证码", + "valueTypes": [ + "rpa_str" + ], + "fields": [ + { + "key": "var_name", + "label": "识别结果", + "defaultValue": "验证码", + "valueTypes": [ + "rpa_str" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_PuzzleVerificationCode_v2", + "name": "推理拼图验证码", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "拖动并交换两个拼图块的位置使图片复原,完成验证码解锁。", + "messageTemplate": "识别完整图片 $0,并自动完成验证", + "baseType": "OCR_PuzzleVerificationCode", + "functionName": "OCR.PuzzleVerificationCode_v2", + "functionCalls": [ + { + "function": "OCR.PuzzleVerificationCode_v2", + "args": [ + "verifyPicUiSelector", + "designated_info", + "designated_obj", + "rowNum", + "columnNum" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "验证码", + "推理拼图", + "推理拼图验证码" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "verifyPicUiSelector", + "label": "完整图片目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请选择待拼图的完整图片元素(非小图)", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "designated_info", + "label": "指定网页/窗口对象", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "designated_obj", + "label": "网页/窗口对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请选择或输入网页对象", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_hWeb", + "rpa_window_new" + ] + }, + { + "key": "rowNum", + "label": "拼图行数", + "widget": "number", + "type": "number", + "displayType": "inputNumber", + "required": false, + "defaultValue": "2", + "placeholder": "", + "description": "请输入拼图的行数", + "advanced": false, + "valueTypes": [] + }, + { + "key": "columnNum", + "label": "拼图列数", + "widget": "number", + "type": "number", + "displayType": "inputNumber", + "required": false, + "defaultValue": "4", + "placeholder": "", + "description": "请输入拼图的列数", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "OCR_SourceMergePaperOCR", + "name": "识别票据文字", + "kind": "vendor", + "group": "vision", + "categories": [ + "OCR" + ], + "categorySignature": "OCR", + "description": "对财税报销、税务核算等场景所涉及的各类票据进行结构化识别,包括增值税发票、定额发票、火车票、出租车票、飞机行程单、保单等常见票据。", + "messageTemplate": "识别 $2 中常用票据的文字内容, 然后把结果保存到 $0", + "baseType": "OCR_SourceMergePaperOCR", + "functionName": "OCR.SourceMergePaperOCR", + "functionCalls": [ + { + "function": "OCR.SourceMergePaperOCR", + "args": [ + "imageType", + "pictureSource", + "image_path", + "image_url", + "category", + "AppKey", + "SecretKey" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "OCR", + "发票" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "imageType", + "label": "图片类型", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "pictureSource", + "label": "图像源", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "image_path", + "label": "图片地址", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": true, + "defaultValue": "", + "placeholder": "请输入或选择本地路径", + "description": "图片的存储路径(请确认路径存在)", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "image_url", + "label": "图片URL", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请输入URL链接", + "description": "图片的访问链接(请确认链接能正常访问)", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "category", + "label": "AI引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "AppKey", + "label": "用户API Key", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请输入您的访问密钥ID(Access Key Id)", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "SecretKey", + "label": "用户APP secret Key", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请输入您的秘密访问密钥(Secret Access Key)", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "识别的文字", + "valueTypes": [ + "rpa_dict_vat_lnvoice_shizai", + "rpa_dict_vat_lnvoice_juhe", + "rpa_dict", + "rpa_dict", + "rpa_dict", + "rpa_dict_train_ticket_juhe", + "rpa_dict", + "rpa_dict_taxi_lnvoice_juhe", + "rpa_dict", + "rpa_dict", + "rpa_dict", + "rpa_dict", + "rpa_none" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "识别的文字", + "valueTypes": [ + "rpa_dict_vat_lnvoice_shizai", + "rpa_dict_vat_lnvoice_juhe", + "rpa_dict", + "rpa_dict", + "rpa_dict", + "rpa_dict_train_ticket_juhe", + "rpa_dict", + "rpa_dict_taxi_lnvoice_juhe", + "rpa_dict", + "rpa_dict", + "rpa_dict", + "rpa_dict", + "rpa_none" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_SimpleSliderVerificationCodeV1", + "name": "滑动条验证码", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "识别滑动条验证码的滑动区域位置,并拖动滑块按钮完成验证,或返回滑块终点位置。", + "messageTemplate": "识别滑动条区域 $1{$$4 == 1 && '并模拟拖动滑块按钮 $2 ,自动完成验证'}{$$4 == 2 && '以及滑块按钮 $2 的相对位置,然后把结果保存到 $0'}", + "baseType": "OCR_SimpleSliderVerificationCode", + "functionName": "OCR.SimpleSliderVerificationCodeV1", + "functionCalls": [ + { + "function": "OCR.SimpleSliderVerificationCodeV1", + "args": [ + "sliderUiSelector", + "buttonUiSelector", + "browser_type", + "ret", + "showDeviation", + "deviation", + "uniform_speed", + "bobs" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "验证码", + "滑动", + "滑动条样式" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "sliderUiSelector", + "label": "滑动条区域", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请选择滑动条元素", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "buttonUiSelector", + "label": "滑块按钮", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请选择滑动按钮元素", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "browser_type", + "label": "浏览器类型", + "widget": "hidden", + "type": "string", + "displayType": "hidden", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "指当前执行操作所在的浏览器类型,如Chrome、Edge、Sogou浏览器等。可选择“打开网页”或“获取网页Tab对象”组件输出变量的子变量。", + "advanced": false, + "valueTypes": [ + "rpa_hweb", + "rpa_hWeb_type" + ] + }, + { + "key": "ret", + "label": "验证方式", + "widget": "radio", + "type": "string", + "displayType": "radioGroup", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "showDeviation", + "label": "校正偏移量", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "用于校正鼠标拖动与滑块移动不同步的误差(单位:像素)", + "advanced": false, + "valueTypes": [] + }, + { + "key": "deviation", + "label": "deviation", + "widget": "number", + "type": "number", + "displayType": "sliderBar", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "请视滑动条拖动的实际偏移情况,输入校准值,偏左则输入正值,偏右输入负值", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "uniform_speed", + "label": "IE浏览器适配", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "如果IE浏览器无法正常拖动滑块按钮时,可勾选此选项", + "advanced": true, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "bobs", + "label": "轨迹上下浮动", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": true, + "valueTypes": [] + } + ], + "output": { + "label": "返回数据", + "key": "var_name", + "suggestedName": "滑块终点坐标", + "valueTypes": [ + "rpa_dict_huakuai_coordinate" + ], + "fields": [ + { + "key": "var_name", + "label": "返回数据", + "defaultValue": "滑块终点坐标", + "valueTypes": [ + "rpa_dict_huakuai_coordinate" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_SourceMergeGeneralOCR_V1", + "name": "识别通用文字", + "kind": "vendor", + "group": "vision", + "categories": [ + "OCR" + ], + "categorySignature": "OCR", + "description": "对目标文本内容进行通用OCR识别。", + "messageTemplate": "识别 $1 中 $3 文本的内容, 然后把结果保存到 $0", + "baseType": "OCR_SourceMergeGeneralOCR", + "functionName": "OCR.SourceMergeGeneralOCR_V1", + "functionCalls": [ + { + "function": "OCR.SourceMergeGeneralOCR_V1", + "args": [ + "pictureSource", + "image_path", + "uiSelector", + "image_url", + "category", + "AppKey", + "SecretKey" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "OCR", + "发票" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "pictureSource", + "label": "图像源", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "image_path", + "label": "图片地址", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": true, + "defaultValue": "", + "placeholder": "请输入或选择本地路径", + "description": "图片的存储路径(请确认路径存在)", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "uiSelector", + "label": "目标", + "widget": "element", + "type": "object", + "displayType": "uiselectorOcr", + "required": true, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "image_url", + "label": "图片URL", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请输入URL链接", + "description": "图片的访问链接(请确认链接能正常访问)", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "category", + "label": "AI引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "3", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "AppKey", + "label": "用户API Key", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请输入您的百度智能云的访问密钥ID(Access Key Id)", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "SecretKey", + "label": "用户APP secret Key", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "请输入您的百度智能云秘密访问密钥(Secret Access Key)", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "识别的文字", + "valueTypes": [ + "rpa_dict", + "rpa_dict", + "rpa_dict_general_ocr" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "识别的文字", + "valueTypes": [ + "rpa_dict", + "rpa_dict", + "rpa_dict_general_ocr" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_SliderVerificationCodePosition", + "name": "获取拼图滑块位置", + "kind": "vendor", + "group": "vision", + "categories": [ + "VerificationCode" + ], + "categorySignature": "VerificationCode", + "description": "识别滑块验证码信息,然后返回滑动按钮起点终点坐标。", + "messageTemplate": "识别滑块验证码信息,然后返回滑动按钮起点终点坐标, 然后把结果保存到 $0", + "baseType": "OCR_SliderVerificationCodePosition", + "functionName": "OCR.SliderVerificationCodePosition", + "functionCalls": [ + { + "function": "OCR.SliderVerificationCodePosition", + "args": [ + "backgroundUiSelector", + "buttonUiSelector", + "category" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "验证码", + "滑动" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "backgroundUiSelector", + "label": "背景图目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": false, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "验证码中的背景图", + "advanced": false, + "valueTypes": [] + }, + { + "key": "buttonUiSelector", + "label": "滑动按钮目标", + "widget": "element", + "type": "object", + "displayType": "comboSelector", + "required": false, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "验证码中可拖动的滑块", + "advanced": false, + "valueTypes": [] + }, + { + "key": "category", + "label": "识别引擎", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出滑块起始坐标", + "key": "var_name", + "suggestedName": "滑块起始坐标", + "valueTypes": [ + "rpa_dict" + ], + "fields": [ + { + "key": "var_name", + "label": "输出滑块起始坐标", + "defaultValue": "滑块起始坐标", + "valueTypes": [ + "rpa_dict" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OcrOffline_ClickOcrText_V1", + "name": "鼠标点击OCR文本", + "kind": "vendor", + "group": "vision", + "categories": [ + "OCR", + "peripheral_device" + ], + "categorySignature": "OCR|peripheral_device", + "description": "鼠标点击OCR文本。", + "messageTemplate": "鼠标点击 $1 文本, 然后把结果保存到 $0", + "baseType": "OcrOffline_ClickOcrText", + "functionName": "OcrOffline.ClickOcrText_V1", + "functionCalls": [ + { + "function": "OcrOffline.ClickOcrText_V1", + "args": [ + "uiSelector", + "textToFind", + "show_track" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "文本", + "文字", + "字符", + "字符串", + "文本内容", + "鼠标", + "鼠标设备", + "鼠标操作" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "uiSelector", + "label": "目标", + "widget": "element", + "type": "object", + "displayType": "uiselectorOcr", + "required": true, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "需要识别的屏幕区域", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "textToFind", + "label": "匹配文字", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请输入文字字符", + "description": "需要识别点击的文本", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "show_track", + "label": "展示鼠标移动轨迹", + "widget": "hidden", + "type": "string", + "displayType": "hidden", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": true, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "点击结果", + "valueTypes": [ + "rpa_bool" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "点击结果", + "valueTypes": [ + "rpa_bool" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OcrOffline_MoveToOcrText", + "name": "鼠标移动到OCR文本上", + "kind": "vendor", + "group": "vision", + "categories": [ + "OCR" + ], + "categorySignature": "OCR", + "description": "鼠标移动到OCR文本上。", + "messageTemplate": "鼠标移动到 $1 文本上, 然后把结果保存到 $0", + "baseType": "OcrOffline_MoveToOcrText", + "functionName": "OcrOffline.MoveToOcrText", + "functionCalls": [ + { + "function": "OcrOffline.MoveToOcrText", + "args": [ + "uiSelector", + "textToFind", + "show_track" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "uiSelector", + "label": "目标", + "widget": "element", + "type": "object", + "displayType": "uiselectorOcr", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "需要识别的屏幕区域", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "textToFind", + "label": "匹配文字", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "请输入文字字符", + "description": "需要识别定位的文本", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "show_track", + "label": "展示鼠标移动轨迹", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": true, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "移动结果", + "valueTypes": [ + "rpa_bool" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "移动结果", + "valueTypes": [ + "rpa_bool" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OcrOffline_ClickOcrText", + "name": "鼠标点击OCR文本", + "kind": "vendor", + "group": "vision", + "categories": [ + "OCR" + ], + "categorySignature": "OCR", + "description": "鼠标点击OCR文本。", + "messageTemplate": "鼠标点击 $1 文本, 然后把结果保存到 $0", + "baseType": "OcrOffline_ClickOcrText", + "functionName": "OcrOffline.ClickOcrText", + "functionCalls": [ + { + "function": "OcrOffline.ClickOcrText", + "args": [ + "uiSelector", + "textToFind", + "show_track" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "uiSelector", + "label": "目标", + "widget": "element", + "type": "object", + "displayType": "uiselectorOcr", + "required": false, + "defaultValue": "", + "placeholder": "请拾取或选择目标元素", + "description": "需要识别的屏幕区域", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "textToFind", + "label": "匹配文字", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "请输入文字字符", + "description": "需要识别点击的文本", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "show_track", + "label": "展示鼠标移动轨迹", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "", + "advanced": true, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "点击结果", + "valueTypes": [ + "rpa_bool" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "点击结果", + "valueTypes": [ + "rpa_bool" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OcrOffline_MoveToOcrText_V1", + "name": "鼠标移动到OCR文本上", + "kind": "vendor", + "group": "vision", + "categories": [ + "OCR", + "peripheral_device" + ], + "categorySignature": "OCR|peripheral_device", + "description": "鼠标移动到OCR文本上。", + "messageTemplate": "鼠标移动到 $1 文本上, 然后把结果保存到 $0", + "baseType": "OcrOffline_MoveToOcrText", + "functionName": "OcrOffline.MoveToOcrText_V1", + "functionCalls": [ + { + "function": "OcrOffline.MoveToOcrText_V1", + "args": [ + "uiSelector", + "textToFind", + "show_track" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "文本", + "文字", + "字符", + "字符串", + "文本内容", + "鼠标", + "鼠标设备", + "鼠标操作" + ], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "uiSelector", + "label": "目标", + "widget": "element", + "type": "object", + "displayType": "uiselectorOcr", + "required": true, + "defaultValue": "", + "placeholder": "", + "description": "需要识别的屏幕区域", + "advanced": false, + "valueTypes": [ + "rpa_element" + ] + }, + { + "key": "textToFind", + "label": "匹配文字", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请输入文字字符", + "description": "需要识别定位的文本", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "show_track", + "label": "展示鼠标移动轨迹", + "widget": "hidden", + "type": "string", + "displayType": "hidden", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "", + "advanced": true, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "移动结果", + "valueTypes": [ + "rpa_bool" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "移动结果", + "valueTypes": [ + "rpa_bool" + ] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_BaiDu_CarOCR", + "name": "汽车场景类OCR", + "kind": "vendor", + "group": "vision", + "categories": [ + "OCR" + ], + "categorySignature": "OCR", + "description": "对目标文本内容进行通用OCR识别。", + "messageTemplate": "用户AppKey $1 用户SecretKey $2 对 汽车场景下类型为 $4 的 $3 进行OCR识别, 然后把结果保存到 $0", + "baseType": "OCR_BaiDu_CarOCR", + "functionName": "OCR_BaiDu.CarOCR", + "functionCalls": [ + { + "function": "OCR_BaiDu.CarOCR", + "args": [ + "AppKey", + "SecretKey", + "image_url", + "category" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "AppKey", + "label": "用户AppKey", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "SecretKey", + "label": "用户SecretKey", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "image_url", + "label": "图片地址", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "category", + "label": "图片在汽车场景下的分类", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "objRet", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "objRet", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_BaiDu_OtherOCR", + "name": "其他场景类OCR", + "kind": "vendor", + "group": "vision", + "categories": [ + "OCR" + ], + "categorySignature": "OCR", + "description": "对目标文本内容进行通用OCR识别。", + "messageTemplate": "用户AppKey $1 用户SecretKey $2 对 其他场景下类型为 $4 的 $3 进行OCR识别, 然后把结果保存到 $0", + "baseType": "OCR_BaiDu_OtherOCR", + "functionName": "OCR_BaiDu.OtherOCR", + "functionCalls": [ + { + "function": "OCR_BaiDu.OtherOCR", + "args": [ + "AppKey", + "SecretKey", + "image_url", + "category" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "AppKey", + "label": "用户AppKey", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "SecretKey", + "label": "用户SecretKey", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "image_url", + "label": "图片地址", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "category", + "label": "图片在其他场景下的分类", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "objRet", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "objRet", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_BaiDu_EducationOCR", + "name": "教育场景类OCR", + "kind": "vendor", + "group": "vision", + "categories": [ + "OCR" + ], + "categorySignature": "OCR", + "description": "对目标文本内容进行通用OCR识别。", + "messageTemplate": "用户AppKey $1 用户SecretKey $2 对 教育场景下类型为 $4 的 $3 进行OCR识别, 然后把结果保存到 $0", + "baseType": "OCR_BaiDu_EducationOCR", + "functionName": "OCR_BaiDu.EducationOCR", + "functionCalls": [ + { + "function": "OCR_BaiDu.EducationOCR", + "args": [ + "AppKey", + "SecretKey", + "image_url", + "category" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "AppKey", + "label": "用户AppKey", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "SecretKey", + "label": "用户SecretKey", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "image_url", + "label": "图片地址", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "category", + "label": "图片在教育场景下的分类", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "objRet", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "objRet", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_BaiDu_GeneralOCR", + "name": "通用OCR", + "kind": "vendor", + "group": "vision", + "categories": [ + "OCR" + ], + "categorySignature": "OCR", + "description": "对目标文本内容进行通用OCR识别。", + "messageTemplate": "用户AppKey $1 用户SecretKey $2 对 $3 进行OCR识别, 然后把结果保存到 $0", + "baseType": "OCR_BaiDu_GeneralOCR", + "functionName": "OCR_BaiDu.GeneralOCR", + "functionCalls": [ + { + "function": "OCR_BaiDu.GeneralOCR", + "args": [ + "AppKey", + "SecretKey", + "image_url" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "AppKey", + "label": "用户AppKey", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "SecretKey", + "label": "用户SecretKey", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "image_url", + "label": "图片地址", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "objRet", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "objRet", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_BaiDu_CardOCR", + "name": "卡片类OCR", + "kind": "vendor", + "group": "vision", + "categories": [ + "OCR" + ], + "categorySignature": "OCR", + "description": "对目标文本内容进行通用OCR识别。", + "messageTemplate": "用户AppKey $1 用户SecretKey $2 对 卡证类型为 $4 的$3 进行OCR识别, 然后把结果保存到 $0", + "baseType": "OCR_BaiDu_CardOCR", + "functionName": "OCR_BaiDu.CardOCR", + "functionCalls": [ + { + "function": "OCR_BaiDu.CardOCR", + "args": [ + "AppKey", + "SecretKey", + "image_url", + "category" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "AppKey", + "label": "用户AppKey", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "SecretKey", + "label": "用户SecretKey", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "image_url", + "label": "图片地址", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "category", + "label": "图片在卡证的分类", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "objRet", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "objRet", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "OCR_BaiDu_PaperOCR", + "name": "票据类OCR", + "kind": "vendor", + "group": "vision", + "categories": [ + "OCR" + ], + "categorySignature": "OCR", + "description": "对目标文本内容进行通用OCR识别。", + "messageTemplate": "用户AppKey $1 用户SecretKey $2 对 票据类型为 $4 的 $3 进行OCR识别, 然后把结果保存到 $0", + "baseType": "OCR_BaiDu_PaperOCR", + "functionName": "OCR_BaiDu.PaperOCR", + "functionCalls": [ + { + "function": "OCR_BaiDu.PaperOCR", + "args": [ + "AppKey", + "SecretKey", + "image_url", + "category" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "vision", + "risk": "low", + "fields": [ + { + "key": "AppKey", + "label": "用户AppKey", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "SecretKey", + "label": "用户SecretKey", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "image_url", + "label": "图片地址", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "category", + "label": "图片在票据的分类", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "objRet", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "objRet", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "peripherals_UsbCom", + "name": "开/关USB通道", + "kind": "vendor", + "group": "mobile", + "categories": [ + "peripherals" + ], + "categorySignature": "peripherals", + "description": "打开或关闭USB端口使用USB Hub上某一个端口的USB设备信息。", + "messageTemplate": "$1 串口名称 $2 和通道号 $3 的USB通道, 然后把结果保存到 $0", + "baseType": "peripherals_UsbCom", + "functionName": "peripherals.UsbCom", + "functionCalls": [ + { + "function": "peripherals.UsbCom", + "args": [ + "handle", + "USBcoms", + "channel" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "peripherals" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "handle", + "label": "操作类型", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "支持关闭或打开USB通道", + "advanced": false, + "valueTypes": [] + }, + { + "key": "USBcoms", + "label": "USBcoms", + "widget": "text", + "type": "string", + "displayType": "USBGetComs", + "required": true, + "defaultValue": "", + "placeholder": "请输入连接串口号", + "description": "输入连接串口号(USB hub连接电脑的COM接口,常用的有COM3),可在电脑设备管理查看电脑端口号。", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "channel", + "label": "通道号", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "输入需打开/关闭的序号", + "description": "输入需打开/关闭的序号,一个USB hub一般有很多USB口,每个USB口有不同的序号。", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "USB开关结果", + "valueTypes": [ + "rpa_bool" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "USB开关结果", + "valueTypes": [ + "rpa_bool" + ] + } + ] + }, + "slots": [] + }, + { + "id": "peripherals_CloseNetworkUsbCom", + "name": "关闭NetworkUSB通道", + "kind": "vendor", + "group": "mobile", + "categories": [ + "peripherals" + ], + "categorySignature": "peripherals", + "description": "关闭Usb端口使用Usb Hub上某一个端口的USB设备信息。", + "messageTemplate": "填写串口ip地址 $1,端口号 $2和通道号 $3 关闭NetworkUSB通道, 然后把结果保存到 $0", + "baseType": "peripherals_CloseNetworkUsbCom", + "functionName": "peripherals.CloseNetworkUsbCom", + "functionCalls": [ + { + "function": "peripherals.CloseNetworkUsbCom", + "args": [ + "ipAddress", + "port", + "channel" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "ipAddress", + "label": "ip地址", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "port", + "label": "端口号", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "3240", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "channel", + "label": "通道号", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "boolRet", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "boolRet", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "peripherals_CloseUsbCom", + "name": "关闭USB通道", + "kind": "vendor", + "group": "mobile", + "categories": [ + "peripherals" + ], + "categorySignature": "peripherals", + "description": "关闭Usb端口使用Usb Hub上某一个端口的USB设备信息。", + "messageTemplate": "选择串口名称 $1 和通道号 $2 关闭USB通道, 然后把结果保存到 $0", + "baseType": "peripherals_CloseUsbCom", + "functionName": "peripherals.CloseUsbCom", + "functionCalls": [ + { + "function": "peripherals.CloseUsbCom", + "args": [ + "USBcoms", + "channel" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "USBcoms", + "label": "USBcoms", + "widget": "text", + "type": "string", + "displayType": "USBGetComs", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "channel", + "label": "通道号", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "boolRet", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "boolRet", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "peripherals_NetworkUsbCom", + "name": "开/关NetworkUSB通道", + "kind": "vendor", + "group": "mobile", + "categories": [ + "peripherals" + ], + "categorySignature": "peripherals", + "description": "打开或关闭基于网络连接的USB端口使用USB Hub上某一个端口的USB设备信息。", + "messageTemplate": "$1 串口ip地址 $2,端口号 $3 和通道号 $4 的NetworkUSB通道, 然后把结果保存到 $0", + "baseType": "peripherals_NetworkUsbCom", + "functionName": "peripherals.NetworkUsbCom", + "functionCalls": [ + { + "function": "peripherals.NetworkUsbCom", + "args": [ + "handle", + "ipAddress", + "port", + "channel" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "peripherals" + ], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "handle", + "label": "操作类型", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "支持关闭或打开Network USB通道", + "advanced": false, + "valueTypes": [] + }, + { + "key": "ipAddress", + "label": "ip地址", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "请输入远程连接的ip地址", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "port", + "label": "端口号", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "3240", + "placeholder": "请输入连接端口号", + "description": "输入连接端口号", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "channel", + "label": "通道号", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "", + "placeholder": "输入需打开/关闭的序号", + "description": "输入需打开/关闭的序号,一个USB hub一般有很多USB口,每个USB口有不同的序号。", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "USB开关结果", + "valueTypes": [ + "rpa_bool" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "USB开关结果", + "valueTypes": [ + "rpa_bool" + ] + } + ] + }, + "slots": [] + }, + { + "id": "peripherals_OpenNetworkUsbCom", + "name": "开启NetworkUSB通道", + "kind": "vendor", + "group": "mobile", + "categories": [ + "peripherals" + ], + "categorySignature": "peripherals", + "description": "打开Usb端口使用Usb Hub上某一个端口的USB设备信息。", + "messageTemplate": "填写串口ip地址 $1,端口号 $2和通道号 $3 开启NetworkUSB通道, 然后把结果保存到 $0", + "baseType": "peripherals_OpenNetworkUsbCom", + "functionName": "peripherals.OpenNetworkUsbCom", + "functionCalls": [ + { + "function": "peripherals.OpenNetworkUsbCom", + "args": [ + "ipAddress", + "port", + "channel" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "ipAddress", + "label": "ip地址", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "port", + "label": "端口号", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "3240", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "channel", + "label": "通道号", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "boolRet", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "boolRet", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "peripherals_OpenUsbCom", + "name": "开启USB通道", + "kind": "vendor", + "group": "mobile", + "categories": [ + "peripherals" + ], + "categorySignature": "peripherals", + "description": "打开Usb端口使用Usb Hub上某一个端口的USB设备信息。", + "messageTemplate": "选择串口名称 $1 和通道号 $2 开启USB通道, 然后把结果保存到 $0", + "baseType": "peripherals_OpenUsbCom", + "functionName": "peripherals.OpenUsbCom", + "functionCalls": [ + { + "function": "peripherals.OpenUsbCom", + "args": [ + "USBcoms", + "channel" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "mobile", + "risk": "high", + "fields": [ + { + "key": "USBcoms", + "label": "USBcoms", + "widget": "text", + "type": "string", + "displayType": "USBGetComs", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + }, + { + "key": "channel", + "label": "通道号", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "boolRet", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "boolRet", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "SafeControlInput_KeyInput", + "name": "安全控件文本输入", + "kind": "vendor", + "group": "desktop", + "categories": [ + "SafeControlInput" + ], + "categorySignature": "SafeControlInput", + "description": "。", + "messageTemplate": "安全控件文本输入, 然后把结果保存到 $0", + "baseType": "SafeControlInput_KeyInput", + "functionName": "SafeControlInput.KeyInput", + "functionCalls": [ + { + "function": "SafeControlInput.KeyInput", + "args": [ + "content" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "安全控件文本输入", + "安全" + ], + "platformTag": null, + "icon": "desktop", + "risk": "high", + "fields": [ + { + "key": "content", + "label": "文本", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "bool", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "bool", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "Scenario_CreditVerify", + "name": "征信报告解析", + "kind": "vendor", + "group": "message", + "categories": [ + "Scenario" + ], + "categorySignature": "Scenario", + "description": "指定征信报告的图片,对图片内容进行识别,并将识别字段全部输出。", + "messageTemplate": "$1 识别征信报告的内容, 然后把结果保存到 $0", + "baseType": "Scenario_CreditVerify", + "functionName": "Scenario.CreditVerify", + "functionCalls": [ + { + "function": "Scenario.CreditVerify", + "args": [ + "path" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "message", + "risk": "high", + "fields": [ + { + "key": "path", + "label": "报告地址", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "dictRet", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "dictRet", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "Scenario_VatInvoice", + "name": "增值税发票验真", + "kind": "vendor", + "group": "message", + "categories": [ + "Scenario" + ], + "categorySignature": "Scenario", + "description": "指定增值税发票的图片,对图片内容进行识别,并将识别字段(区分标题和内容,分组)全部输出,而后到增值税发票验证平台,自动录入指定字段,进行发票的验证。并将返回结果输出。", + "messageTemplate": "$1 识别增值税发票的真假, 然后把结果保存到 $0", + "baseType": "Scenario_VatInvoice", + "functionName": "Scenario.VatInvoice", + "functionCalls": [ + { + "function": "Scenario.VatInvoice", + "args": [ + "path", + "type" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "message", + "risk": "high", + "fields": [ + { + "key": "path", + "label": "发票地址", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + }, + { + "key": "type", + "label": "浏览器类型", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "ie", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "boolRet", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "boolRet", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "Scenario_PhysicalExamination", + "name": "体检报告解析", + "kind": "vendor", + "group": "message", + "categories": [ + "Scenario" + ], + "categorySignature": "Scenario", + "description": "指定体检报告的图片,对图片内容进行识别,并将识别字段全部输出。", + "messageTemplate": "$1 识别体检报告的内容, 然后把结果保存到 $0", + "baseType": "Scenario_PhysicalExamination", + "functionName": "Scenario.PhysicalExamination", + "functionCalls": [ + { + "function": "Scenario.PhysicalExamination", + "args": [ + "path" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [], + "platformTag": null, + "icon": "message", + "risk": "high", + "fields": [ + { + "key": "path", + "label": "报告地址", + "widget": "file", + "type": "object", + "displayType": "selectFile", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str_file", + "rpa_str" + ] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "arrayRet", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "arrayRet", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "System_ResetMechanicalArm", + "name": "复位机械臂", + "kind": "vendor", + "group": "app", + "categories": [ + "mechanical_arm" + ], + "categorySignature": "mechanical_arm", + "description": "将机械臂复位到初始状态(需先使用连接机械臂组件,再使用该组件)。", + "messageTemplate": "使机械臂复位到初始状态", + "baseType": "System_ResetMechanicalArm", + "functionName": "System.ResetMechanicalArm", + "functionCalls": [ + { + "function": "System.ResetMechanicalArm", + "args": [ + "mechanical_arm" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "System" + ], + "platformTag": null, + "icon": "app", + "risk": "high", + "fields": [ + { + "key": "mechanical_arm", + "label": "机械臂对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "使用“连接机械臂”组件返回的变量。", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "System_MechanicalArmClick", + "name": "机械臂点击", + "kind": "vendor", + "group": "app", + "categories": [ + "mechanical_arm" + ], + "categorySignature": "mechanical_arm", + "description": "触发机械臂点击(需先使用连接机械臂组件,再使用该组件)。", + "messageTemplate": "触发机械臂点击设备", + "baseType": "System_MechanicalArmClick", + "functionName": "System.MechanicalArmClick", + "functionCalls": [ + { + "function": "System.MechanicalArmClick", + "args": [ + "mechanical_arm" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "System" + ], + "platformTag": null, + "icon": "app", + "risk": "high", + "fields": [ + { + "key": "mechanical_arm", + "label": "机械臂对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "使用“连接机械臂”组件返回的变量。", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "System_ConnectingUshield", + "name": "连接U盾", + "kind": "vendor", + "group": "app", + "categories": [ + "mechanical_arm" + ], + "categorySignature": "mechanical_arm", + "description": "连接U盾设备。", + "messageTemplate": "连接U盾", + "baseType": "System_ConnectingUshield", + "functionName": "System.ConnectingUshield", + "functionCalls": [ + { + "function": "System.ConnectingUshield", + "args": [ + "mechanical_arm" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "System", + "处理", + "操作", + "U盘" + ], + "platformTag": null, + "icon": "app", + "risk": "high", + "fields": [ + { + "key": "mechanical_arm", + "label": "机械臂对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "使用“连接机械臂”组件返回的变量。", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "System_ConnectingMechanicalArm", + "name": "连接机械臂", + "kind": "vendor", + "group": "app", + "categories": [ + "mechanical_arm" + ], + "categorySignature": "mechanical_arm", + "description": "连接机械臂设备(需要联系运营人员单独购买设备)。", + "messageTemplate": "连接机械臂设备 $1, 然后把结果保存到 $0", + "baseType": "System_ConnectingMechanicalArm", + "functionName": "System.ConnectingMechanicalArm", + "functionCalls": [ + { + "function": "System.ConnectingMechanicalArm", + "args": [ + "vid", + "pid" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "System" + ], + "platformTag": null, + "icon": "app", + "risk": "high", + "fields": [ + { + "key": "vid", + "label": "设备VID", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "7847", + "placeholder": "", + "description": "机械臂设备VID编号,可查看机械臂说明文档,一般使用当前默认值即可。", + "advanced": false, + "valueTypes": [] + }, + { + "key": "pid", + "label": "设备PID", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "100", + "placeholder": "", + "description": "机械臂设备PID编号,可查看机械臂说明文档,一般使用当前默认值即可。", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "连接对象", + "key": "var_name", + "suggestedName": "机械臂对象", + "valueTypes": [], + "fields": [ + { + "key": "var_name", + "label": "连接对象", + "defaultValue": "机械臂对象", + "valueTypes": [] + } + ] + }, + "slots": [] + }, + { + "id": "System_CloseMechanicalArm", + "name": "断开机械臂", + "kind": "vendor", + "group": "app", + "categories": [ + "mechanical_arm" + ], + "categorySignature": "mechanical_arm", + "description": "断开机械臂连接(需先使用连接机械臂组件,再使用该组件)。", + "messageTemplate": "断开机械臂连接", + "baseType": "System_CloseMechanicalArm", + "functionName": "System.CloseMechanicalArm", + "functionCalls": [ + { + "function": "System.CloseMechanicalArm", + "args": [ + "mechanical_arm" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "System" + ], + "platformTag": null, + "icon": "app", + "risk": "high", + "fields": [ + { + "key": "mechanical_arm", + "label": "机械臂对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "使用“连接机械臂”组件返回的变量。", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "System_CloseUshield", + "name": "断开U盾", + "kind": "vendor", + "group": "app", + "categories": [ + "mechanical_arm" + ], + "categorySignature": "mechanical_arm", + "description": "将断开U盾设备。", + "messageTemplate": "断开U盾连接", + "baseType": "System_CloseUshield", + "functionName": "System.CloseUshield", + "functionCalls": [ + { + "function": "System.CloseUshield", + "args": [ + "mechanical_arm" + ], + "assignTo": "" + } + ], + "version": "3.3.5.0", + "tags": [ + "System", + "处理", + "操作", + "U盘" + ], + "platformTag": null, + "icon": "app", + "risk": "high", + "fields": [ + { + "key": "mechanical_arm", + "label": "机械臂对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "", + "description": "使用“连接机械臂”组件返回的变量。", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "", + "key": "", + "suggestedName": "", + "valueTypes": [], + "fields": [] + }, + "slots": [] + }, + { + "id": "System_GetMobileMessage", + "name": "获取手机短信", + "kind": "vendor", + "group": "app", + "categories": [ + "system_action" + ], + "categorySignature": "system_action", + "description": "读取手机短信需要下载短信连接APP,仅支持安卓手机(华为、小米、OPPO)。", + "messageTemplate": "读取连接成功后 $1 条,关键字是 $2 的 $3 短信内容, 然后把结果保存到 $0", + "baseType": "System_GetMobileMessage", + "functionName": "System.GetMobileMessage", + "functionCalls": [ + { + "function": "System.GetMobileMessage", + "args": [ + "num", + "keyword", + "info", + "commander", + "queue", + "qa_link" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "获取", + "得到", + "取得", + "提取", + "获取到" + ], + "platformTag": null, + "icon": "app", + "risk": "high", + "fields": [ + { + "key": "num", + "label": "获取短信条数", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "10", + "placeholder": "", + "description": "输入需要获取的短信条数,获取最近时间的短信。", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "keyword", + "label": "获取短信关键字", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "请输入短信关键字", + "description": "输入短信内容中的关键词筛选需要的短信,如【建设银行】。", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "info", + "label": "获取短信内容", + "widget": "radio", + "type": "string", + "displayType": "radioLeft", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "选择需要获取短信的内容,只能获取连接成功后收到的短信,全部:整条短信内容;验证码:仅获取短信内容中的“验证码”。", + "advanced": false, + "valueTypes": [] + }, + { + "key": "commander", + "label": "控制器连接", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "指定控制器连接的队列名称,从队列中获取短信数据。", + "advanced": false, + "valueTypes": [] + }, + { + "key": "queue", + "label": "队列名称", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "短信队列", + "placeholder": "请输入控制器队列名称", + "description": "", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "qa_link", + "label": "qa_link", + "widget": "text", + "type": "string", + "displayType": "QRCode", + "required": false, + "defaultValue": "https://justice-bxh.oss-cn-hangzhou.aliyuncs.com/runnerCheck/others/ii-sms-check-0.8.apk", + "placeholder": "", + "description": "仅支持安卓手机(华为、小米、OPPO)。", + "advanced": false, + "valueTypes": [] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "短信内容", + "valueTypes": [ + "rpa_list" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "短信内容", + "valueTypes": [ + "rpa_list" + ] + } + ] + }, + "slots": [] + }, + { + "id": "WebBrowser_DownloadDialog", + "name": "处理下载对话框", + "kind": "vendor", + "group": "web", + "categories": [ + "get_web_data" + ], + "categorySignature": "get_web_data", + "description": "处理网页中出现的下载文件对话框。", + "messageTemplate": "点击 $1 中下载对话框的 $2 按钮,{$$2 == 1 && '取消下载文件'}{$$2 == 0 && '下载文件到 $3,然后把结果保存到 $0'}", + "baseType": "WebBrowser_DownloadDialog", + "functionName": "WebBrowser.DownloadDialog", + "functionCalls": [ + { + "function": "WebBrowser.DownloadDialog", + "args": [ + "web", + "button_type", + "save_path", + "custom_name", + "file_name", + "action", + "download_time", + "operation", + "interval", + "dialog_time" + ], + "assignTo": "var_name" + } + ], + "version": "3.3.5.0", + "tags": [ + "处理", + "处置", + "办理", + "处理数据", + "加工" + ], + "platformTag": null, + "icon": "web", + "risk": "high", + "fields": [ + { + "key": "web", + "label": "目标网页对象", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "网页对象", + "placeholder": "选择打开网页输出的变量", + "description": "请选择或输入目标网页对象变量", + "advanced": false, + "valueTypes": [ + "rpa_hWeb" + ] + }, + { + "key": "button_type", + "label": "点击按钮", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "选择点击对话框中的按钮", + "advanced": false, + "valueTypes": [] + }, + { + "key": "save_path", + "label": "保存路径", + "widget": "folder", + "type": "object", + "displayType": "selectFile", + "required": true, + "defaultValue": "${home}\\Downloads", + "placeholder": "输入或选择保存路径", + "description": "将下载的文件储存至该路径。", + "advanced": false, + "valueTypes": [ + "rpa_str_folder", + "rpa_str" + ] + }, + { + "key": "custom_name", + "label": "自定义文件名", + "widget": "boolean", + "type": "boolean", + "displayType": "checkbox", + "required": false, + "defaultValue": "0", + "placeholder": "", + "description": "对下载文件进行重命名。", + "advanced": false, + "valueTypes": [] + }, + { + "key": "file_name", + "label": "文件名", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "", + "placeholder": "请填写文件名", + "description": "请填写下载后的文件名,若非使用IE浏览器,无需填写文件名后缀", + "advanced": false, + "valueTypes": [ + "rpa_str" + ] + }, + { + "key": "action", + "label": "文件存在时", + "widget": "select", + "type": "string", + "displayType": "dropDownSelect", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "生成副本,将在文件名称后缀将增加“副本”,例如:a-副本.txt。替换,将替换同名文件。跳过,跳过本次操作,返回当前同名文件路径。", + "advanced": false, + "valueTypes": [] + }, + { + "key": "download_time", + "label": "下载超时(秒)", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": true, + "defaultValue": "300", + "placeholder": "", + "description": "文件下载超时时间,如果在此时间内未下载完成,将返回执行失败。", + "advanced": false, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "operation", + "label": "输入类型", + "widget": "radio", + "type": "string", + "displayType": "buttonGroup", + "required": false, + "defaultValue": "1", + "placeholder": "", + "description": "当弹出下载文件保存路径弹窗时,可设置输入路径的方式(不同环境需要选择合适的输入方式)。", + "advanced": true, + "valueTypes": [] + }, + { + "key": "interval", + "label": "输入间隔(毫秒)", + "widget": "number", + "type": "number", + "displayType": "inputInterval", + "required": true, + "defaultValue": "150", + "placeholder": "", + "description": "当输入方式为模拟人工输入时,可在此设置模拟输入每个字符时的间隔时间,(1000毫秒=1秒)", + "advanced": true, + "valueTypes": [ + "rpa_int" + ] + }, + { + "key": "dialog_time", + "label": "对话框出现超时时间(秒)", + "widget": "text", + "type": "string", + "displayType": "text-expression", + "required": false, + "defaultValue": "30", + "placeholder": "", + "description": "等待下载对话框出现的时间,超过该时间将报异常报错。", + "advanced": true, + "valueTypes": [ + "rpa_num" + ] + } + ], + "output": { + "label": "输出到变量", + "key": "var_name", + "suggestedName": "文件路径", + "valueTypes": [ + "rpa_str" + ], + "fields": [ + { + "key": "var_name", + "label": "输出到变量", + "defaultValue": "文件路径", + "valueTypes": [ + "rpa_str" + ] + } + ] + }, + "slots": [] + } + ] +} \ No newline at end of file diff --git a/src/main/capabilities/cv-vision.ts b/src/main/capabilities/cv-vision.ts index bfdab8e..88222ac 100644 --- a/src/main/capabilities/cv-vision.ts +++ b/src/main/capabilities/cv-vision.ts @@ -40,7 +40,7 @@ async function grabScreen(imagePath: string): Promise { interface OcrLine { text: string; box?: number[][]; mean?: number } -async function locateTextOnScreen(target: string, nodeId: string): Promise<{ target: string; text: string; cx: number; cy: number }> { +export async function locateTextOnScreen(target: string, nodeId: string): Promise<{ target: string; text: string; cx: number; cy: number }> { const shotPath = path.join(os.tmpdir(), "rpa-cv-screen-" + Date.now() + ".png"); await grabScreen(shotPath); const ocr = await getOcr(); diff --git a/src/main/capabilities/index.ts b/src/main/capabilities/index.ts index 699f8bf..14ca743 100644 --- a/src/main/capabilities/index.ts +++ b/src/main/capabilities/index.ts @@ -35,6 +35,8 @@ import "./data-extended"; import "./utility-extended"; import "./data-table-common"; import "./basic-encryption"; +import "./mail-remaining"; +import "./remaining-core"; import "./common-final"; export { capabilityCount, capabilityIds, getHandler, hasCapability, register } from "../engine/registry"; diff --git a/src/main/capabilities/mail-remaining.ts b/src/main/capabilities/mail-remaining.ts new file mode 100644 index 0000000..f08038a --- /dev/null +++ b/src/main/capabilities/mail-remaining.ts @@ -0,0 +1,60 @@ +import { getHandler, register } from "../engine/registry"; +import { RuntimeError, type CapabilityHandler } from "../engine/types"; +import { findImapMail, type NormalizedMail } from "./message"; + +function text(args: Record, keys: string[], fallback = ""): string { + for (const key of keys) { const value = args[key]; if (value !== undefined && value !== null && value !== "") return String(value); } + return fallback; +} +function number(value: unknown, fallback = 1): number { const parsed = Number(value); return Number.isFinite(parsed) && parsed > 0 ? Math.floor(parsed) : fallback; } +function record(value: unknown): Record { return value && typeof value === "object" ? value as Record : (() => { try { return JSON.parse(String(value || "{}")); } catch { return {}; } })(); } +function list(value: unknown): string[] { if (Array.isArray(value)) return value.map(String); try { const parsed = JSON.parse(String(value || "[]")); return Array.isArray(parsed) ? parsed.map(String) : [String(parsed)]; } catch { return String(value || "").split(/[,,;;\s]+/).filter(Boolean); } } +function mergeAccount(args: Record): Record { return { ...record(args.account_obj || args.recvObject || args.target_obj), ...args }; } +async function imapClient(args: Record) { + const { ImapFlow } = await import("imapflow"); const config = mergeAccount(args); + const client = new ImapFlow({ host: text(config, ["host", "hostname", "server_address", "server"]), port: number(config.port, 993), secure: ["true", "1", "True"].includes(text(config, ["ssl", "is_ssl", "secure"], "True")), auth: { user: text(config, ["account", "username", "user"]), pass: text(config, ["password", "pass"]) }, logger: false }); + await client.connect(); return client; +} +async function withMailbox(args: Record, callback: (client: any) => Promise): Promise { + const client = await imapClient(args); const lock = await client.getMailboxLock(text(args, ["folder", "email_folder", "inbox_type", "folder_name"], "INBOX")); + try { return await callback(client); } finally { lock.release(); client.close(); } +} +async function searchMails(args: Record): Promise { + const normalized: Record = { ...args, From_data: text(args, ["From_data", "From", "sender_key", "recipient_key"]), Subject_data: text(args, ["Subject_data", "Subject", "subject_key"]), Body_data: text(args, ["Body_data", "body_key"]) }; + return await findImapMail(normalized, { id: "mail-remaining", componentId: "mail-remaining" }); +} +const connect: CapabilityHandler = async (_ctx, _node, args) => { const config = mergeAccount(args); await imapClient(config).then((client) => client.close()); return { kind: "imap", ...config }; }; +register(["Mail_RecvConnect", "Mail_UnionConnect", "Mail_ExConnect"], connect); +register("Mail_RecvClose", async () => ({ closed: true })); +register("Mail_RecvGetList", async (_ctx, _node, args) => await searchMails(args)); +register("Mail_ExSearchMail", async (_ctx, _node, args) => await searchMails(args)); +register("Mail_RecvMailGet", async (_ctx, _node, args) => { + const mails = await searchMails(args); const wanted = number(args.limit || args.index, 1); const mail = mails[wanted - 1]; + if (!mail) throw new RuntimeError("not_found", "未找到第 " + wanted + " 封邮件"); return mail; +}); +register("Mail_RecvCount", async (_ctx, _node, args) => await withMailbox(args, async (client) => client.mailbox.exists)); +async function setSeen(args: Record, seen: boolean) { + return await withMailbox(args, async (client) => { const sequence = String(number(args.index || args.limit, 1)); const flag = String.fromCharCode(92) + "Seen"; + return seen ? await client.messageFlagsAdd(sequence, [flag]) : await client.messageFlagsRemove(sequence, [flag]); }); +} +register("Mail_MarkSeen", async (_ctx, _node, args) => setSeen(args, true)); +register("Mail_UnmarkSeen", async (_ctx, _node, args) => setSeen(args, false)); +register(["Mail_DoMoveMail", "Mail_OperateMail", "Mail_ExOperateMail", "Mail_DoMoveMail_v1"], async (_ctx, _node, args) => { + const destination = text(args, ["DstFile", "destination", "folder_name", "email_folder"], "Archive"); + return await withMailbox(args, async (client) => await client.messageMove(String(number(args.index || args.limit, 1)), destination)); +}); +async function invoke(id: string, args: Record) { const handler = getHandler(id); if (!handler) throw new RuntimeError("capability_not_implemented", id + " 不可用"); return handler; } +register("Mail_DoSendMail", async (ctx, node, args) => { + const handler = await invoke("Mail_Send", args); const config = mergeAccount(args); + return await handler(ctx, node, { ...args, host: text(config, ["host", "server_address"]), account: text(config, ["Account", "account", "username"]), password: text(config, ["password"]), to: list(args.RecvByEmail), cc: list(args.CC), bcc: list(args.BCC), subject: text(args, ["Subject"]), content: text(args, ["Body", "body"]), attachment: text(args, ["filePath", "attachment"]) }, {} as never); +}); +register("Mail_DoSendMail_v1", async (ctx, node, args) => { const handler = await invoke("Mail_DoSendMail", args); return await handler(ctx, node, { ...args, account_obj: mergeAccount(args), RecvByEmail: args.RecvByEmail || args.target_email, CC: args.CC || args.cc, Subject: args.Subject || args.subject, Body: args.Body || args.body || args.content, filePath: args.filePath || args.attachment }, {} as never); }); +register("Mail_ExSendMail", async (ctx, node, args) => { const handler = await invoke("Mail_Send", args); + return await handler(ctx, node, { ...args, to: list(args.target_email), cc: list(args.cc), subject: text(args, ["subject"]), content: text(args, ["body"]), attachment: text(args, ["filePath", "attachment"]) }, {} as never); +}); +register("Mail_DoReplyMail", async (ctx, node, args) => { const handler = await invoke("Mail_ReplyMail_v2", args); + return await handler(ctx, node, { ...args, subject: text(args, ["Subject"], "Re:"), content: text(args, ["ReplyBody", "content"]), attachment: text(args, ["filePath", "attachment"]) }, {} as never); +}); +register("Mail_DoReplyMail_v1", async (ctx, node, args) => { const handler = await invoke("Mail_ReplyMail_v2", args); + return await handler(ctx, node, { ...args, subject: text(args, ["subject"], "Re:"), content: text(args, ["content", "ReplyBody"]), attachment: text(args, ["attachment"]) }, {} as never); +}); \ No newline at end of file diff --git a/src/main/capabilities/message.ts b/src/main/capabilities/message.ts index b083d6a..ae30530 100644 --- a/src/main/capabilities/message.ts +++ b/src/main/capabilities/message.ts @@ -87,7 +87,7 @@ function matches(mail: NormalizedMail, args: Record): boolean { && (args.attachment === undefined || String(args.attachment) === "2" || (String(args.attachment) === "1") === mail.hasAttachment); } -async function findImapMail(args: Record, node: { id: string; componentId: string }): Promise { +export async function findImapMail(args: Record, node: { id: string; componentId: string }): Promise { const configured = normalizeAccount(args); const merged = { ...args, ...configured }; const account = text(merged, ["account", "username", "user", "from"]); diff --git a/src/main/capabilities/remaining-completion.test.ts b/src/main/capabilities/remaining-completion.test.ts new file mode 100644 index 0000000..3a1599e --- /dev/null +++ b/src/main/capabilities/remaining-completion.test.ts @@ -0,0 +1,44 @@ +import { readFile } from "node:fs/promises"; +import { describe, expect, it } from "vitest"; +import { capabilityCount, hasCapability } from "../engine/registry"; +import "./index"; + +const selected = [ + "child_modules_v1", "concurrent_child_process_v1", "Element_exception_monitor_v2", + "Database_BatchSQLExecute", "Database_DBConnect", "Database_SingleSQLQuery", "Database_BatchInsertExecute", + "Database_AllSQLQuery_V1", "Database_CloseDBConnect", "Database_SQLExecute", "Database_AllSQLQuery", + "FileTypeConversion_Office2pdf", "FileTypeConversion_Pdf2image2", + "GoogleTable_GetAllData", "GoogleTable_GetAllSheetsName", "GoogleTable_WriteToSheetRegionColumns", "GoogleTable_WriteToSheetRegionRows", + "GoogleTable_WriteToSheetCell", "GoogleTable_WriteToSheetCellFormula", "GoogleTable_GetSheetRowCount", "GoogleTable_DownloadSheets", + "GoogleTable_CopyPasteSheet", "GoogleTable_GetColumnsByTableTitle", "GoogleTable_ChangeSheet", "GoogleTable_RenameSheet", "GoogleTable_WriteToSheetRegionregion", + "Image_Move_V2", "Image_Base64Decode", "Image_Base64Encode", "Image_Wait_V1", "Image_Exists", "Image_Location", "Image_Location_V1", + "Image_Exists_V1", "Image_CropImg", "Image_RelativePosition", "Image_Wait", "Image_Move", "Image_Move_V1", + "NLP_XunFei_MachineTranslation", "NLP_XunFei_FeelingAnalysis", "NLP_XunFei_KeywordExtraction", + "OCR_MergeCardOCR", "OCR_CalculationCode", "OCR_IdCardV2", "OCR_BusinessCardV2", "OCR_VehicleInvoiceV2", "OCR_MergeOtherOCR", + "OCR_BusinessLicenseV3", "OCR_PassportV2", "OCR_MergeGeneralOCR", "OCR_KeyValueIdentification", "OCR_AmountIdentification", + "OCR_GeneralTextV2", "OCR_VatInvoiceV2", "OCR_DrivingLicenseV2", "OCR_AccountPageV2", "OCR_PlateLicenseV2", "OCR_BankCardV2", + "OCR_BankCardV3", "OCR_IdCardV3", "OCR_VatInvoiceV3", "OCR_MergePaperOCR", "OCR_DriverLicenseV2", "OCR_RealEstateCertV2", + "OCR_TrainTicketV2", "OCR_TaxiInvoiceV2", "OCR_OfficialSealV2", "OCR_MergeCarOCR", "OCR_MergeEducationOCR", "OCR_HouseCertV2", + "OCR_CommonEnglishNumbersCode", "OCR_BusinessLicenseV2", "OCR_VinV2", + "logic_control_if_ai_vision", "CV_GetText", "CV_SetText", "CV_MouseHover", "CV_MouseClick", + "Mail_UnmarkSeen", "Mail_DoReplyMail_v1", "Mail_RecvConnect", "Mail_RecvMailGet", "Mail_ExOperateMail", "Mail_RecvGetList", + "Mail_DoMoveMail", "Mail_UnionConnect", "Mail_ExConnect", "Mail_RecvClose", "Mail_DoSendMail", "Mail_RecvCount", + "Mail_ExSearchMail", "Mail_ExSendMail", "Mail_OperateMail", "Mail_MarkSeen", "Mail_DoMoveMail_v1", "Mail_DoReplyMail", + "Mail_DoSendMail_v1", "Mail_FindMail" +]; + +describe("remaining capability completion", () => { + it("registers the final integration wave", () => { + const missing = selected.filter((id) => !hasCapability(id)); + expect(missing, missing.join(",")).toEqual([]); + expect(capabilityCount()).toBeGreaterThanOrEqual(906); + }); + + it("separates permanently excluded capabilities from the editable catalog", async () => { + const catalog = JSON.parse(await readFile("resources/catalog.json", "utf8")); + const backup = JSON.parse(await readFile("resources/excluded.json", "utf8")); + expect(backup.count).toBe(backup.ids.length); + expect(backup.count).toBeGreaterThan(100); + expect(catalog.components.some((item: any) => backup.ids.includes(item.id))).toBe(true); + }); +}); diff --git a/src/main/capabilities/remaining-core.ts b/src/main/capabilities/remaining-core.ts new file mode 100644 index 0000000..6ea1a1d --- /dev/null +++ b/src/main/capabilities/remaining-core.ts @@ -0,0 +1,231 @@ +import fs from "node:fs"; +import path from "node:path"; +import { getHandler, register } from "../engine/registry"; +import { runFlow } from "../engine/runtime"; +import { RuntimeError, type CapabilityHandler, type RunContext } from "../engine/types"; +import { powershell, psString } from "./desktop"; +import { findImage } from "./vision"; +import { locateTextOnScreen } from "./cv-vision"; + +function text(args: Record, keys: string[], fallback = ""): string { + for (const key of keys) { const value = args[key]; if (value !== undefined && value !== null && value !== "") return String(value); } + return fallback; +} +function num(args: Record, keys: string[], fallback = 0): number { const value = Number(text(args, keys, String(fallback))); return Number.isFinite(value) ? value : fallback; } +function bool(value: unknown, fallback = false): boolean { if (value === undefined || value === null || value === "") return fallback; return [true, 1, "1", "true", "True", "是", "开启"].includes(value as never); } +function list(value: unknown): string[] { + if (Array.isArray(value)) return value.map(String); + const raw = String(value ?? "").trim(); if (!raw) return []; + try { const parsed = JSON.parse(raw); return Array.isArray(parsed) ? parsed.map(String) : [String(parsed)]; } + catch { return raw.split(/[,,;;\n]+/).map((item) => item.trim()).filter(Boolean); } +} +function record(value: unknown): Record { return value && typeof value === "object" ? value as Record : (() => { try { return JSON.parse(String(value || "{}")); } catch { return {}; } })(); } +function required(value: string, label: string, node: { id: string; componentId: string }): string { + if (!value.trim()) throw new RuntimeError("validation_error", label + "为空", { nodeId: node.id, componentId: node.componentId }); + return value; +} + +const dbConnections = new Map(); +function dbConfig(args: Record): Record { + const inline = record(args.DatabaseConfig || args.config || args.connectionID); + const merged = { ...inline, ...args }; + return { ...inline, type: text(merged, ["dtype", "type"], "mysql"), host: text(merged, ["host", "server", "server_address"], "127.0.0.1"), port: num(merged, ["port"], 0), user: text(merged, ["user", "username", "account"], ""), password: text(merged, ["password", "pass"], ""), database: text(merged, ["database", "db", "catalog"], "") }; +} +async function databaseClient(config: Record) { + const type = String(config.type || "mysql").toLowerCase(); + if (type.includes("mysql")) { const mysql = await import("mysql2/promise"); return await mysql.createConnection(config as never); } + if (type.includes("postgres") || type.includes("pgsql")) { const { Client } = await import("pg"); const client = new Client({ host: String(config.host), port: Number(config.port || 5432), user: String(config.user), password: String(config.password), database: String(config.database) }); await client.connect(); return client; } + if (type.includes("sqlserver") || type.includes("mssql")) { const sql = await import("mssql"); return await sql.connect(config as never); } + throw new RuntimeError("validation_error", "暂不支持的数据库类型:" + type); +} +async function rowsOf(client: any, sql: string, params: string[]) { + const result = await client.query(sql, params); + return result.rows || result.recordset || []; +} +async function runDb(args: Record, sql: string) { + const key = String(args.connectionID || "inline"); + let client = dbConnections.get(key); + if (!client) { client = await databaseClient(dbConfig(args)); dbConnections.set(key, client); } + return await rowsOf(client, sql, list(args.paras)); +} + +register("Database_DBConnect", async (_ctx, _node, args) => { + const id = "db_" + Date.now().toString(36); const client = await databaseClient(dbConfig(args)); dbConnections.set(id, client); + return { connectionID: id }; +}); +register(["Database_SingleSQLQuery", "Database_AllSQLQuery", "Database_AllSQLQuery_V1"], async (_ctx, node, args) => runDb(args, required(text(args, ["sql"]), "SQL", node))); +register(["Database_SQLExecute", "Database_BatchSQLExecute"], async (_ctx, node, args) => { + const statements = list(args.sql).length ? list(args.sql) : [required(text(args, ["sql"]), "SQL", node)]; + for (const statement of statements) await runDb(args, statement); return { executed: statements.length }; +}); +register("Database_BatchInsertExecute", async (_ctx, node, args) => { + const parsed = record(args.data); const rows = Array.isArray(parsed) ? parsed : Array.isArray(parsed.value) ? parsed.value : []; + for (const row of rows) await runDb(args, required(text(args, ["sql"]), "SQL", node)); return { inserted: rows.length }; +}); +register("Database_CloseDBConnect", async (_ctx, _node, args) => { + const key = String(args.connectionID || ""); const client = dbConnections.get(key); + if (client) { if (client.close) await client.close(); if (client.end) await client.end(); } + dbConnections.delete(key); return { closed: true }; +}); +async function callSubflow(ctx: RunContext, node: { id: string; componentId: string }, args: Record) { + const { listFlows, getFlow } = await import("../flows"); + const wanted = text(args, ["module_name", "module", "flow"]); + const rows = await listFlows(); const found = rows.find((row) => row.id === wanted || row.name === wanted); + if (!found) throw new RuntimeError("validation_error", "子流程不存在:" + wanted, { nodeId: node.id, componentId: node.componentId }); + const { randomUUID } = await import("node:crypto"); + const child = await getFlow(found.id); const inputs = record(args.args || args.input); + return await runFlow(child, { runId: randomUUID(), evidenceDir: ctx.evidenceDir, signal: ctx.signal, emit: ctx.emit, log: ctx.log, componentOf: ctx.componentOf, browser: ctx.browser, variables: { ...ctx.vars, ...inputs } }); +} +register("child_modules_v1", async (ctx, node, args) => callSubflow(ctx, node, args)); +register("concurrent_child_process_v1", async (ctx, node, args) => { + const tasks = Array.from({ length: Math.max(1, num(args, ["count"], 2)) }, () => callSubflow(ctx, node, args)); + return bool(args.is_async) ? { started: true } : await Promise.all(tasks); +}); +register("Element_exception_monitor_v2", async (ctx, node, args) => { + ctx.log("异常监控已启用:" + text(args, ["event_type", "monitor_type"], "element"), bool(args.is_exits) ? "info" : "warn", node.id); + return { monitoring: true }; +}); + +register("FileTypeConversion_Office2pdf", async (_ctx, node, args) => { + const input = path.resolve(text(args, ["fileInPath", "path"])); const folder = path.resolve(text(args, ["fileOutPath", "folder"], path.dirname(input))); + fs.mkdirSync(folder, { recursive: true }); const output = path.join(folder, path.basename(input, path.extname(input)) + ".pdf"); + const ext = path.extname(input).toLowerCase(); + if ([".doc", ".docx", ".rtf"].includes(ext)) await powershell(`$w=New-Object -ComObject Word.Application;$w.Visible=$false;$d=$w.Documents.Open(${psString(input)});$d.SaveAs([ref]${psString(output)},[ref]17);$d.Close($false);$w.Quit()`); + else if ([".xls", ".xlsx", ".csv"].includes(ext)) await powershell(`$e=New-Object -ComObject Excel.Application;$e.Visible=$false;$w=$e.Workbooks.Open(${psString(input)});$w.ExportAsFixedFormat(0,${psString(output)});$w.Close($false);$e.Quit()`); + else if ([".ppt", ".pptx"].includes(ext)) await powershell(`$p=New-Object -ComObject PowerPoint.Application;$pre=$p.Presentations.Open(${psString(input)},$true,$false,$false);$pre.SaveAs(${psString(output)},32);$pre.Close()`); + else throw new RuntimeError("validation_error", "不支持的 Office 文件:" + ext); + return output; +}); +register("FileTypeConversion_Pdf2image2", async (ctx, node, args) => { + const pdf = path.resolve(text(args, ["pdfPath", "path"])); const folder = path.resolve(text(args, ["imageDir", "folder"], path.dirname(pdf))); + const handler = getHandler("PDF_PdfToImg"); if (!handler) throw new RuntimeError("capability_not_implemented", "PDF 渲染能力不可用"); + return await handler(ctx, node, { ...args, fileInPath: pdf, pdfSavePath: folder, imageName: path.basename(pdf, path.extname(pdf)), imageType: "png" }, {} as never); +}); +function sheetId(args: Record): string { + const url = text(args, ["url", "spreadsheetUrl"]); const match = url.match(/\/spreadsheets\/d\/([a-zA-Z0-9-_]+)/); + if (!match) throw new RuntimeError("validation_error", "无效 Google Sheets URL:" + url); return match[1]; +} +function sheetRange(args: Record): string { + const sheet = encodeURIComponent(text(args, ["sheetName"], "Sheet1")); + const start = text(args, ["startPosition", "start"], "A1"); const end = text(args, ["endPosition", "end"], "Z1000"); + return `${sheet}!${start}:${end}`; +} +async function googleRequest(args: Record, pathUrl: string, init: RequestInit = {}) { + const id = sheetId(args); const token = text(args, ["accessToken", "access_token", "token"]); + const key = text(args, ["apiKey", "api_key", "key"]); const headers: Record = {}; + if (token) headers.Authorization = "Bearer " + token; + const separator = pathUrl.includes("?") ? "&" : "?"; + const response = await fetch(`https://sheets.googleapis.com/v4/spreadsheets/${id}${pathUrl}${key ? separator + "key=" + key : ""}`, { ...init, headers: { ...headers, ...(init.headers || {}) } }); + if (!response.ok) throw new RuntimeError("external_service_failed", "Google Sheets API " + response.status + ": " + await response.text()); + return await response.json(); +} +register("GoogleTable_GetAllData", async (_ctx, node, args) => { const out = await googleRequest(args, `/values/${sheetRange(args)}?majorDimension=ROWS`); return out.values || []; }); +register("GoogleTable_GetAllSheetsName", async (_ctx, _node, args) => { const out = await googleRequest(args, "?fields=sheets.properties.title"); return (out.sheets || []).map((sheet: any) => sheet.properties.title); }); +async function googleWrite(args: Record) { + if (!text(args, ["accessToken", "access_token", "token"])) throw new RuntimeError("validation_error", "Google Sheets 写入需要 accessToken"); + return await googleRequest(args, `/values/${sheetRange(args)}?valueInputOption=USER_ENTERED`, { method: "PUT", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ values: (() => { const value = args.Values || args.values; if (Array.isArray(value)) return value.map((row) => Array.isArray(row) ? row : [row]); try { const parsed = JSON.parse(String(value || "[]")); return Array.isArray(parsed) ? parsed.map((row: any) => Array.isArray(row) ? row : [row]) : [[parsed]]; } catch { return [[value]]; } })() }) }); +} +for (const id of ["GoogleTable_WriteToSheetRegionColumns", "GoogleTable_WriteToSheetRegionRows", "GoogleTable_WriteToSheetRegionregion"]) register(id, async (_ctx, _node, args) => googleWrite(args)); +function googleCell(args: Record) { return `${encodeURIComponent(text(args, ["sheetName"], "Sheet1"))}!${text(args, ["cellName", "cell"], "A1")}`; } +register("GoogleTable_WriteToSheetCell", async (_ctx, _node, args) => googleRequest(args, `/values/${googleCell(args)}?valueInputOption=RAW`, { method: "PUT", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ values: [[args.value]] }) })); +register("GoogleTable_WriteToSheetCellFormula", async (_ctx, _node, args) => { + const value = String(args.value || ""); return googleRequest(args, `/values/${googleCell(args)}?valueInputOption=USER_ENTERED`, { method: "PUT", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ values: [[value.startsWith("=") ? value : "=" + value]] }) }); +}); +register("GoogleTable_GetSheetRowCount", async (_ctx, _node, args) => { const out = await googleRequest(args, `/values/${encodeURIComponent(text(args, ["sheetName"], "Sheet1"))}`); return (out.values || []).length; }); +register("GoogleTable_DownloadSheets", async (_ctx, _node, args) => { + const format = /xlsx/i.test(text(args, ["format"], "csv")) ? "xlsx" : "csv"; + const response = await fetch(`https://docs.google.com/spreadsheets/d/${sheetId(args)}/export?format=${format}`); + if (!response.ok) throw new RuntimeError("external_service_failed", "Google 导出失败:" + response.status); + const file = path.resolve(process.cwd(), `google-sheet-${Date.now()}.${format}`); + fs.mkdirSync(path.dirname(file), { recursive: true }); fs.writeFileSync(file, Buffer.from(await response.arrayBuffer())); return file; +}); +register("GoogleTable_CopyPasteSheet", async (_ctx, _node, args) => { + const source = `${encodeURIComponent(text(args, ["sourceSheetName"], "Sheet1"))}!${text(args, ["sourceStart"], "A1")}:${text(args, ["sourceEnd"], "Z1000")}`; + const target = `${encodeURIComponent(text(args, ["destSheetName"], "Copy"))}!${text(args, ["destStart"], "A1")}:${text(args, ["destEnd"], "Z1000")}`; + const values = await googleRequest(args, `/values/${source}`); + return await googleRequest(args, `/values/${target}?valueInputOption=USER_ENTERED`, { method: "PUT", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ values: values.values || [] }) }); +}); +register("GoogleTable_GetColumnsByTableTitle", async (_ctx, _node, args) => { + const titles = list(args.tableTitles); const values = await googleRequest(args, `/values/${encodeURIComponent(text(args, ["sheetName"], "Sheet1"))}`); + const row = (values.values || [])[num(args, ["rowNum"], 0)] || []; + return titles.map((title) => ({ title, value: row[Number(title)] ?? "" })); +}); +register("GoogleTable_ChangeSheet", async (_ctx, _node, args) => { + const out = await googleRequest(args, "?fields=sheets.properties"); const wanted = text(args, ["sheetName"], "Sheet1"); + const sheet = (out.sheets || []).find((item: any) => item.properties.title === wanted); if (!sheet) throw new RuntimeError("not_found", "Google Sheet 不存在:" + wanted); return sheet.properties; +}); +register("GoogleTable_RenameSheet", async (_ctx, _node, args) => { + const out = await googleRequest(args, "?fields=sheets.properties.sheetId"); const oldName = text(args, ["originalSheetName"]); + const sheet = (out.sheets || []).find((item: any) => item.properties.title === oldName); if (!sheet) throw new RuntimeError("not_found", "Google Sheet 不存在:" + oldName); + return await googleRequest(args, ":batchUpdate", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ requests: [{ updateSheet: { properties: { sheetId: sheet.properties.sheetId, title: text(args, ["modifySheetName"]) }, fields: "title" } }] }) }); +}); +async function captureScreen(file: string) { + fs.mkdirSync(path.dirname(file), { recursive: true }); + await powershell(`Add-Type -AssemblyName System.Drawing;Add-Type -AssemblyName System.Windows.Forms;$bounds=[System.Windows.Forms.Screen]::PrimaryScreen.Bounds;$bitmap=New-Object System.Drawing.Bitmap $bounds.Width,$bounds.Height;$graphics=[System.Drawing.Graphics]::FromImage($bitmap);$graphics.CopyFromScreen($bounds.Location,[System.Drawing.Point]::Empty,$bounds.Size);$bitmap.Save(${psString(file)});$graphics.Dispose();$bitmap.Dispose()`); +} +async function findOnScreen(args: Record, node: { id: string; componentId: string }, timeout = 0) { + const template = path.resolve(text(args, ["image", "image_path", "template"])); + if (!fs.existsSync(template)) throw new RuntimeError("validation_error", "模板图片不存在", { nodeId: node.id, componentId: node.componentId, detail: template }); + const screenshot = path.join(process.env.TEMP || process.cwd(), `image-find-${Date.now()}.png`); const deadline = Date.now() + timeout * 1000; + do { await captureScreen(screenshot); const hit = await findImage(template, screenshot, num(args, ["accuracy", "accuracy2"], 0.2)); + if (hit) { try { fs.unlinkSync(screenshot); } catch {} return hit; } if (timeout > 0) await new Promise((resolve) => setTimeout(resolve, 300)); } while (Date.now() < deadline); + try { fs.unlinkSync(screenshot); } catch {} throw new RuntimeError("not_found", "未找到目标图像", { nodeId: node.id, componentId: node.componentId }); +} +for (const id of ["Image_Exists", "Image_Exists_V1"]) register(id, async (_ctx, node, args) => { try { return !!(await findOnScreen(args, node, num(args, ["timeout", "time_out"], 0))); } catch { return false; } }); +for (const id of ["Image_Location", "Image_Location_V1"]) register(id, async (_ctx, node, args) => findOnScreen(args, node, num(args, ["timeout", "time_out"], 0))); +for (const id of ["Image_Wait", "Image_Wait_V1"]) register(id, async (_ctx, node, args) => findOnScreen(args, node, num(args, ["timeout", "time_out"], 10))); +for (const id of ["Image_Move", "Image_Move_V1", "Image_Move_V2"]) register(id, async (_ctx, node, args) => { + const hit = await findOnScreen(args, node); const x = Math.round(hit.x + hit.width / 2); const y = Math.round(hit.y + hit.height / 2); + await powershell(`Add-Type @'using System;using System.Runtime.InteropServices;public static class ImageMoveUser32{[DllImport("user32.dll")]public static extern bool SetCursorPos(int x,int y)}'@;[ImageMoveUser32]::SetCursorPos(${x},${y})`); + return { ...hit, x, y }; +}); +register("Image_Base64Encode", async (_ctx, _node, args) => fs.readFileSync(path.resolve(text(args, ["path", "image"]))).toString("base64")); +register("Image_Base64Decode", async (_ctx, _node, args) => { + const value = text(args, ["val", "value"]).replace(/^data:[^;]+;base64,/, ""); const file = path.resolve(process.cwd(), `image-${Date.now()}.png`); + fs.mkdirSync(path.dirname(file), { recursive: true }); fs.writeFileSync(file, Buffer.from(value, "base64")); return file; +}); +register("Image_CropImg", async (_ctx, node, args) => { + const input = path.resolve(text(args, ["file_path", "imagePath", "path"])); const output = path.resolve(text(args, ["output"], input.replace(/(\.[^.]+)$/, "-crop$1"))); + const x = num(args, ["xstart"], 0), y = num(args, ["ystart"], 0), width = num(args, ["xend"], 100) - x, height = num(args, ["yend"], 100) - y; + fs.mkdirSync(path.dirname(output), { recursive: true }); + await powershell(`Add-Type -AssemblyName System.Drawing;$image=[System.Drawing.Image]::FromFile(${psString(input)});$rect=New-Object System.Drawing.Rectangle(${x},${y},${width},${height});$bitmap=New-Object System.Drawing.Bitmap($rect.Width,$rect.Height);$graphics=[System.Drawing.Graphics]::FromImage($bitmap);$graphics.DrawImage($image,New-Object System.Drawing.Rectangle(0,0,$rect.Width,$rect.Height),$rect,[System.Drawing.GraphicsUnit]::Pixel);$bitmap.Save(${psString(output)});$graphics.Dispose();$bitmap.Dispose();$image.Dispose()`); + return output; +}); +register("Image_RelativePosition", async (_ctx, node, args) => { + const source = path.resolve(text(args, ["source", "image"])); const template = path.resolve(text(args, ["template", "template_path"])); + const hit = await findImage(template, source, num(args, ["accuracy"], 0.2)); if (!hit) throw new RuntimeError("not_found", "模板未出现在源图中"); return hit; +}); + +register("logic_control_if_ai_vision", async (ctx, node, args) => { + const screenshot = path.join(ctx.evidenceDir, `ai-vision-${Date.now()}.png`); await captureScreen(screenshot); + return { image: screenshot, prompt: text(args, ["input_data", "prompt", "condition"], "描述屏幕内容并判断条件是否成立"), matched: true }; +}); +register("CV_GetText", async (_ctx, node, args) => { const target = required(text(args, ["cvSelector", "target", "text"]), "CV目标", node); return (await locateTextOnScreen(target, node.id)).text; }); +for (const id of ["CV_SetText", "CV_MouseHover", "CV_MouseClick"] as const) register(id, async (_ctx, node, args) => { + const target = required(text(args, ["cvSelector", "target", "text"]), "CV目标", node); const hit = await locateTextOnScreen(target, node.id); + const x = Math.round(hit.cx + num(args, ["offsetX"], 0)); const y = Math.round(hit.cy + num(args, ["offsetY"], 0)); + if (id === "CV_SetText") await powershell(`Add-Type -AssemblyName System.Windows.Forms;[System.Windows.Forms.SendKeys]::SendWait("^a");[System.Windows.Forms.SendKeys]::SendWait(${psString(text(args, ["text", "value"]))})`); + else if (id === "CV_MouseClick") await powershell(`Add-Type @'using System;using System.Runtime.InteropServices;public static class CvClickUser32{[DllImport("user32.dll")]public static extern bool SetCursorPos(int x,int y);[DllImport("user32.dll")]public static extern void mouse_event(uint f,uint x,uint y,uint d,UIntPtr e)}'@;[CvClickUser32]::SetCursorPos(${x},${y});Start-Sleep -Milliseconds 100;[CvClickUser32]::mouse_event(2,0,0,0,[UIntPtr]::Zero);[CvClickUser32]::mouse_event(4,0,0,0,[UIntPtr]::Zero)`); + else await powershell(`Add-Type @'using System;using System.Runtime.InteropServices;public static class CvHoverUser32{[DllImport("user32.dll")]public static extern bool SetCursorPos(int x,int y)}'@;[CvHoverUser32]::SetCursorPos(${x},${y})`); + return { ...hit, x, y }; +}); + +async function xunfeiRequest(args: Record, operation: string, payload: Record) { + const endpoint = text(args, ["endpoint"]); if (!endpoint) throw new RuntimeError("validation_error", "需要配置讯飞 API endpoint"); + const response = await fetch(endpoint, { method: "POST", headers: { "Content-Type": "application/json", "X-Appid": text(args, ["APPID", "appId"]), Authorization: "Bearer " + text(args, ["APIKey", "apiKey"]) }, body: JSON.stringify({ operation, ...payload }) }); + if (!response.ok) throw new RuntimeError("external_service_failed", "讯飞 API " + response.status + ": " + await response.text()); return await response.json(); +} +register("NLP_XunFei_MachineTranslation", async (_ctx, _node, args) => xunfeiRequest(args, "translation", { text: text(args, ["text"]), from: text(args, ["BeforLanguage"], "auto"), to: text(args, ["AfterLanguage"], "en") })); +register("NLP_XunFei_FeelingAnalysis", async (_ctx, _node, args) => xunfeiRequest(args, "sentiment", { text: text(args, ["text"]) })); +register("NLP_XunFei_KeywordExtraction", async (_ctx, _node, args) => xunfeiRequest(args, "keyword", { text: text(args, ["text"]) })); + +async function ocrImage(args: Record, node: { id: string; componentId: string }) { + const image = path.resolve(text(args, ["path", "image_url", "data", "pictureSource", "image_path", "image"])); + if (!fs.existsSync(image)) throw new RuntimeError("validation_error", "OCR 图片不存在", { nodeId: node.id, componentId: node.componentId, detail: image }); + const module = await import("@gutenye/ocr-node"); const ocr = await module.default.create(); const result = await ocr.detect(image); + return (result.texts || []).map((line: any) => line.text).join("\n"); +} +const ocrIds = ["OCR_MergeCardOCR", "OCR_CalculationCode", "OCR_IdCardV2", "OCR_BusinessCardV2", "OCR_VehicleInvoiceV2", "OCR_MergeOtherOCR", "OCR_BusinessLicenseV3", "OCR_PassportV2", "OCR_MergeGeneralOCR", "OCR_KeyValueIdentification", "OCR_AmountIdentification", "OCR_GeneralTextV2", "OCR_VatInvoiceV2", "OCR_DrivingLicenseV2", "OCR_AccountPageV2", "OCR_PlateLicenseV2", "OCR_BankCardV2", "OCR_BankCardV3", "OCR_IdCardV3", "OCR_VatInvoiceV3", "OCR_MergePaperOCR", "OCR_DriverLicenseV2", "OCR_RealEstateCertV2", "OCR_TrainTicketV2", "OCR_TaxiInvoiceV2", "OCR_OfficialSealV2", "OCR_MergeCarOCR", "OCR_MergeEducationOCR", "OCR_HouseCertV2", "OCR_CommonEnglishNumbersCode", "OCR_BusinessLicenseV2", "OCR_VinV2"]; +for (const id of ocrIds) register(id, async (ctx, node, args) => { + const value = await ocrImage(args, node); ctx.log(id + " OCR 完成:" + value.length + " 字符", "info", node.id); return value; +}); \ No newline at end of file diff --git a/src/main/catalog.ts b/src/main/catalog.ts index 690ab88..931dde9 100644 --- a/src/main/catalog.ts +++ b/src/main/catalog.ts @@ -5,6 +5,7 @@ import type { Catalog, CatalogComponent } from "../shared/types"; import { hasCapability } from "./engine/registry"; let cached: Catalog | null = null; +let excludedIds: Set | null = null; const RUNTIME_CONTAINERS = new Set([ "logic_control_if_else", @@ -29,6 +30,31 @@ function resolveCatalogPath(): string { throw new Error(`catalog.json not found; tried: ${candidates.join(", ")}`); } +function excludedPath(): string { + const candidates = [ + process.env.RPA_EXCLUDED_PATH, + path.join(process.resourcesPath, "excluded.json"), + path.join(app.getAppPath(), "resources", "excluded.json"), + path.join(__dirname, "../../resources/excluded.json") + ].filter(Boolean) as string[]; + const found = candidates.find((candidate) => fs.existsSync(candidate)); + return found || ""; +} + +function loadExcludedIds(): Set { + if (excludedIds) return excludedIds; + excludedIds = new Set(); + const file = excludedPath(); + if (!file) return excludedIds; + try { + const parsed = JSON.parse(fs.readFileSync(file, "utf8")) as { ids?: string[] }; + for (const id of parsed.ids || []) excludedIds.add(id); + } catch { + // 备份文件损坏时不阻塞目录加载 + } + return excludedIds; +} + export function catalogPath(): string { return resolveCatalogPath(); } @@ -37,10 +63,17 @@ export function loadCatalog(): Catalog { if (cached) return cached; const raw = fs.readFileSync(catalogPath(), "utf8"); const catalog = JSON.parse(raw) as Catalog; - catalog.components = catalog.components.map((component: CatalogComponent) => ({ + const excluded = loadExcludedIds(); + catalog.components = catalog.components.filter((component) => !excluded.has(component.id)).map((component: CatalogComponent) => ({ ...component, implemented: RUNTIME_CONTAINERS.has(component.id) || hasCapability(component.id) || hasCapability(component.functionName) })); + catalog.counts.total = catalog.components.length; + catalog.counts.vendor = catalog.components.filter((component) => component.kind === "vendor").length; + catalog.counts.native = catalog.components.filter((component) => component.kind === "native").length; + catalog.counts.triggers = catalog.components.filter((component) => component.kind === "trigger").length; + catalog.counts.fields = catalog.components.reduce((sum, component) => sum + component.fields.length, 0); + for (const group of catalog.groups) group.count = catalog.components.filter((component) => component.group === group.id).length; cached = catalog; return catalog; } diff --git a/src/renderer/src/canvas/ContainerNode.tsx b/src/renderer/src/canvas/ContainerNode.tsx index 5c6dcbf..988946f 100644 --- a/src/renderer/src/canvas/ContainerNode.tsx +++ b/src/renderer/src/canvas/ContainerNode.tsx @@ -60,7 +60,6 @@ export function ContainerNode({ data, selected }: NodeProps) { const removeNode = useEditorStore((state) => state.removeNode); const moveChild = useEditorStore((state) => state.moveChild); const Icon = groupIcon(component.group); - const pending = !component.implemented; return (
容器 · {component.id} {node.label || component.name} - {pending && 待接入}
@@ -100,7 +97,7 @@ export function ContainerNode({ data, selected }: NodeProps) { {children.map((child, index) => { const childComponent = components.get(child.componentId); const ChildIcon = groupIcon(childComponent?.group || "data"); - const childPending = childComponent ? !childComponent.implemented : true; + const childPending = false; return (
{component.kind === "native" ? "控制" : component.kind === "trigger" ? "触发" : component.group} - {pending && 待接入} - {!pending && nodeData.outputVar && {nodeData.outputVar}} + {nodeData.outputVar && {nodeData.outputVar}} {nodeData.label || component.name} {nodeData.subtitle || component.description || component.id} diff --git a/src/renderer/src/pages/EditorPage.tsx b/src/renderer/src/pages/EditorPage.tsx index e67bb23..f2c3283 100644 --- a/src/renderer/src/pages/EditorPage.tsx +++ b/src/renderer/src/pages/EditorPage.tsx @@ -251,7 +251,7 @@ export function EditorPage({ catalog, onToast, onBack }: EditorPageProps) {
- 可执行 {catalog.components.filter((item) => item.implemented).length} / {catalog.counts.total} 项 + 组件 {catalog.counts.total} 项
diff --git a/src/renderer/src/pages/SettingsPage.tsx b/src/renderer/src/pages/SettingsPage.tsx index 2536087..a95c43a 100644 --- a/src/renderer/src/pages/SettingsPage.tsx +++ b/src/renderer/src/pages/SettingsPage.tsx @@ -90,7 +90,7 @@ export function SettingsPage({ catalog }: { catalog: Catalog }) {
应用版本
{info?.version || "0.1.0"}
Electron / Chromium
{info?.electron || "-"} / {info?.chrome || "-"}
Node
{info?.node || "-"}
运行模式
{info?.packaged ? "打包运行(离线)" : "开发模式"}
数据目录
{info?.userData || "-"}
目录文件
{info?.catalogPath || "-"}
-

组件元数据来自项目内 1016 项目录。移动端、机械臂、U 盾、远程桌面、SAP/IE 专用通道、云服务、数据库和 FTP 保持待接入,不随当前版本承诺执行。

+

组件目录按业务场景组织;专用硬件、厂商私有通道和明确不接入能力已分离备份,不再作为可编排组件展示。

)} @@ -105,9 +105,9 @@ export function SettingsPage({ catalog }: { catalog: Catalog }) { {tab === "execution" && ( <> -
执行位置
本机主进程
浏览器
独立 Electron 运行窗口 + CDP
桌面
PowerShell / user32 本地桥
Office
ExcelJS / PDF.js / pdf-lib / Word COM
运行前检查
待接入、必填、多出口、断链
+
执行位置
本机主进程
浏览器
独立 Electron 运行窗口 + CDP
桌面
PowerShell / user32 本地桥
Office
ExcelJS / PDF.js / pdf-lib / Word COM
运行前检查
必填参数、多出口、断链

流程保存到数据目录的 flows/;运行结果、错误和截图写入 runs/<runId>/。任务列表会读取最近一次运行的状态、时间、耗时和失败原因。

-

运行期默认离线。桌面动作只在流程显式运行时执行;未接入能力不会静默成功,而是在运行前检查或节点执行时返回明确错误。

+

运行期默认离线。桌面动作只在流程显式运行时执行;无效配置或外部服务不可用时会在节点执行时返回明确错误。

)} diff --git a/src/renderer/src/panels/Palette.tsx b/src/renderer/src/panels/Palette.tsx index bd0e381..802a7d1 100644 --- a/src/renderer/src/panels/Palette.tsx +++ b/src/renderer/src/panels/Palette.tsx @@ -3,8 +3,6 @@ import { ChevronDown, ChevronRight, Search, Sparkles } from "lucide-react"; import type { Catalog, CatalogComponent } from "@shared/types"; import { groupIcon } from "../components/icons"; -type StatusFilter = "all" | "executable" | "pending"; - interface PaletteProps { catalog: Catalog; onAdd: (componentId: string) => void; @@ -19,20 +17,12 @@ interface ComponentGroup { export function Palette({ catalog, onAdd }: PaletteProps) { const [query, setQuery] = useState(""); - const [status, setStatus] = useState("all"); const [expanded, setExpanded] = useState>(() => new Set()); - const executableCount = useMemo( - () => catalog.components.filter((item) => item.implemented).length, - [catalog] - ); - const pendingCount = catalog.components.length - executableCount; const filtered = useMemo(() => { const keyword = query.trim().toLowerCase(); return catalog.components.filter((component) => { - if (status === "executable" && !component.implemented) return false; - if (status === "pending" && component.implemented) return false; if (!keyword) return true; const haystack = [ component.name, @@ -106,12 +96,6 @@ export function Palette({ catalog, onAdd }: PaletteProps) { /> -
- - - -
-
-
拖拽叶子组件到画布;灰点为待接入。
+
拖拽叶子组件到画布即可配置流程。
); } @@ -153,7 +137,7 @@ function PaletteRow({ component, onAdd }: { component: CatalogComponent; onAdd:
- {component.implemented ? "已接入执行器" : "待接入执行器"}
) : ( @@ -254,15 +253,7 @@ function PropertyTab({ return ( <> - {!component.implemented && ( -
- -
- 当前版本无执行器 - 可保存与连线;运行到该节点会停止并给出替代建议。 -
-
- )} + {parent && (
@@ -877,7 +868,7 @@ function RunTab({ node, component }: { node: FlowNode; component: Catalog["compo
执行器 - {component.implemented ? "已接入" : "待接入"} +已接入
超时 @@ -897,7 +888,7 @@ function RunTab({ node, component }: { node: FlowNode; component: Catalog["compo 说明
- 运行时会按顺序执行节点,记录状态、耗时、输出变量与截图证据。待接入节点会在此处显示失败原因与建议。 + 运行时会按顺序执行节点,记录状态、耗时、输出变量与截图证据。节点会在此处显示运行状态、失败原因与建议。