# 资管家资产管理 CLI

来源目录：`weaver-e10-ziguanjia`，内容版本未知。本模块把源资料中可安全自动化的能力封装为 `weaver-work-cli asset` 命令，供 AI Agent 通过结构化 JSON 调用。

源码位于 `src/shortcuts/asset`。命令注册、operation manifest 和业务执行逻辑分离；具体执行逻辑在 `src/shortcuts/asset/operations` 中按 operation class 维护。

面向 Agent 的说明位于 `skills/weaver-e10-ziguanjia`。入口 `SKILL.md` 只负责共享规则和 reference 路由；具体细节拆在 `skills/weaver-e10-ziguanjia/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 托管：读取当前 `weaver-work-cli auth` Profile 的 E10 会话，并调用 eBuilder 自定义接口（`/api/ebuilder/form/formdata/v2/*`）或 ESB 动作流（`/api/esb/server/event/triggerActionFlow`）。Agent 不得在业务 JSON 中传 Cookie、ETEAMSID、Token 或内部控制字段。

## 版本门禁

源资料约定：任何资产查询或写操作前，必须先确认 `zgjasset_search_appver` 存在 `ver_name ≥ V14` 的记录。CLI 在每个写操作中内置门禁，并额外暴露 `asset.gate.check` 供只读校验。门禁未通过时写操作会 STOP，不执行任何资产请求，也不走任何降级路径。

## Agent 入口

优先使用 `asset run <operation>`：

Windows PowerShell：

```powershell
weaver-work-cli asset schema
weaver-work-cli --json asset run asset.list --input-json '{"page_size":10}'
```

macOS/Linux（bash/zsh）：

```bash
weaver-work-cli asset schema
weaver-work-cli --json asset run asset.list --input-json '{"page_size":10}'
```

成功和失败都使用 JSON envelope。成功写 stdout；失败写 stderr，并设置非 0 退出码。

当前输出层是完整 JSON 直接写 stdout，不提供飞书 CLI 的 `--jq`、`--format table/ndjson` 或通用 `--page-all`。Agent 使用时应默认小页读取和摘要渲染：列表先 `page_size=10`，按 `page_no` 继续；回复只展示关键字段和数量，超长详情/OCR/调试 JSON 落本地文件后给路径。

## Operation 目录

| Operation | 风险 | 固定规则 |
| --- | --- | --- |
| `asset.gate.check` | 只读 | 版本门禁校验，返回是否通过 |
| `asset.list` | 只读 | 资产台账列表，按 mainTable 字段筛选 |
| `asset.detail` | 只读 | 资产详情，至少传 id / asset_number / asset_name 之一 |
| `asset.uselist` | 只读 | 领用列表，person_id 缺省查当前登录人 |
| `asset.repaillist` | 只读 | 报修列表，person_id 缺省查当前登录人 |
| `asset.purchaselist` | 只读 | 采购申请列表，person_id 缺省查当前登录人 |
| `asset.resolve.location` | 只读 | 按 house_name 解析存放地点 ID |
| `asset.resolve.status` | 只读 | 按 status_name 解析资产状态 ID |
| `asset.resolve.type` | 只读 | 按 type_name 解析资产类型 ID |
| `asset.create` | 高风险写 | eBuilder saveFormData；prepare 返回 continuation |
| `asset.update` | 高风险写 | eBuilder updateFormData；prepare 返回 continuation |
| `asset.use` | 高风险写 | ESB 动作流领用；prepare 返回 continuation |
| `asset.return.query` | 写前只读 | ESB 动作流查询可归还候选 |
| `asset.return.create` | 高风险写 | ESB 动作流归还；prepare 返回 continuation |
| `asset.repair.query` | 写前只读 | ESB 动作流查询报修候选 |
| `asset.repair.create` | 高风险写 | ESB 动作流报修；prepare 返回 continuation |
| `asset.purch` | 高风险写 | ESB 动作流采购申请；prepare 返回 continuation |
| `asset.depre` | 高风险写 | 折旧设置读取 + 预检 + 任务创建；prepare 返回 continuation |

暂未暴露：资产调拨（`asset.transfer`）、流程审批（`asset.approve`）、图片上传（`asset.file.upload`）。原因见 `skills/weaver-e10-ziguanjia/references/ziguanjia-disabled-capabilities.md`。

## 常用命令

```text
weaver-work-cli --json asset run asset.gate.check --input-json '{}'
weaver-work-cli --json asset run asset.list --input-json '{"page_size":10}'
weaver-work-cli --json asset run asset.resolve.type --input-json '{"type_name":"EXAMPLE_TYPE"}'
weaver-work-cli --json asset run asset.create --input-json '{"asset_name":"EXAMPLE_ASSET","asset_type_browse":"EXAMPLE_TYPE_ID"}'
weaver-work-cli --json asset run asset.create --input-json '{"continuation":"PREPARE_CONTINUATION","confirm":true}'
```

## 编辑白名单

写操作的 `prepare` 阶段只接受 manifest 已声明字段；其中：

- `asset.update` 的 `changes` 只允许：`asset_name`、`stateid`、`admin_istrator`、`resourceid`、`location_browse`、`unit_price`、`value`。
- `asset.create` 不接受 `id`、内部控制字段或文件上传；图片仅接受已上传得到的裸 `file_id`。
- 所有写操作都不接受 `Cookie`、`ETEAMSID`、`token`、`sedit`、`app_key`、`app_secret`、`access_token` 等内部控制/凭据字段（CLI 会在输入层拒绝）。

写请求已发送后如遇网络中断、部分成功或回查失败，CLI 返回 `partial/write_uncertain`，Agent 禁止自动重复提交。
