# 泛微商务合同档案查询 CLI

来源 Skill：`weaver-e10-archive-oa`。本模块把接口文档中可安全自动化的能力封装为 `weaver-work-cli archive-oa` 命令，供 AI Agent 通过结构化 JSON 调用。

源码位于 `src/shortcuts/archive-oa`。命令注册、`operation manifest` 和业务执行逻辑分离：manifest 由 `operations/registry.ts` 汇总各 operation 定义生成，具体执行逻辑在 `src/shortcuts/archive-oa/operations` 中按业务分组维护（档案定位、合同查询、借阅车、发起借阅）。

面向 Agent 的说明位于 `skills/weaver-e10-archive-oa`。入口 `SKILL.md` 只负责共享规则和 reference 路由；具体细节拆在 `skills/weaver-e10-archive-oa/references/`，与飞书 CLI 的业务 Skill 组织方式保持一致。

## 公共前置

先通过 E10 鉴权模块登录：

```text
weaver-work-cli auth login --base-url "https://weapp.xxx.cn" --agent_type "<当前智能体名称>"
weaver-work-cli auth status --no-check
```

每个业务请求由 CLI 托管：

1. 读取当前 `weaver-work-cli auth` Profile 的 E10 会话。
2. 请求只允许 `/api/`（ebuilder 业务接口）与 `/openserver/`（E10 开放服务）路径，由 CLI 携带 E10 Cookie/ETEAMSID 与必要的业务头。
3. 响应按以下规则判定业务成功：ebuilder 列表/ESB 看 `code=200` 与 `status=true`；ebuilder 自定义接口看 `datajson.status`。

Agent 不得在业务 JSON 中传 Cookie、ETEAMSID、Token 或内部控制字段。

## Agent 入口

优先使用 `archive-oa run <operation>`：

Windows PowerShell：

```powershell
weaver-work-cli archive-oa schema
weaver-work-cli --json archive-oa run archive-oa.contract.list --input-json '{"pageNo":1}'
```

macOS/Linux（bash/zsh）：

```bash
weaver-work-cli archive-oa schema
weaver-work-cli --json archive-oa run archive-oa.contract.list --input-json '{"pageNo":1}'
```

复杂或多行 JSON：先写成 UTF-8 文件，再用 `--input <path>`（`--input -` 读 stdin）。不要存在 `~/.tmp` 之类的路径假设；Windows 用 `$env:TEMP`，macOS/Linux 用临时目录。

## operation 划分

| 分组 | operation |
| --- | --- |
| 档案定位 | `archive-oa.archive.locate` |
| 泛微合同 | `archive-oa.contract.list`、`archive-oa.contract.fields` |
| 泛微借阅车 | `archive-oa.borrow-car.list`、`archive-oa.borrow-car.add.prepare`、`archive-oa.borrow-car.add.apply` |
| 契约锁合同 | `archive-oa.qys.contract.list` |
| 契约锁借阅车 | `archive-oa.qys.borrow-car.list`、`archive-oa.qys.borrow-car.add.prepare`、`archive-oa.qys.borrow-car.add.apply` |

| 发起借阅（生成流程页 URL） | `archive-oa.borrow.start.url`、`archive-oa.qys.borrow.start.url` |

**发起借阅由 `archive-oa.borrow.start.url` 生成流程创建页 URL**：`<baseUrl>/sp/workflow/flowpage/fullCreate/100003460000002090?fb=<fb>&data=<JSON>`，`data` 为 `[{hth, htmc, yfhd, fph}]`。该 operation 只读：不写数据、不触发流程、不需要后台应用凭据；URL 可直接在浏览器打开，表单由用户填写并提交。已下线的 `archive-oa.borrow.start.prepare` / `.apply`（OpenESB webhook）不再提供。

## 两套链路的参数差异

| 项 | 泛微商务合同 | 契约锁协作采纳 |
| --- | --- | --- |
| 合同查询 `passid` / `listId` | `850741972510941185` / `850741985437786120` | `850742853046345728` / `1190611964371984450` |
| 借阅车 `listId` | `882393480417296390` | `883819516961857839` |
| 加入借阅车 `esbActionIds` | `882395911377174530` | `892706856573648911` |

## 写操作确认协议

- `*.prepare`：只读回查与参数校验（加入借阅车会查一次借阅车现状），返回 `preview` 与 `continuation`。
- `*.apply`：必须带 `continuation` 且 `confirm: true`（CLI `--yes`）；票据含环境与登录账号指纹，10 分钟有效。
- 发起借阅用 `archive-oa.borrow.start.url` 生成流程页 URL（只读，`risk: read`）：生成后优先用系统默认浏览器打开，无法打开时原样输出完整 URL；流程表单由用户在浏览器确认并提交。OpenESB 版 `borrow.start.prepare` / `.apply` 已下线。
- `failNum > 0` 时返回 `partial / write_uncertain`，不自动重放。

## 参考

- `skills/weaver-e10-archive-oa/SKILL.md`：Agent 路由与执行原则。
- `skills/weaver-e10-archive-oa/references/`：按意图拆分的用法说明。
- `skill-template/domains/archive-oa.md`：业务域 Agent 调优要点。
