Go to file
2026-11-03 14:14:17 +08:00
build build: 采用electron-builder标准NSIS安装器 2026-10-28 09:53:30 +08:00
docs docs: 报告修复状态补提交号 2026-11-02 14:53:58 +08:00
resources refactor: 屏幕截图冗余区域字段收敛(action/position_img 并入截图区域), 仅框选区域模式显示 2026-11-03 14:13:07 +08:00
scripts fix: 窗口组件条件字段渲染+选窗口按钮; imageSelector加文件浏览与屏幕截取; prompt()改confirm(); 后端窗口selector统一读取所有标题字段; 新增桌面键鼠人工验收流程与E2E脚本 2026-11-03 13:12:29 +08:00
src Merge branch 'main' of http://43.140.215.244:7040/wangyukun/PRA-only-demo 2026-11-03 14:14:17 +08:00
.gitignore feat: 新增本地UI模型AI拾取与识别实验台 2026-11-02 11:55:36 +08:00
electron-builder.config.mjs feat: enhance AI pane picking with OCR and cancellable hotkeys 2026-11-02 14:21:19 +08:00
electron.vite.config.ts feat: 新增本地UI模型AI拾取与识别实验台 2026-11-02 11:55:36 +08:00
package-lock.json feat: 新增本地UI模型AI拾取与识别实验台 2026-11-02 11:55:36 +08:00
package.json feat: 新增本地UI模型AI拾取与识别实验台 2026-11-02 11:55:36 +08:00
README.md feat: deduplicate capability palette 2026-11-02 13:08:03 +08:00
tsconfig.json feat: 画布式 RPA 桌面端 Day1(1016 目录/画布/容器/属性/持久化) 2026-10-26 14:38:17 +08:00

RPA Studio

画布式 RPA 桌面端(Electron + React Flow)。把 658 项主能力拖到画布上,连线、配置、运行,生成可执行的 RPA 流程。

当前状态:任务优先的编排工作台。默认进入“编排”任务列表,编辑任务后进入上下流向画布;组件库按分类树展示,设置为独立入口。 当前可编排能力:658 / 894(122 项不接入和 236 项重复旧版本已分离;网页、桌面、数据、文件、办公、HTTP 等主能力可直接编排)。

已实现

编排与运行

  • Electron 31 + React 18 + TypeScript + React Flow 画布
  • 658 项主能力目录:搜索 / 11 组筛选;236 项重复旧版本自动隐藏,122 项专用能力已分离备份;任务列表实时刷新
  • 拖拽到画布、节点卡片、连线、缩放/平移/MiniMap、框选、撤销/重做
  • IF / 计次循环 / 遍历 / 条件循环 / 异常捕获 容器:可把组件拖入分支或循环体
  • 属性面板:按字段类型渲染输入、必填、变量、失败策略(超时/重试/间隔/跳过/延时)
  • 流程 JSON 本地原子保存、自动保存、重启恢复;保存冲突检测——磁盘被外部修改时弹窗选择“加载磁盘版”或“覆盖磁盘”,不再静默互相覆盖
  • 运行中心:节点进度、运行日志(分级过滤/复制/导出)、运行变量查看
  • 任务列表忽略备份文件;编排页与运行页骨架分离

网页自动化(Electron 内置浏览器 + CDP 可信输入)

  • 浏览器:打开/关闭/切换标签、跳转/后退/前进/刷新、等待加载/停止加载、最大化/最小化
  • 信息获取:URL、Title、网页源码、Cookies 读写、浏览器截图、滚动条读写
  • 元素操作:点击、输入、密码框、下拉选择、勾选框、相似元素列表/数组、元素对象与信息、父/子/兄弟元素、文本/值/属性/源码读取、存在判断、按钮可用性、滚动到元素、鼠标悬停、元素截图、元素坐标
  • 执行 JS(多版本)、文件上传(CDP 直塞文件输入框,绕开原生对话框)
  • 网页数据表格写入(按行列号精确覆盖)
  • 可信输入机制参考 C:\rpa-demo:CDP Input、唯一定位、遮挡检查和输入回读校验;不使用 el.click() 伪造点击

桌面自动化(Ground 系列,PowerShell + UIA 桥)

  • 桌面元素点击(前台化 + AttachThreadInput 强制前台 + 真实鼠标坐标点击)、文本输入(ValuePattern + 剪贴板粘贴兜底)、元素存在判断、文本读取、等待元素
  • 窗口自动唤起:EnumWindows 跨虚拟桌面查找 → ShowWindow 还原 → 移回主屏可视区
  • Per-Monitor DPI 感知:多屏混合缩放下坐标不错位
  • 隐式等待重试:元素未就绪时 4 秒内自动重试
  • 底层统一走 PowerShell + UIAutomation(EncodedCommand,中文安全)

AI 与离线 OCR(可选自配)

  • AI 文本能力:文本生成 / 纠错 / 审核 / 关键词 / 对话 / 模型调用 / 文档比对等,通过设置页配置的 OpenAI 兼容服务接入
  • 离线 OCR:图像识别 / 表格识别(含坐标)走本地模型,无需联网

质量与测试

  • 全量测试 231 项(能力注册冒烟、流程运行集成、组件缺陷回归、测试流程包与安装保护、Word/Excel/PDF/桌面桥真实设备测试)
  • 应用与系统 50 项组件验收:13 组任务、75 个用例,含真实执行与人工确认项
  • 本地演示站(127.0.0.1:17863):网页订单页 + 网页元素演练场(表单/下拉/勾选/密码/禁用按钮/悬停/长页面)
  • 内置 3 个网页自动化测试任务(浏览器导航、元素读写、滚动与 Cookie)+ 6 条固定示例任务
  • 打包冒烟测试:跳过单实例锁隔离启动,验证产物可用性

开发

npm install
npm run dev:local        # 使用 RPA_ELECTRON_DIST 或 C:\electron-rpa\dist 的 Electron
# 或
npm run build
node scripts/start.mjs --no-sandbox
npm run test:e2e       # 隔离启动应用并执行本地网页订单完整流程

为什么需要 dev:local:当前工作区 D:\RPA 的 ACL 会让 Electron 自带的 Chromium 沙箱启动失败(--version 都返回 0x80000003)。 把 Electron 运行时放在工作区外(例如 C:\electron-rpa\dist)即可正常启动;打包产物解压到普通目录后不受影响。 --no-sandbox 仅用于本地调试,不作为产品默认。

目录

src/main            主进程:窗口、目录加载、流程存储、IPC
src/main/browser    运行浏览器会话(BrowserSession,CDP 桥)
src/main/capabilities 能力实现(网页/桌面/数据/文件/办公/HTTP…)
src/main/fixture    本地演示站
src/preload         白名单桥
src/renderer        React UI:画布、组件库、属性面板、运行/设置页
src/shared          主/渲染共享类型
scripts             build-catalog / dev-safe / start / cdp-probe / 打包冒烟
resources           catalog.json(1016 项派生元数据)、夹具站(含元素演练场)、桌面桥
docs                现状分析、实施方案

文档

边界

  • 原始目录 1016 项中,894 项未被排除;其中 658 项主能力进入组件库,236 项重复旧版本在 resources/capability-duplicates.json 中标记兼容隐藏,122 项专用/厂商硬件/门户通道在 resources/excluded.json 中备份。组件库不显示接入状态。
  • 内置本地演示站默认监听 127.0.0.1:17863;新用户首次启动会获得“本地网页订单演示”任务,可离线验证网页输入、点击和文本读取。
  • 编排首页提供“安装示例任务”,可安装网页订单、文件文本、Excel读写、剪贴板、Word文档和异常分支 6 条固定示例;重复安装会更新同名示例,不会无限复制。
  • Tauri/WebView2 类应用的 UIA 支持天然受限(Invoke 假成功、ValuePattern 读回掩码):桌面元素点击采用“前台化 + 真实坐标点击”策略,输入采用“ValuePattern 写入 + 剪贴板粘贴兜底”。
  • 不包含厂商代码、二进制、模型或前端资产;目录是从厂商元数据派生的静态定义。
  • 运行期不访问厂商云服务;HTTP、邮件与 AI 能力属于用户在设置页显式配置的外部系统(OpenAI 兼容服务)。