PRA-only-demo/README.md

89 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# RPA Studio
画布式 RPA 桌面端(Electron + React Flow)。把 1016 项能力目录拖到画布上,连线、配置、运行,生成可执行的 RPA 流程。
> 当前状态:任务优先的编排工作台。默认进入“编排”任务列表,编辑任务后进入上下流向画布;组件库按分类树展示,设置为独立入口。
> 可执行能力持续接入中:**655 / 1016**(网页自动化、桌面自动化、数据、文件、办公、HTTP 等),其余灰标「待接入」,运行前检查会提前定位。
## 已实现
### 编排与运行
- Electron 31 + React 18 + TypeScript + React Flow 画布
- 1016 项组件目录:搜索 / 11 组筛选 / 可执行与待接入状态;任务列表实时刷新
- 拖拽到画布、节点卡片、连线、缩放/平移/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,中文安全)
### 质量与测试
- 全量测试 162 项(能力注册冒烟、流程运行集成、Word/Excel/PDF/桌面桥真实设备测试)
- 本地演示站(`127.0.0.1:17863`):网页订单页 + 网页元素演练场(表单/下拉/勾选/密码/禁用按钮/悬停/长页面)
- 内置 3 个网页自动化测试任务(浏览器导航、元素读写、滚动与 Cookie)+ 6 条固定示例任务
- 打包冒烟测试:跳过单实例锁隔离启动,验证产物可用性
## 开发
```powershell
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 现状分析、实施方案
```
## 文档
- [现状分析与可行性](docs/01-现状分析与可行性.md)
- [实施方案(三天)](docs/02-实施方案.md)
## 边界
- 1016 项目录中当前 655 项可执行;未接入的主要为:图表数据读取(ECharts)、下载对话框处理、异常监控组件、桌面 Ground 剩余变体、SAP 专用等。运行前检查会提前定位待接入组件、必填参数、多出口与断链节点。
- 内置本地演示站默认监听 `127.0.0.1:17863`;新用户首次启动会获得“本地网页订单演示”任务,可离线验证网页输入、点击和文本读取。
- 编排首页提供“安装示例任务”,可安装网页订单、文件文本、Excel读写、剪贴板、Word文档和异常分支 6 条固定示例;重复安装会更新同名示例,不会无限复制。
- Tauri/WebView2 类应用的 UIA 支持天然受限(Invoke 假成功、ValuePattern 读回掩码):桌面元素点击采用“前台化 + 真实坐标点击”策略,输入采用“ValuePattern 写入 + 剪贴板粘贴兜底”。
- 不包含厂商代码、二进制、模型或前端资产;目录是从厂商元数据派生的静态定义。
- 运行期不访问云服务;HTTP/邮件属于用户显式配置的外部系统。