下载地址
https://api.skillhub.cn/api/v1/download?slug=%40user_ab9d114c%2Fyoa-audit-manager将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_ab9d114c/yoa-audit-manager。泛微E9-OA审批SKILL,需要输入域名并使用扫码登录
阅读全文 (展开查看完整说明)
概述
OA 审单(oa-audit-cli)
通过 oa-audit-cli 登录泛微 E-cology OA,企微扫码登录。
安装:[SETUP.md](./SETUP.md) · 常见问题 / 反模式:[FAQ.md](./FAQ.md) · 详细参考:[AGENT-REFERENCE.md](./AGENT-REFERENCE.md)
文档导航
| 文档 | 适合谁 | 内容 |
|---|---|---|
| Quick Start + 命令路由(下文) | 新手、Agent 首次路由 | 登录、待办/已办/抄送命令表 |
| [SETUP.md](./SETUP.md) | 安装与扫码登录 | CLI 入口、stderr 阶段、Cookie 导入 |
| [FAQ.md](./FAQ.md) | 报错排查 | 命令混用、tabid/view、展示摘要、审批门禁 |
| [AGENT-REFERENCE.md](./AGENT-REFERENCE.md) | 复杂场景 | 详情 page 结构、profile、monitor 对照 |
| [Agent 防幻觉](#agent-防幻觉必读) | Agent | 核心路由禁令(与 FAQ 互补) |
阅读路径:命令路由表 → 执行业务命令 → 出问题先查 FAQ。
Quick Start
cd skills/oa-audit-manager
cp .env.example .env
python3 -m pip install -r requirements.txt
# Agent 在对话中向用户收集 OA 域名后:
oa-audit-cli --base-url https://<用户提供的OA域名> login
oa-audit-cli session --probe
oa-audit-cli workflow-todo-detail登录态:.oa/cookies.json;二维码:.oa/qrcode.png。
SkillHub / zip 分发包:不含 bin/;执行命令时用 python3 cli/oa_audit_cli.py 代替 oa-audit-cli(见 [SETUP.md](./SETUP.md))。
首次同步(推荐)
登录成功后执行 oa-audit-cli workflow-sync-profiles,从 OA 同步流程类型与展示 profile。使用 workflow-todo(门户 widget)或 doc-guides 前,须配置租户门户参数(见 .env.example 的 OA_WORKFLOW_* / OA_DOC_GUIDE_*)。
命令路由(Agent 先看这张表)
| 用户意图 | 命令 | 输出要求 |
|---|---|---|
| 待办及详情 | workflow-todo-detail | stdout 全文原样,禁止摘要;基于 queryFlowResult 当前待办 |
| 待办仅列表(门户首页) | workflow-todo --format markdown | 仅少量数据;完整列表用 workflow-doing |
| 待办完整列表 | workflow-doing --format markdown | 默认 --view doing(与 OA 待办事宜页一致) |
| 已办仅列表 | workflow-done --format markdown | 默认 --view all;禁止 --view 3(那是 tabid) |
| 已办及详情 | workflow-done-detail | 全文原样;默认第 1 页 + 默认 --with-related |
| 抄送完整列表 | workflow-cc --format markdown | 默认拉取全部;禁止 workflow-todo --tab-id 7 |
| 我发起仅列表 | workflow-my --format markdown | 默认拉取全部;--view 可选未归档/已归档等 |
| 我发起及详情 | workflow-my-detail | 全文原样;默认第 1 页 + 默认 --with-related |
| 抄送详情(自动已读) | workflow-cc-detail --request-id <id> --format page | 读详情后才标记已读;默认 --with-related |
| 单条流程详情 | workflow-detail --request-id <id> --format page | 浏览器式表单 + 8 列审批表;默认嵌套事前(--no-with-related 可关) |
| 仅审批记录 | workflow-flow-log --request-id <id> | 8 列表格;禁止替代「看详情」 |
| 发票 OCR / 核验 | workflow-invoices --request-id <id> | 禁止仅用 attachments |
| 主表附件 | workflow-attachments --request-id <id> | 合同/回单等,非发票首选 |
| 操作指引 | doc-guides --format markdown | 须保留浏览器链接;API 无列表时打开 portalUrl |
| 可审批操作(只读) | workflow-actions --request-id <id> --format markdown | — |
| 同意/驳回 | workflow-operate ... | 默认禁止,见下文门禁 |
| 人员搜索(转发/转办/传阅/加签) | hrm-search --keyword <姓名> | 只读;可选 --request-id 限定范围 |
| 转发/转办/传阅/加签 | workflow-forward-operate ... | 默认禁止,须用户指定流程编号 |
| 流程监控 | workflow-monitor-types / workflow-monitor --format page | — |
| 展示自查 | workflow-display-check | 开发/适配用 |
Agent 防幻觉(必读)
登录失败、命令混用、展示被摘要、审批被拒等报错场景优先查 [FAQ.md](./FAQ.md);本节保留核心路由禁令。
1. 两套 API,禁止混用
| 用户要看 | 正确命令 | 禁止 |
|---|---|---|
| 待办列表 / 待办及详情 | workflow-doing / workflow-todo-detail | workflow-todo(门户首页,条数不全) |
| 已办列表 | workflow-done | workflow-todo --tab-id 3 |
| 我发起列表 | workflow-my | workflow-todo --tab-id 6 |
| 抄送列表 | workflow-cc | workflow-todo --tab-id 7 |
| 单条流程详情 | workflow-detail --request-id <id> --format page | 编造字段或凭记忆填表 |
| 抄送详情 | workflow-cc-detail | workflow-detail(不会标已读) |
workflow-todo 仅用于 OA 门户首页 widget;不是 queryFlowResult 完整列表入口。
2. tabid ≠ viewcondition(高频误用)
| 概念 | 含义 | 示例 |
|---|---|---|
| tabid | OA 页签编号(1/3/6/7) | 已办页 tabid=3 |
| –view | 列表内筛选分组(字符串) | 已办 --view all |
| viewcondition | --view 对应的数字参数 | 已办全部 → 10(不是 3) |
禁止:--view 3(会把 tabid 当成 viewcondition)。已办用 --view all 或 --view done;待办用 --view doing。
3. 「全部」在不同命令下含义不同
| 命令 | 默认 --view | 含义 |
|---|---|---|
workflow-doing | doing | 当前待办(与 OA 待办事宜页一致) |
workflow-doing --view all | — | 全部流程(含历史,条数远多于当前待办) |
workflow-done | all | 已办全部 |
workflow-my | all | 我发起全部 |
条数以 CLI 返回的 itemCount 为准;禁止在回复中写死条数或臆测「应该有几条」。
4. 详情命令怎么选
| 场景 | 命令 | 说明 |
|---|---|---|
| 待办及详情(多条) | workflow-todo-detail | 等价 workflow-doing --view doing --with-detail;默认 --with-related |
| 已办及详情(多条) | workflow-done-detail | 默认仅第 1 页;默认 --with-related |
| 我发起及详情 | workflow-my-detail | 默认仅第 1 页;默认 --with-related |
| 已知 requestId 看一条 | workflow-detail --request-id <id> --format page | 默认嵌套事前;仅需主表时 --no-with-related |
| 抄送看一条 | workflow-cc-detail --request-id <id> --format page | 读后自动标已读;默认 --with-related |
禁止:用 workflow-flow-log 代替「看详情」;用 workflow-attachments 代替发票 OCR。
5. 输出与编造禁令
- 面向用户的列表/详情:必须
--format markdown(或workflow-*-detail专用入口);默认 JSON 仅供程序解析 - 禁止摘要、改写、省略表格;禁止在无 CLI 输出时编造流程内容、审批意见、金额
- 待办中
requestId为空或负数 → 非 OA 表单(如 ehr 绩效),禁止强行workflow-detail - 禁止输出 Cookie;session 失效时直接
login重登,禁止反复向用户索要已在.env的凭据
等价(待办):workflow-todo-detail = workflow-doing --view doing --format markdown --with-detail --detail-format page --with-related。不是 workflow-todo --with-detail。
待办详情(最高优先级)
用户说「看待办」「待办及详情」「待办详情」等 → 必须:
oa-audit-cli workflow-todo-detail禁止:workflow-todo(门户 API,条数不全);workflow-doing 无 --with-detail(只有列表无详情);禁止摘要、改写、省略表格或跳过「审批流转记录」。
Agent 表格呈现(必遵):stdout 已含 Markdown 表格,Agent 须原样输出,禁止改为 bullet 或段落:
- 基础信息 / 申请内容 →
| 字段 | 内容 |双列表格 - 审批流转记录 → 8 列完整表格(禁止「操作人A:同意;操作人B:加签…」式摘要)
每条 OA 待办须含:## 待办详情 N/M、双列字段表、附件/金额汇总(如有)、审批流转记录 8 列表格。
标准工作流
向用户收集 OA 域名(若未配置)→ session --probe → 失效则 login → 业务命令 → 原样输出站点域名(Agent 必做)
OA_BASE_URL 无系统默认值。禁止要求用户手工编辑 .env;须在对话中收集:
| 场景 | Agent 行为 |
|---|---|
| 首次使用 / 未配置域名 | 在对话中询问用户 OA 站点根地址(如 https://oa.example.com),取得后执行 oa-audit-cli --base-url <地址> login(或任意业务命令前加 --base-url) |
| 用户明确要求修改域名 | 再次询问确认后 oa-audit-cli --base-url <新地址> login |
| 已配置域名 | 直接 session --probe / 业务命令;禁止编造或假设默认域名 |
CLI 收到 --base-url 后会自动持久化,用户无需接触 .env 文件。
Login-Check(业务前必做)
oa-audit-cli session --probe| 结果 | 行为 |
|---|---|
| 有效 | 直接执行业务命令 |
| 无效 | 若未配置域名,先向用户询问后 oa-audit-cli --base-url <地址> login;已配置则 oa-audit-cli login(禁止要求用户回复「已扫码」) |
| 轮询中 | 禁止再次 qrcode --fetch-only(会使 loginkey 失效) |
登录注意
login自动拉码 + 轮询;默认弹出二维码预览窗口(跨平台),登录成功后自动关闭- Agent / 对话内嵌(含 Workbuddy):执行
login时禁止加--no-open(仅无 GUI 服务器可用);须用 Read 展示 stderr 中phase=qrcode的imagePath对应当次图片 - 登录进度与结果在 stderr(JSON 行):
phase=qrcode→polling→scanned→success;见到phase=success须立即告知用户「登录成功」;超时见phase=timeout - stdout 仍输出最终 JSON(
sessionValid);Agent 以 stderrphase=success或 stdoutok:true任一为准向用户反馈 - 用户无法扫码 →
import-cookies --probe - 禁止输出 Cookie 明文;禁止编造待办/详情
CLI 命令一览
| 命令 | 说明 |
|---|---|
login | 推荐:拉码 + 轮询直至成功 |
login --skip-qrcode | 仅轮询已有 session(已扫同一次码) |
qrcode --fetch-only | 调试拉码 |
session / session --probe | 检查/探测登录态 |
import-cookies | 浏览器 Cookie 导入 |
workflow-todo | 门户首页 widget(非完整列表;Agent 禁止用于查待办/已办/抄送全量) |
workflow-doing | 待办列表(queryFlowResult tabid=1,默认 --view doing) |
workflow-doing-types | 待办流程类型树 |
workflow-todo-detail | 当前待办 + 浏览器式详情 + 审批记录(默认 --with-related) |
workflow-my | 我发起的流程完整列表(queryFlowResult tabid=6,默认 --all) |
workflow-my-detail | 我发起第 1 页 + 详情(默认 --with-related) |
workflow-my-types | 我发起流程类型树 |
workflow-cc | 抄送完整列表(queryFlowResult tabid=7,默认 --all) |
workflow-cc-detail | 抄送详情 + 审批记录;成功后自动标记已读(默认 --with-related) |
workflow-done | 已办完整列表(queryFlowResult tabid=3,默认 --all) |
workflow-done-detail | 已办第 1 页 + 详情(默认 --with-related) |
workflow-detail | 单条表单详情(--format page 推荐;默认嵌套事前) |
workflow-detail --no-with-related | 单条详情,仅主表链接、不嵌套事前 |
workflow-actions | 可执行操作(只读) |
workflow-operate | 同意/驳回(门禁,默认关闭) |
hrm-search | 人员搜索(转发/转办/传阅/加签选人) |
workflow-forward-operate | 转发/转办/传阅/加签(门禁,默认关闭) |
workflow-flow-log | 仅审批流转记录 |
workflow-invoices | 发票明细行(OCR 必用) |
workflow-attachments | 主表附件列表/下载 |
doc-guides | 操作指引文档库(浏览器链接 + 文档列表) |
workflow-monitor-types | 流程监控类型树 |
workflow-monitor | 流程监控列表 |
workflow-done-types | 已办类型树 |
workflow-form-types | 表单 profile 列表 |
workflow-sync-profiles | 同步 monitor 类型 → wf_* profile |
workflow-display-check | 详情展示自查(--all 全量) |
tabid(页签,勿作 --view):1 待办 · 3 已办 · 6 我发起 · 7 抄送
列表命令:workflow-doing(tabid=1)· workflow-done(tabid=3)· workflow-my(tabid=6)· workflow-cc(tabid=7)
--view 速查:
| 命令 | 默认 view | 常用扩展 |
|---|---|---|
workflow-doing | doing | all/new/viewed(历史筛选,非 OA 页默认) |
workflow-done | all | unfinished/finished/unread;done=all |
workflow-my | all | unfinished/finished/unread |
已办 viewcondition:all/done→10 · unfinished→11 · finished→12 · unread→14。禁止把 tabid 3 当作 viewcondition。
流程详情要点
- 抄送详情 →
workflow-cc-detail --request-id <id> --format page;仅此命令在读完详情后自动标已读;workflow-detail不会标记抄送已读 - 浏览器访问块(必保留) — 每条 OA 流程详情须含以下两行,Agent 原样呈现、禁止省略:
> 浏览器访问:[打开 OA 表单页](https://<OA_BASE_URL>/spa/workflow/static4form/index.html#/main/workflow/req?requestid=<requestId>)
> requestId=`<requestId>` · workflowId=`<workflowId>` · profileId=`<profileId>`JSON 模式读 browserAccessMarkdown 或 detailPageMarkdown 全文;viewUrl 字段同链接。
- 审批记录 → 必须 8 列 Markdown 表格,禁止 bullet 概括
- 附件/发票文件 → 详情
--format page|markdown含 查看/下载 链接列;须已登录 OA 浏览器方可点开 - 本地保存 →
workflow-attachments --download-dir <目录>/workflow-invoices --download-dir <目录> - 操作指引 →
doc-guides --format markdown;须保留浏览器访问链接;API 无列表时引导打开 portalUrl - 发票 →
workflow-invoices;主表 attachments 非发票识别首选(但出差报销等场景可能通过费用说明关联主表附件) - 事前申请 / 关联流程 → 全量流程类型自动扫描关联 browser 字段;所有详情入口默认
--with-related(workflow-todo-detail/workflow-done-detail/workflow-my-detail/workflow-cc-detail/workflow-detail);仅需主表链接时加--no-with-related;以嵌套workflowName为准,禁止假定固定类型 - 关联合同 → 详情自动归入
### 合同信息(无需额外 flag):「是否有合同=否」仅保留开关并隐藏合同明细(本次申请金额可仍显示);有合同时 合同名称挂合同原件查看/下载、合同编号为HT-… · [合同审批单];Agent 禁止省略这些链接(见 [AGENT-REFERENCE.md](./AGENT-REFERENCE.md)) - 未知表单类型 → 读 JSON
formType;isGenericFallback时以原始字段为准 - 默认 stdout 为 JSON;人类可读用
--format markdown或--format page
审批门禁(Agent 必遵)
workflow-operate 与 workflow-forward-operate 默认不可用;Agent 禁止主动审批或转发/转办/传阅/加签。
禁止批量操作(硬性)
每次只能处理用户在对话中明确指定的单条流程编码(如 <流程编号>)。
| 禁止 | 说明 |
|---|---|
| 批量审批 | 不得「全部同意」「待办一并处理」或循环调用 operate |
| 批量转发/转办/传阅/加签 | 不得对多条流程循环调用 forward-operate |
| 未指定流程编码 | 用户未给出流程编号时,禁止任何写操作 |
| 模糊/通配 | 禁止「全部」「批量」或逗号分隔的多条 --request-mark |
| Agent 自行推断 | 禁止从待办列表自行挑选流程执行写操作 |
只读命令(workflow-todo-detail、workflow-detail、workflow-cc(仅列表)、workflow-actions、hrm-search 等)不受此限。抄送标已读须通过 workflow-cc-detail 读详情触发,禁止无详情单独标已读。
单条流程写操作步骤
- 用户须在对话中明确给出一条流程编号
- 展示该条详情 +
workflow-actions(只读);转发类另用hrm-search,等待用户明确确认 .env:OA_APPROVAL_ENABLED=1且该单号在白名单- 同意/驳回仅
approve/reject;禁止--action save - 转发/转办/传阅/加签:
hrm-search→ 若多条人员须用户确认 →workflow-forward-operate --search-keyword ... - 禁止 Agent 自行加
--user-confirmed或--user-confirmed-selection
详见 [AGENT-REFERENCE.md](./AGENT-REFERENCE.md#审批门禁workflow-operate–workflow-forward-operate) 与 [FAQ.md](./FAQ.md#审批写操作)。
环境变量
| 变量 | 说明 |
|---|---|
OA_BASE_URL | 必填;须在对话中向用户收集,经全局 --base-url 传入;禁止要求用户手工编辑 .env |
OA_LANGID | 默认 7 |
OA_QR_POLL_TIMEOUT / OA_QR_POLL_INTERVAL | 扫码轮询 |
OA_WORKFLOW_* | 门户流程 widget 参数(workflow-todo 必填,无内置默认值) |
OA_DOC_GUIDE_* | 操作指引文档库门户(doc-guides 列表模式必填) |
OA_APPROVAL_ENABLED | 1 才允许 operate / forward-operate |
OA_APPROVAL_ALLOWED_REQUEST_MARKS | 允许写操作的流程编号白名单(安全兜底;每次仍须用户在对话指定单条编码) |
打包
npm run pack:oa-audit