# 合同借阅车：列表与加入

- `archive-oa.borrow-car.list` / `archive-oa.qys.borrow-car.list`：查看借阅车。
- `archive-oa.borrow-car.add.prepare` → `archive-oa.borrow-car.add.apply`：加入借阅车（写操作）。
- `archive-oa.qys.borrow-car.add.prepare` → `archive-oa.qys.borrow-car.add.apply`：契约锁加入借阅车（写操作）。

## 命令

Windows PowerShell：

```powershell
weaver-work-cli archive-oa borrow-car list
weaver-work-cli archive-oa borrow-car add-prepare --data-ids "PLACEHOLDER_ID_1,PLACEHOLDER_ID_2"
weaver-work-cli archive-oa borrow-car add-apply --continuation "<prepare 返回的 continuation>" --yes
```

macOS/Linux（bash/zsh）：

```bash
weaver-work-cli archive-oa borrow-car list
weaver-work-cli archive-oa borrow-car add-prepare --data-ids "PLACEHOLDER_ID_1,PLACEHOLDER_ID_2"
weaver-work-cli archive-oa borrow-car add-apply --continuation "<prepare 返回的 continuation>" --yes
```

契约锁链路加 `--source qys`（`add-prepare` / `add-apply` / `list` 均支持）。

## 输入

| operation | 输入 | 说明 |
| --- | --- | --- |
| `.borrow-car.list` | `pageNo`（缺省 1） | 分页查看借阅车 |
| `.borrow-car.add.prepare` | `dataIds`（字符串数组，≤6） | 合同数据行 ID，来自合同查询 `rows[].id` |
| `.borrow-car.add.apply` | `continuation`、`confirm` | continuation 来自 prepare；`confirm` 必须为 `true` |

## 两套链路的固定项（各自独立，禁止交叉）

| 固定项 | 泛微商务合同 | 契约锁协作采纳 |
| --- | --- | --- |
| 列表 operation | `archive-oa.borrow-car.list` | `archive-oa.qys.borrow-car.list` |
| 加入 operation | `archive-oa.borrow-car.add.prepare` → `.apply` | `archive-oa.qys.borrow-car.add.prepare` → `.apply` |
| `dataIds` 来源 | `archive-oa.contract.list` 的 `rows[].id` | `archive-oa.qys.contract.list` 的 `rows[].id` |
| 合同号字段 | `hth`（泛微） | `hth`（契约锁，同名不同源） |
| 单次条数上限 | 6 | 6 |
| 展示列 | 按 `borrow-car.list` 返回字段原样展示 | 按 `qys.borrow-car.list` 返回字段原样展示 |

`dataIds` 只能取对应链路自己 `contract.list` 的 `rows[].id`：**不得把泛微行 ID 传给契约锁加入借阅车**（反之亦然），也不得用合同号代替行 ID。

## 加入借阅车直接执行（免确认）

加入借阅车是**临时中间操作**：只为后续发起借阅做铺垫，本身不产生最终业务结果（真正的借阅要在界面发起并提交）。因此**不要求用户确认**，Agent 直接连跑 `prepare` → `apply`，减少来回交互：

1. `prepare` 只做校验与回查（查一次借阅车现状），**不写数据**；返回值里 `preview.count` 是待加入条数，`preview.borrowCarBefore` 是加入前借阅车条数。
2. **直接执行 `apply`**（带 `continuation` 且 `confirm: true`，CLI `--yes`），**不停下来等用户确认**。
3. 执行后简要回报：加入了几条、借阅车现有条数，并提醒用户在界面勾选对应记录发起借阅。
4. `failNum > 0` 时按部分成功向用户说明成功条数与失败 ID，不自动重放。

## 失败处理

| 场景 | 处理 |
| --- | --- |
| `id_list_too_many` | 超过 6 条，提示用户缩减后重试 |
| `id_list_invalid` | ID 必须是数字，检查是否误传了合同号或整行对象 |
| `confirmation` / `continuation_required` | 缺少 continuation 或票据失效，重新走 prepare → apply（免确认） |
| `continuation_context_mismatch` | 环境或登录账号变了，重新执行 prepare |
| `partial` / `write_uncertain` | 停止，向用户说明部分成功，不自动重放 |

## 输出处理

- **展示列固定为 6 列**（取自 `borrow-car.list` 的 `meta.columns`）：合同号 `hth`、签约客户 `htmc`、分部 `fb`（`0` = 泛微、`1` = 契约锁）、`daxtbs`、发票号 `fph`、银行回单 `yhhd`（接口未返回该字段时显示 `—`）。**不展示「操作」列**（界面上的「删除」按钮属界面动作，CLI 不提供删除能力）。
- 其余返回字段（`id`、`form_data_id`、`form_table_id`、`ebrecord_rowkey`、`rowKey`、`name`、`create_time`、`update_time`、`data_status`、`data_status_value`、`is_flow`、`isFollow`）**不展示**；`id` 只作 `dataIds` 入参。
- 加入借阅车成功后，**直接重新查询并展示当前借阅车列表**，不必再问用户要不要看。
- 两套链路展示列**不得混用**：契约锁以 `archive-oa.qys.borrow-car.list` 的 `meta.columns` 为准。
- **禁止翻页**：只查 `pageNo=1`，不请求后续页；单次最多展示 20 条，超过时说明总数。
- 结果默认用 Markdown 表格输出（第一列「序号」从 1 递增，分隔行 `| :---: |` 居中）。

借阅车记录的移除与编辑能力尚未收录，见 `references/disabled-capabilities.md`。
