返回 Skill 列表
extension
分类: 其它无需 API Key

oa-workflow-test

泛微E9 OA系统通用流程自动化技能。支持登录OA、提交各类审批流程(邮箱申请等)、查看审批状态。当用户说「OA系统走一个流程」「OA提交申请」「OA邮箱创建」「OA查看审批」时必须使用此技能。依赖 bua + agent-browser,首次使用需提供OA账号密码并长期保存。本技能设计为可扩展,后续会持续加入新流程支持。

person作者: user_04e04dfbhubcommunity

OA系统通用流程自动化技能

通过 bua + agent-browser 自动化操作泛微E9 OA系统,支持登录、表单填写、流程提交、审批状态查询等操作。


⚠️ 前置检查(每次触发必须执行)

检查1:bua + agent-browser 是否已安装

which bua 2>/dev/null && bua --version
which agent-browser 2>/dev/null && agent-browser --version

如果 bua 未安装:

npm install -g bua
bua doctor

如果 agent-browser 未安装:

npm install -g agent-browser
agent-browser install --with-deps

安装后再次验证版本号。如果安装失败,停止执行并告知用户手动安装。

如果 bua 和 agent-browser 均已安装: 执行健康检查:

bua doctor

确认 chrome_alive: true,否则执行 bua open --url "about:blank" 启动浏览器。

检查2:OA账号密码是否已保存

从长期记忆(memory_recall)中检索 OA 账号信息,搜索关键词:OA账号OA系统账号

如果记忆中存在账号密码: 直接使用,跳过询问。

如果记忆中不存在,必须向用户询问:

🏢 首次使用 OA 流程技能,请提供以下信息:

  • OA 系统登录账号:
  • OA 系统登录密码:
  • OA 系统地址(如无特殊说明,默认为 http://oa.example.com:8080/):

账号密码将长期保存,后续无需重复提供。

用户回复后,保存到长期记忆:

category: entity
importance: 0.95
text: OA系统登录凭证:账号=<用户提供的账号>,密码=<用户提供的密码>,地址=<用户提供的地址>

同时更新 MEMORY.md 的账号信息部分。


核心配置

| 配置项 | 来源 | 默认值 | 说明 | |---|---|---|---| | OA_ACCOUNT | 长期记忆 / 用户输入 | (空) | OA系统登录账号 | | OA_PASSWORD | 长期记忆 / 用户输入 | (空) | OA系统登录密码 | | OA_URL | 长期记忆 / 用户输入 | http://oa.example.com:8080/ | OA系统地址 | | OA_SESSION | 自动获取 | - | bua session ID |

流程ID速查

各流程的 workflowid 不同,首次使用时需确认对应公司的流程ID。已知的流程ID记录在 references/workflow_ids.md 中。

获取方式:登录OA后,在流程管理页面搜索流程名称,从URL或接口获取 workflowid。


通用操作步骤

第1步:登录OA系统

bua open --url "<OA_URL>"
sleep 2
bua snapshot --interactive

找到账号输入框、密码输入框、登录按钮的 ref:

bua fill @<账号框ref> "<OA_ACCOUNT>"
bua fill @<密码框ref> "<OA_PASSWORD>"
bua click @<登录按钮ref>
sleep 3

校验登录成功:

bua snapshot --interactive

页面出现菜单栏(门户、流程、人事等)即表示登录成功。如仍在登录页,提示用户确认账号密码。

第2步:打开流程表单

⚠️ 重要:不要通过门户菜单导航! 泛微E9的SPA路由+iframe加载机制导致菜单方式不可靠。

正确方式:直接跳转 AddRequest.jsp

bua goto "<OA_URL>workflow/request/AddRequest.jsp?workflowid=<流程ID>&isagent=0"
sleep 4
bua snapshot --interactive

校验标题包含"创建"字样,确认表单页面已正确加载。

如果页面跳转到门户首页(session失效): 重新执行第1步登录。

第3步:填写表单

每次操作前先 snapshot 获取最新 ref(ref 在DOM变化后会重新分配):

bua snapshot --interactive

通用填写原则

  1. 下拉选择:click combobox → snapshot → click menuitem
  2. 文本输入:fill @ref "内容"(替换);type @ref "内容"(追加)
  3. 人员选择:click输入框 → fill姓名 → 等待弹出候选列表 → snapshot → click精确匹配项
  4. 自动带出字段:选择人员后,性别/手机号/部门等字段会自动填充,无需手动操作

人员选择器操作细节

# 点击姓名输入框旁的搜索按钮
bua click @<搜索按钮ref>
sleep 1

# 在弹出的人力资源对话框中输入姓名
bua snapshot --interactive
bua fill @<搜索输入框ref> "张三"
bua press Enter
sleep 2

# 查看候选列表,选择精确匹配项
bua snapshot --interactive
bua click @<精确匹配的listitem ref>   # 注意区分"张三"和"张三(兼)"
sleep 2

第4步:提交流程

bua snapshot --interactive    # 重新获取提交按钮 ref
bua click @<提交按钮ref>
sleep 3

校验提交成功:

bua tabs list
  • URL 从 iscreate=1 变为包含 requestid=数字 → 提交成功
  • 页面标题去掉"创建-"前缀 → 提交成功

如果提交后页面未跳转: 重新 snapshot 检查是否有确认弹窗或必填字段未填。

第5步:截图保存并反馈

bua screenshot
# 截图默认保存到 /root/.agent-browser/tmp/screenshots/
# 复制到用户目录
cp <截图路径> /root/.openclaw/workspace/arkdrive_user_uploads/oa_<流程名>_<日期>.png

通过 message 工具将截图推送给用户,并附上流程信息摘要。

第6步:查看审批状态(可选)

如需查看流程流转到谁审批:

bua snapshot --interactive
bua click @<流程状态 tab ref>
sleep 2
bua snapshot --interactive

读取审批节点信息,反馈给用户:当前节点、操作人、操作状态。


已支持流程

流程1:企业邮箱账号新增/调整/关闭申请

触发条件: 用户说"OA走一个邮箱创建流程"、"OA邮箱申请新增/调整/关闭"

必填参数:

| 参数 | 变量名 | 说明 | 示例 | |---|---|---|---| | 申请类型 | apply_type | 新增 / 调整 / 关闭 | 新增 | | 姓名 | name | 申请人姓名(OA通讯录中的名字) | 张三 | | 英文名 | english_name | 邮箱英文名 | sam |

可选参数: 所属公司(决定workflowid)

表单填写步骤:

  1. 选择类型(combobox → 新增/调整/关闭)
  2. 填写姓名(人力资源弹窗搜索 → 选择精确匹配项)
  3. 填写英文名(直接fill)
  4. 性别/手机号/部门/岗位自动带出,确认即可
  5. 点击"提 交"

详细SOP参见 references/email_apply_sop.md


故障排查

| 问题 | 原因 | 解决方案 | |---|---|---| | bua/agent-browser 未找到 | 未安装 | npm install -g bua agent-browser && agent-browser install --with-deps | | bua doctor 显示 chrome_alive: false | Chrome未启动 | bua open --url "about:blank" 启动浏览器 | | 登录后停留在登录页 | 账号密码错误 | 确认凭证后重试,必要时更新长期记忆 | | AddRequest.jsp 页面跳转到门户 | Session失效 | 重新登录后再打开 | | goto后bua报"no window" | session断连 | bua open 重新创建session | | 姓名搜索无候选 | 输入太短或姓名不存在 | 多输几个字或确认姓名是否在OA通讯录中 | | 提交后页面未跳转 | 必填字段未填或有确认弹窗 | snapshot检查必填项和弹窗 | | 提交后snapshot报session丢失 | 已知问题 | bua tabs listbua tabs switch T1 → 重试snapshot | | submenu无法展开 | hover渲染机制 | 不要用菜单导航,用AddRequest.jsp直链 | | iframe显示about:blank | OA前端bug | 使用AddRequest.jsp直链绕过 |


扩展指南

本技能设计为可扩展架构,新增流程只需:

  1. 在「已支持流程」章节添加新流程条目
  2. references/ 目录下创建对应的SOP文件(如 references/leave_apply_sop.md
  3. references/workflow_ids.md 中补充新流程的workflowid
  4. 更新 SKILL.md 中的 description 字段,加入新流程的触发关键词

注意事项

  1. 前置检查不可跳过: 每次触发必须检查 bua + agent-browser 安装状态和 OA 凭证。
  2. 凭证长期保存: 用户首次提供的账号密码通过 memory_store 永久保存。
  3. 登录态复用: bua 保持 session,同一会话内无需重复登录;session过期时重新登录。
  4. ref 时效性: DOM变化后ref重新分配,操作前必须重新snapshot。
  5. 人员选择精确匹配: 注意区分同名人员(如"张三"和"张三(兼)")。
  6. 不要使用菜单导航: 泛微E9的SPA+iframe机制不可靠,始终用直链。
  7. bua优先原则: 浏览器操作优先使用bua,bua不可用时降级到browser工具。