@alphalawyer/alpha-classic-cli 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +212 -0
- package/assets/alpha-classic-skill/SKILL.md +60 -0
- package/assets/alpha-classic-skill/references/alpha-classic-appro.md +354 -0
- package/assets/alpha-classic-skill/references/alpha-classic-matter.md +267 -0
- package/assets/alpha-classic-skill/references/alpha-classic-shared.md +43 -0
- package/assets/claude/alpha-classic-cli.md +115 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +4041 -0
- package/dist/index.js.map +1 -0
- package/package.json +39 -0
package/README.md
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
# alpha-classic-cli
|
|
2
|
+
|
|
3
|
+
Alpha Classic CLI 是为 **Alpha 律所管理系统** 开发的 AI-friendly CLI,用来验证 Codex/Claude Code 等 Agent 是否能稳定、安全地通过 CLI 访问 Alpha 业务数据。
|
|
4
|
+
|
|
5
|
+
- CLI 命令能访问 Web 应用 API
|
|
6
|
+
- Codex 能通过 Skill 理解该怎么调用 CLI
|
|
7
|
+
- 登录、诊断、业务查询形成最小闭环
|
|
8
|
+
- 环境在构建时固化,运行时不能切换,避免误连 dev/prod
|
|
9
|
+
|
|
10
|
+
## 安装依赖
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm install
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## 构建
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm run build:dev
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
构建脚本会把环境写入产物:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm run build:local
|
|
26
|
+
npm run build:dev
|
|
27
|
+
npm run build:test
|
|
28
|
+
npm run build:prod
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
当前 dev 环境:
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
baseUrl/apiBaseUrl: https://dev.alphalawyer.cn
|
|
35
|
+
current user API: GET /im/v1/users/me
|
|
36
|
+
auth header: token: <token>
|
|
37
|
+
device header: deviceType: ai
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 运行
|
|
41
|
+
|
|
42
|
+
项目已配置 bin:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
alpha-classic-cli version
|
|
46
|
+
alpha-classic-cli env current
|
|
47
|
+
alpha-classic-cli login
|
|
48
|
+
alpha-classic-cli doctor
|
|
49
|
+
alpha-classic-cli matter search --keyword 合同 --limit 10
|
|
50
|
+
alpha-classic-cli matter search --status 进行中+预立项 --scope 所有项目 --limit 10
|
|
51
|
+
alpha-classic-cli matter detail --id <项目ID> --logs 5
|
|
52
|
+
alpha-classic-cli matter task --id <项目ID> --state 未完成 --limit 20
|
|
53
|
+
alpha-classic-cli appro list --scope my --limit 10
|
|
54
|
+
alpha-classic-cli appro initiators --keyword 张三
|
|
55
|
+
alpha-classic-cli appro detail --id <审批ID>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
`env use` 已移除。只保留 `env list` 和 `env current`;切换环境必须重新构建对应环境版本。
|
|
59
|
+
|
|
60
|
+
源码调试时也可以使用:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
npm run dev -- doctor
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## 登录
|
|
67
|
+
|
|
68
|
+
默认使用 CLI 设备授权登录:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
alpha-classic-cli login
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
CLI 会创建授权、展示 user code 和二维码,并尝试自动打开浏览器。用户在前端确认后,CLI 保存本地 session。最终输出始终是 JSON envelope,且不会输出 token 或 refreshToken。
|
|
75
|
+
|
|
76
|
+
Agent 异步登录建议使用两阶段流程:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
alpha-classic-cli login --no-wait --json
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
把返回的 `data.verification_url` 原样交给用户打开确认。用户确认后执行:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
alpha-classic-cli login --device-code <device_code>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
调试场景暂时保留手动 token fallback:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
alpha-classic-cli login --token <token>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
不要把 token 或 refreshToken 写入回答、日志或 URL。
|
|
95
|
+
|
|
96
|
+
## 安装智能体说明
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
alpha-classic-cli install
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
默认安装 Codex Skill:
|
|
103
|
+
|
|
104
|
+
```text
|
|
105
|
+
~/.codex/skills/alpha-classic-cli/SKILL.md
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
用户也可以选择安装目标:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
alpha-classic-cli install --agent codex
|
|
112
|
+
alpha-classic-cli install --agent claude
|
|
113
|
+
alpha-classic-cli install --agent alphaclaw
|
|
114
|
+
alpha-classic-cli install --agent all
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
卸载智能体说明:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
alpha-classic-cli uninstall --agent codex
|
|
121
|
+
alpha-classic-cli uninstall --agent claude
|
|
122
|
+
alpha-classic-cli uninstall --agent alphaclaw
|
|
123
|
+
alpha-classic-cli uninstall --agent all
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Alpha-claw 安装方式会跟随 CLI 构建环境,例如 dev 构建安装到:
|
|
127
|
+
|
|
128
|
+
```text
|
|
129
|
+
~/.openclaw-devalphaclaw/workspace/skills/alpha-classic-cli/SKILL.md
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Claude Code 安装方式:
|
|
133
|
+
|
|
134
|
+
```text
|
|
135
|
+
~/.claude/alpha-classic-cli.md
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
并在用户级:
|
|
139
|
+
|
|
140
|
+
```text
|
|
141
|
+
~/.claude/CLAUDE.md
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
追加 import:
|
|
145
|
+
|
|
146
|
+
```text
|
|
147
|
+
@~/.claude/alpha-classic-cli.md
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Skill 会引导智能体优先使用稳定 CLI 命令,例如:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
alpha-classic-cli doctor
|
|
154
|
+
alpha-classic-cli login
|
|
155
|
+
alpha-classic-cli version
|
|
156
|
+
alpha-classic-cli matter search --keyword 合同 --limit 10
|
|
157
|
+
alpha-classic-cli matter detail --id <项目ID> --logs 5
|
|
158
|
+
alpha-classic-cli matter task --id <项目ID> --state 未完成 --limit 20
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## 通用智能体对接
|
|
162
|
+
|
|
163
|
+
通用智能体优先读取仓库根目录:
|
|
164
|
+
|
|
165
|
+
```text
|
|
166
|
+
AGENTS.md
|
|
167
|
+
CLAUDE.md
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
也可以通过命令发现 CLI 能力:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
alpha-classic-cli capabilities
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
`capabilities` 输出机器可读 JSON,包含登录流程、环境规则、业务命令、参数和安全边界。
|
|
177
|
+
|
|
178
|
+
## 当前接口
|
|
179
|
+
|
|
180
|
+
当前默认调用:
|
|
181
|
+
|
|
182
|
+
- `GET /im/v1/users/me`
|
|
183
|
+
- `GET /matterserver/api/v1/customFields/dashboard/MATTER_LIST`
|
|
184
|
+
- `POST /matterserver/api/v2/matter/search`
|
|
185
|
+
- `GET /matterserver/api/v2/matters/{matterId}`
|
|
186
|
+
- `GET /notice/v1/dynamics/matters/{matterId}`
|
|
187
|
+
- `GET /taskserver/api/v1/tasks/listTaskByMatter`
|
|
188
|
+
- `GET /taskserver/api/v1/tasks/{taskId}`
|
|
189
|
+
- `GET /taskserver/api/v1/checkitem/{taskId}`
|
|
190
|
+
- `GET /taskserver/api/v1/tasks/attachment/{taskId}`
|
|
191
|
+
- `GET /document-engine/api/v1/dir/list`
|
|
192
|
+
- `GET /taskserver/api/v2/timing/timing/task/{taskId}`
|
|
193
|
+
- `GET /ilaw/api/v2/comment/queryCommentsAndDynamic`
|
|
194
|
+
- `POST /appro/api/v2/approval/search`
|
|
195
|
+
- `GET /appro/api/v2/appros/{approId}`
|
|
196
|
+
- `GET /common/api/v1/file/batch`
|
|
197
|
+
- `GET /user/api/v1/users/listOfficeUser?deleted=0&status=1`
|
|
198
|
+
|
|
199
|
+
接入真实 Web 应用时,优先修改:
|
|
200
|
+
|
|
201
|
+
- `src/commands/matter.ts`
|
|
202
|
+
- `src/commands/appro.ts`
|
|
203
|
+
- `src/http/api-client.ts`
|
|
204
|
+
- `src/config/environments.ts`
|
|
205
|
+
|
|
206
|
+
## 设计原则
|
|
207
|
+
|
|
208
|
+
- 默认输出 JSON envelope,方便 AI 解析。
|
|
209
|
+
- 只支持查询,不执行写操作。
|
|
210
|
+
- 不在终端输出 token。
|
|
211
|
+
- 不接受运行时 baseUrl/apiBaseUrl 参数。
|
|
212
|
+
- Skill 负责告诉 AI 什么时候用哪个命令。
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: alpha-classic-cli
|
|
3
|
+
description: 使用 alpha-classic-cli 查询 Alpha 律所管理系统里的项目、审批等数据。先运行 doctor,优先使用稳定 CLI 命令,不自行猜 REST API。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Alpha Classic CLI 助手
|
|
7
|
+
|
|
8
|
+
当用户询问 Alpha 律所管理系统里的项目、审批等数据时,优先使用 `alpha-classic-cli`。
|
|
9
|
+
|
|
10
|
+
如果用户同时安装了 `e-alpha-cli` 项目的 `agent-assistant` skill 和本项目的 `alpha-classic-cli` skill,必须优先使用 `agent-assistant` 及其通过 `alpha-cli skills update` 拉取的服务端动态 skills;只有在这些 skills 不适用、不可用或明确缺少所需能力时,才使用本项目 skill。
|
|
11
|
+
|
|
12
|
+
## 使用顺序
|
|
13
|
+
|
|
14
|
+
1. 先运行 `alpha-classic-cli doctor` 检查登录状态和环境。
|
|
15
|
+
2. 如果未登录,默认让用户执行 `alpha-classic-cli login`。
|
|
16
|
+
3. 不确定支持哪些能力时运行 `alpha-classic-cli capabilities`。
|
|
17
|
+
4. 根据业务领域读取 `references/*.md`,项目相关读取 `references/alpha-classic-matter.md`,审批相关读取 `references/alpha-classic-appro.md`。
|
|
18
|
+
5. 优先使用明确的业务命令,不要自行拼 REST API。
|
|
19
|
+
|
|
20
|
+
## Agent 异步登录
|
|
21
|
+
|
|
22
|
+
当宿主不适合等待浏览器确认时,先运行:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
alpha-classic-cli login --no-wait --json
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
把返回的 `data.verification_url` 原样交给用户打开确认。用户确认后运行:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
alpha-classic-cli login --device-code <device_code>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`alpha-classic-cli login --token <token>` 仅作为调试 fallback,不作为默认登录路径。
|
|
35
|
+
|
|
36
|
+
## 常用命令
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
alpha-classic-cli doctor
|
|
40
|
+
alpha-classic-cli login
|
|
41
|
+
alpha-classic-cli capabilities
|
|
42
|
+
alpha-classic-cli version
|
|
43
|
+
alpha-classic-cli env current
|
|
44
|
+
alpha-classic-cli matter search --keyword <关键词> --limit 10
|
|
45
|
+
alpha-classic-cli matter search --status 进行中+预立项 --scope 所有项目 --limit 10
|
|
46
|
+
alpha-classic-cli matter detail --id <项目ID> --logs 5
|
|
47
|
+
alpha-classic-cli matter task --id <项目ID> --state 未完成 --limit 20
|
|
48
|
+
alpha-classic-cli appro list --scope my --limit 10
|
|
49
|
+
alpha-classic-cli appro detail --id <审批ID>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## 规则
|
|
53
|
+
|
|
54
|
+
- 输出默认是 JSON envelope,先看 `ok` 判断是否成功。
|
|
55
|
+
- 遇到 `ok: false` 时,先看 `error.hint`。
|
|
56
|
+
- 只做查询,不执行写操作。
|
|
57
|
+
- 不要输出 token 或 refreshToken。
|
|
58
|
+
- 不要猜测不存在的字段、接口或命令。
|
|
59
|
+
- 业务数据优先使用 CLI 清洗后的中文字段,不要反推或暴露后端原始字段。
|
|
60
|
+
- 最终回答默认隐藏内部 ID,例如 `项目ID`、`审批ID`、`任务ID`、`流程任务ID`、`节点ID`、`字段ID`、`文件ID`、`评论ID`、`动态ID`;这些 ID 只给 agent 后续详情查询或定位使用。业务编号如 `项目编号`、`审批编号` 可以展示。
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
# Appro
|
|
2
|
+
|
|
3
|
+
用户询问审批、我审批的、我发起的、抄送我的、全部审批、审批列表、审批状态、审批当前节点等信息时使用本规则。
|
|
4
|
+
|
|
5
|
+
## 查询审批列表
|
|
6
|
+
|
|
7
|
+
默认查询“我审批的”:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
alpha-classic-cli appro list --limit 10
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
查询“我发起的”:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
alpha-classic-cli appro list --scope started --limit 10
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
查询“抄送我的”:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
alpha-classic-cli appro list --scope cc --limit 10
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
查询“全部审批”:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
alpha-classic-cli appro list --scope all --limit 10
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
按关键词查询:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
alpha-classic-cli appro list --scope my --keyword <关键词> --limit 10
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
翻页查询:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
alpha-classic-cli appro list --scope my --page 2 --limit 10
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
查询“待我审批”的数量:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
alpha-classic-cli appro list --scope my --status 待我审批 --count-only
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
查询发起人列表:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
alpha-classic-cli appro initiators --keyword <发起人姓名>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
按发起人查询审批:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
alpha-classic-cli appro list --scope my --starter-id <发起人ID> --limit 10
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## 查询审批详情
|
|
62
|
+
|
|
63
|
+
先通过审批列表拿到 `审批ID`,再查询详情:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
alpha-classic-cli appro detail --id <审批ID> --comments 10
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## 参数规则
|
|
70
|
+
|
|
71
|
+
- `--scope` 可选,支持 `my`/`我审批的`、`started`/`我发起的`、`cc`/`抄送我的`、`all`/`全部审批`,默认 `my`。
|
|
72
|
+
- `--keyword` 可选,用审批重要信息、项目名称等自然语言线索。
|
|
73
|
+
- `--status` 可选,传审批状态码、中文状态名或 `all`;“待我审批”对应 `--scope my --status 待我审批`。
|
|
74
|
+
- `--appro-type` 可选,传审批类型ID,多个用英文逗号分隔。
|
|
75
|
+
- `--starter-id` 可选,发起人用户ID;CLI 会把它作为接口请求体里的 `startUserIds`。
|
|
76
|
+
- `--starter-name` 可选,发起人姓名;CLI 会调用发起人列表接口解析成唯一用户ID。为了结果稳定,智能体优先显式调用 `appro initiators --keyword <姓名>`,再把 `发起人ID` 传给 `--starter-id`。
|
|
77
|
+
- `--limit` 可选,默认 10,最大 50。
|
|
78
|
+
- `--page` 可选,从 1 开始。
|
|
79
|
+
- `--count-only` 可选,只返回匹配数量,适合回答“有多少”类问题。
|
|
80
|
+
- `appro detail --id` 必填,通常来自 `appro list` 返回的 `审批ID`。
|
|
81
|
+
- `appro detail --comments` 可选,最近用户评论和审批动态数量,默认 10,最大 50;传 0 可跳过。
|
|
82
|
+
- `/appro/api/v1/feeds` 使用 `feedType` 区分类型:`feedType=1` 是用户评论,`feedType=2` 是审批动态;不要把审批动态当作用户评论。
|
|
83
|
+
|
|
84
|
+
## 发起人参数
|
|
85
|
+
|
|
86
|
+
Alpha Web 获取审批发起人列表使用:
|
|
87
|
+
|
|
88
|
+
```text
|
|
89
|
+
GET /user/api/v1/users/listOfficeUser?deleted=0&status=1
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
CLI 对应命令:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
alpha-classic-cli appro initiators --keyword <发起人姓名>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
返回字段里使用:
|
|
99
|
+
|
|
100
|
+
- `发起人ID`:传给审批列表的 `--starter-id`
|
|
101
|
+
- `姓名`:用于和用户输入的姓名匹配
|
|
102
|
+
|
|
103
|
+
当用户说“张三发起的审批”时,处理步骤必须是:
|
|
104
|
+
|
|
105
|
+
1. 运行 `alpha-classic-cli appro initiators --keyword 张三`。
|
|
106
|
+
2. 如果只匹配到一个发起人,取返回的 `发起人ID`。
|
|
107
|
+
3. 再运行 `alpha-classic-cli appro list --scope my --starter-id <发起人ID> --limit 10`。
|
|
108
|
+
4. 如果匹配到多个同名或相似姓名,不要猜;列出候选姓名和 `发起人ID`,让用户确认。
|
|
109
|
+
5. 如果没有匹配到发起人,说明没有找到该发起人,不要编造用户ID。
|
|
110
|
+
|
|
111
|
+
组合条件示例:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
alpha-classic-cli appro list --scope my --status 待我审批 --starter-id <发起人ID> --count-only
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
接口请求关系:
|
|
118
|
+
|
|
119
|
+
```json
|
|
120
|
+
{
|
|
121
|
+
"approvalAboutSelfEnum": "SELF_APPROVAL",
|
|
122
|
+
"status": 1,
|
|
123
|
+
"startUserIds": ["<发起人ID>"]
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## 我审批的状态参数
|
|
128
|
+
|
|
129
|
+
当 `--scope my` / `--scope 我审批的` 时,只使用下面这些 `--status` 参数,不要猜其他写法:
|
|
130
|
+
|
|
131
|
+
| 用户说法 | CLI 参数 |
|
|
132
|
+
| --- | --- |
|
|
133
|
+
| 所有状态、全部我审批的 | `--scope my --status all` |
|
|
134
|
+
| 待我审批 | `--scope my --status 待我审批` |
|
|
135
|
+
| 我已通过、我通过的审批 | `--scope my --status 我已通过` |
|
|
136
|
+
| 我已驳回、我驳回的审批、被我驳回的审批 | `--scope my --status 我已驳回` |
|
|
137
|
+
| 他人已处理 | `--scope my --status 他人已处理` |
|
|
138
|
+
| 我转签的 | `--scope my --status 我转签的` |
|
|
139
|
+
|
|
140
|
+
数量类问题加 `--count-only`:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
alpha-classic-cli appro list --scope my --status 待我审批 --count-only
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
列表类问题不加 `--count-only`:
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
alpha-classic-cli appro list --scope my --status 待我审批 --limit 10
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## 我发起的、抄送我的、全部审批状态参数
|
|
153
|
+
|
|
154
|
+
当 `--scope started` / `--scope 我发起的`、`--scope cc` / `--scope 抄送我的`、`--scope all` / `--scope 全部审批` 时,只使用下面这些 `--status` 参数,不要套用“我审批的”状态。
|
|
155
|
+
|
|
156
|
+
| 用户说法 | CLI 参数 | 接口参数含义 |
|
|
157
|
+
| --- | --- | --- |
|
|
158
|
+
| 所有状态 | `--status all` | 不传 `status` / `preStatus` |
|
|
159
|
+
| 审批中 | `--status 审批中` | `status=0` |
|
|
160
|
+
| 已通过 | `--status 已通过` | `status=1` |
|
|
161
|
+
| 已驳回 | `--status 已驳回` | `status=2` |
|
|
162
|
+
| 驳回后重新发起 | `--status 驳回后重新发起` | `status=3, preStatus=2` |
|
|
163
|
+
| 已撤回 | `--status 已撤回` | `status=4` |
|
|
164
|
+
| 撤回后重新发起 | `--status 撤回后重新发起` | `status=3, preStatus=4` |
|
|
165
|
+
| 已删除 | `--status 已删除` | `status=-1` |
|
|
166
|
+
|
|
167
|
+
示例:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
alpha-classic-cli appro list --scope started --status 审批中 --limit 10
|
|
171
|
+
alpha-classic-cli appro list --scope cc --status 驳回后重新发起 --count-only
|
|
172
|
+
alpha-classic-cli appro list --scope all --status 已删除 --limit 10
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
接口请求关系示例:
|
|
176
|
+
|
|
177
|
+
```json
|
|
178
|
+
{
|
|
179
|
+
"approvalAboutSelfEnum": "SELF_STARTED",
|
|
180
|
+
"status": 3,
|
|
181
|
+
"preStatus": 2
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## 输出字段
|
|
186
|
+
|
|
187
|
+
成功响应读取 `data`:
|
|
188
|
+
|
|
189
|
+
注意:`审批列表[].状态` 是审批单自身的全局生命周期状态,按 Alpha Web 的 `statusMap/preStatusMap` 展示:`审批中`、`已通过`、`已驳回`、`重新发起`、`已撤回`、`已删除`,以及 `preStatus=2/4` 时的 `驳回后重新发起`、`撤回后重新发起`。它不同于 `--scope my` 下用于筛选的 `待我审批`、`我已通过`、`我已驳回`、`他人已处理`、`我转签的`。
|
|
190
|
+
|
|
191
|
+
给最终用户展示审批列表时,使用面向人的摘要,不要直接贴完整 JSON:
|
|
192
|
+
|
|
193
|
+
- 默认隐藏 `审批ID`、`项目ID`、`流程任务ID`,这些字段留给 agent 后续调用 `appro detail` 使用;只有用户明确要求编号、ID、详情定位时才展示。
|
|
194
|
+
- 每条审批都要显式标注字段名,尤其是 `重要信息`、`项目名称`、`客户`、`发起人`、`状态`、`当前节点`、`发起时间`。
|
|
195
|
+
- 如果某个字段为空,可以省略该字段,不要展示空字符串。
|
|
196
|
+
- 推荐格式:
|
|
197
|
+
|
|
198
|
+
```text
|
|
199
|
+
1. 审批类型:合同审批
|
|
200
|
+
重要信息:...
|
|
201
|
+
项目名称:...
|
|
202
|
+
客户:...
|
|
203
|
+
发起人:...
|
|
204
|
+
状态:审批中
|
|
205
|
+
当前节点:...
|
|
206
|
+
发起时间:...
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
给最终用户展示审批详情时,也默认隐藏内部 ID:
|
|
210
|
+
|
|
211
|
+
- 默认隐藏 `审批ID`、`项目ID`、`流程任务ID`、`节点ID`、`字段ID`、`文件ID`、`评论ID`、`动态ID` 等内部 ID;这些字段只留给 agent 做后续定位或追问使用。
|
|
212
|
+
- `项目编号`、`审批编号` 是业务编号,可以正常展示;不要把它们和内部 ID 混为一谈。
|
|
213
|
+
- 详情回答优先展示 `审批类型`、`重要信息`、`状态`、`当前节点`、`发起人`、`发起时间`、`项目信息`、`审批表单.业务分组`、`审批流程`、`附件`、`用户评论`、`审批动态`。
|
|
214
|
+
|
|
215
|
+
```json
|
|
216
|
+
{
|
|
217
|
+
"ok": true,
|
|
218
|
+
"data": {
|
|
219
|
+
"范围": "我审批的",
|
|
220
|
+
"总数": 12,
|
|
221
|
+
"页码": 1,
|
|
222
|
+
"每页数量": 10,
|
|
223
|
+
"审批列表": [
|
|
224
|
+
{
|
|
225
|
+
"审批ID": 123,
|
|
226
|
+
"审批类型": "合同审批",
|
|
227
|
+
"重要信息": "...",
|
|
228
|
+
"项目ID": "...",
|
|
229
|
+
"项目名称": "...",
|
|
230
|
+
"项目编号": "...",
|
|
231
|
+
"客户": "...",
|
|
232
|
+
"发起人": "...",
|
|
233
|
+
"状态": "待我审批",
|
|
234
|
+
"当前节点": "...",
|
|
235
|
+
"发起时间": "...",
|
|
236
|
+
"到达当前节点时间": "...",
|
|
237
|
+
"流程任务ID": "..."
|
|
238
|
+
}
|
|
239
|
+
]
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
审批详情成功响应读取 `data`:
|
|
245
|
+
|
|
246
|
+
```json
|
|
247
|
+
{
|
|
248
|
+
"ok": true,
|
|
249
|
+
"data": {
|
|
250
|
+
"审批概览": {
|
|
251
|
+
"审批ID": 123,
|
|
252
|
+
"审批类型": "合同审批",
|
|
253
|
+
"重要信息": "...",
|
|
254
|
+
"状态": "审批中",
|
|
255
|
+
"当前节点": "...",
|
|
256
|
+
"发起人": "...",
|
|
257
|
+
"发起时间": "..."
|
|
258
|
+
},
|
|
259
|
+
"项目信息": {
|
|
260
|
+
"项目ID": "...",
|
|
261
|
+
"项目名称": "...",
|
|
262
|
+
"项目编号": "..."
|
|
263
|
+
},
|
|
264
|
+
"审批表单": {
|
|
265
|
+
"表单类型": "合同审批",
|
|
266
|
+
"业务分组": [
|
|
267
|
+
{
|
|
268
|
+
"分组名称": "合同信息",
|
|
269
|
+
"字段": [
|
|
270
|
+
{
|
|
271
|
+
"字段名称": "合同名称",
|
|
272
|
+
"值": "..."
|
|
273
|
+
}
|
|
274
|
+
]
|
|
275
|
+
}
|
|
276
|
+
]
|
|
277
|
+
},
|
|
278
|
+
"审批流程": [
|
|
279
|
+
{
|
|
280
|
+
"节点名称": "...",
|
|
281
|
+
"节点状态": "...",
|
|
282
|
+
"审批人": [
|
|
283
|
+
{
|
|
284
|
+
"姓名": "...",
|
|
285
|
+
"处理状态": "..."
|
|
286
|
+
}
|
|
287
|
+
]
|
|
288
|
+
}
|
|
289
|
+
],
|
|
290
|
+
"附件": [
|
|
291
|
+
{
|
|
292
|
+
"文件名": "...",
|
|
293
|
+
"大小": "..."
|
|
294
|
+
}
|
|
295
|
+
],
|
|
296
|
+
"用户评论": {
|
|
297
|
+
"总数": 2,
|
|
298
|
+
"页码": 1,
|
|
299
|
+
"每页数量": 10,
|
|
300
|
+
"评论列表": [
|
|
301
|
+
{
|
|
302
|
+
"评论ID": "...",
|
|
303
|
+
"类型": "用户评论",
|
|
304
|
+
"评论人": "...",
|
|
305
|
+
"内容": "...",
|
|
306
|
+
"评论时间": "..."
|
|
307
|
+
}
|
|
308
|
+
]
|
|
309
|
+
},
|
|
310
|
+
"审批动态": {
|
|
311
|
+
"总数": 1,
|
|
312
|
+
"页码": 1,
|
|
313
|
+
"每页数量": 10,
|
|
314
|
+
"动态列表": [
|
|
315
|
+
{
|
|
316
|
+
"动态ID": "...",
|
|
317
|
+
"类型": "审批动态",
|
|
318
|
+
"操作": "...",
|
|
319
|
+
"操作人": "...",
|
|
320
|
+
"内容": "...",
|
|
321
|
+
"动态时间": "..."
|
|
322
|
+
}
|
|
323
|
+
]
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
## 处理规则
|
|
330
|
+
|
|
331
|
+
- 用户问“审批列表”“我的审批”时,默认使用 `alpha-classic-cli appro list --scope my`。
|
|
332
|
+
- 用户问“所有状态的我审批的审批”时,使用 `alpha-classic-cli appro list --scope my --status all --limit 10`。
|
|
333
|
+
- 用户问“目前有多少待我审批的审批”“待我审批有几个”时,使用 `alpha-classic-cli appro list --scope my --status 待我审批 --count-only`,并用 `data.总数` 回答。
|
|
334
|
+
- 用户问“审批中有多少是我驳回的审批”“我驳回的审批有多少”“被我驳回的审批有几个”时,必须直接使用 `alpha-classic-cli appro list --scope my --status 我已驳回 --count-only`,并用 `data.总数` 回答。
|
|
335
|
+
- 用户问“我通过的审批有多少”“我已通过的审批有几个”时,必须直接使用 `alpha-classic-cli appro list --scope my --status 我已通过 --count-only`,并用 `data.总数` 回答。
|
|
336
|
+
- 用户问“待我审批的审批列表”时,使用 `alpha-classic-cli appro list --scope my --status 待我审批 --limit 10`。
|
|
337
|
+
- 用户问“我已通过/我已驳回/他人已处理/我转签的”时,照“我审批的状态参数”表选择对应 `--status`。
|
|
338
|
+
- 只要用户的问题能映射到 `--status`,就必须把 `--status` 直接传给 CLI;不要先查询全部列表再由 agent 自己按返回结果二次筛选或计数。
|
|
339
|
+
- 用户按发起人姓名过滤审批时,必须先用 `appro initiators --keyword <姓名>` 将姓名解析成 `发起人ID`,再使用 `appro list --starter-id <发起人ID>`。
|
|
340
|
+
- 用户问“我发起的审批”时,使用 `--scope started`。
|
|
341
|
+
- 用户问“抄送我的审批”时,使用 `--scope cc`。
|
|
342
|
+
- 用户问“全部审批”“所有审批”时,使用 `--scope all`;如果返回权限错误,说明当前账号可能没有全部审批权限。
|
|
343
|
+
- 用户问“我发起的审批中审批”时,使用 `alpha-classic-cli appro list --scope started --status 审批中 --limit 10`。
|
|
344
|
+
- 用户问“抄送我的驳回后重新发起审批”时,使用 `alpha-classic-cli appro list --scope cc --status 驳回后重新发起 --limit 10`。
|
|
345
|
+
- 用户问“全部审批里已撤回的审批”时,使用 `alpha-classic-cli appro list --scope all --status 已撤回 --limit 10`。
|
|
346
|
+
- 用户问“审批详情”“这个审批的流程/表单/附件/评论/动态”时,优先使用 `appro detail`;如果没有审批ID,先用 `appro list` 找候选审批。
|
|
347
|
+
- 用户明确说“看审批评论”时,使用 `alpha-classic-cli appro detail --id <审批ID> --comments 10`,并读取 `data.用户评论.评论列表`。
|
|
348
|
+
- 用户明确说“看审批动态”时,使用 `alpha-classic-cli appro detail --id <审批ID> --comments 10`,并读取 `data.审批动态.动态列表`。
|
|
349
|
+
- `data.审批表单.业务分组` 按前端审批详情模板的标题命名,例如 `合同信息`、`盖章信息`、`项目基本信息`、`项目补充信息`、`当前程序信息`、`项目详情`、`项目成员`、`关联合同信息`、`关联收款信息`、`专票信息`、`补充信息`、`备注`。
|
|
350
|
+
- 后端 `fieldsDtos/formFields` 对应前端的 `补充信息`,CLI 会并入 `data.审批表单.业务分组[]` 中,不再单独输出 `自定义字段` 顶层分组。
|
|
351
|
+
- 自定义审批的 `Attachment` 字段会根据后端返回的 file-ticket 调 `/common/api/v1/file/batch` 补全顶层 `附件`;文件对外只展示 `文件名` 和 `大小`,不要展示 file-ticket、文件ID、路径、资料库等内部信息。
|
|
352
|
+
- 如果用户没有提供关键词,可以直接查询默认列表。
|
|
353
|
+
- 如果结果为空,说明没有查到,不要编造审批。
|
|
354
|
+
- 当前只支持查询,不支持同意、拒绝、转交、撤回、删除等写操作。
|