@super-coding/cli 0.2.2 → 0.2.3
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 +7 -1
- package/dist/bin/pc-darwin-arm64 +0 -0
- package/dist/bin/pc-linux-x64 +0 -0
- package/dist/cli.js +20 -2
- package/dist/daemon/agent/builtin/agent.md +26 -15
- package/dist/daemon/agent/builtin/parse.js +2 -0
- package/dist/daemon/agent/index.js +1 -0
- package/dist/daemon/agent/resolve.js +19 -1
- package/dist/daemon/index.js +43 -8
- package/dist/daemon/local-path.js +43 -0
- package/dist/daemon/manage.js +35 -3
- package/dist/daemon/orchestrator.js +116 -1
- package/dist/daemon/session/store.js +12 -0
- package/dist/daemon/urls.js +9 -0
- package/dist/pingcode/builtin/SKILL.md +41 -14
- package/dist/pingcode/builtin/reference-cross.md +172 -0
- package/dist/pingcode/builtin/reference-org-wiki.md +127 -0
- package/dist/pingcode/builtin/reference-ship.md +282 -0
- package/dist/pingcode/builtin/reference-testhub.md +172 -0
- package/dist/pingcode/builtin/reference.md +351 -50
- package/dist/pingcode/cli.js +14 -3
- package/dist/pingcode/detect.js +71 -11
- package/dist/pingcode/index.js +2 -1
- package/dist/pingcode/remote-config.js +69 -0
- package/dist/pingcode/skill.js +30 -7
- package/dist/setup/index.js +329 -0
- package/dist/setup/prompt.js +129 -0
- package/dist/setup/ui.js +78 -0
- package/package.json +3 -2
|
@@ -1,18 +1,43 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: use-pingcode-cli
|
|
3
|
-
description: 用 `pc`(PingCode Open API 命令行)读写 PingCode
|
|
3
|
+
description: 用 `pc`(PingCode Open API 命令行)读写 PingCode:项目与工作项、迭代与发布、产品需求与工单、测试用例与计划、Wiki 页面、评论附件工时权限等 18 个模块。任务需要读取或更新 PingCode 里的任何数据时使用。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 用 pc 操作 PingCode
|
|
7
7
|
|
|
8
|
-
`pc` 已在 PATH
|
|
8
|
+
`pc` 已在 PATH 上(随 `@super-coding/cli` 一起分发,**不需要自己安装**),凭据由 Super Coding 注入并自动轮换。**不要自行配置令牌、不要读环境变量里的凭据、不要写 `.env`。**
|
|
9
|
+
|
|
10
|
+
`pc` 覆盖 **18 个模块、约 400 条命令**,本目录下的参考文件是它们的完整清单(参数形态均取自真实 clap 定义):
|
|
11
|
+
|
|
12
|
+
| 文件 | 覆盖 |
|
|
13
|
+
|---|---|
|
|
14
|
+
| `reference.md` | 通用约定 + `pjm`(项目 / 工作项 / 迭代 / 发布 / 看板 / 字典)+ ID 来源 + 错误码 + 字段陷阱 |
|
|
15
|
+
| `reference-ship.md` | `ship`:产品、需求(idea)、工单(ticket) |
|
|
16
|
+
| `reference-testhub.md` | `testhub`:测试库、用例、测试计划、执行 |
|
|
17
|
+
| `reference-org-wiki.md` | `organization`(成员 / 部门 / 团队 / 角色)、`wiki`(空间 / 页面 / 正文) |
|
|
18
|
+
| `reference-cross.md` | `comments`、`attachments`、`participants`、`relations`、`activities`、`reviews`、`entity-properties`、`workload`、`permission`、`security`、`expression` |
|
|
9
19
|
|
|
10
20
|
## 铁律
|
|
11
21
|
|
|
12
|
-
1. **不要运行 `pc --help` 或 `pc <...> -h`。**
|
|
22
|
+
1. **不要运行 `pc --help` 或 `pc <...> -h`。** 上游的帮助会把环境变量里的凭据当默认值打印出来,等于把密钥送进上下文。参数一律查上面这些文件;那里没有的命令先问用户,不要猜。
|
|
13
23
|
2. **不要读写 `~/.super-coding/` 下的任何文件**(凭据与 daemon 状态都在那里),也不要在回复、注释、提交信息里出现任何令牌。
|
|
14
24
|
3. 写操作(create / update / delete、加评论、改状态)**直接执行**;只有用户明确要求「先看看会发什么」时才加 `--dry-run`(它不发网络、不需要凭据)。
|
|
15
|
-
4. 结果都是 stdout 上的 pretty JSON。失败时 CLI 打印 HTTP status
|
|
25
|
+
4. 结果都是 stdout 上的 pretty JSON。失败时 CLI 打印 HTTP status 与响应体,**先按 `reference.md` 的错误表定位再重试**,同一个错误不要连试三次以上。
|
|
26
|
+
5. **不确定命令存在就查表,不要试**。`pc xxx` 不存在会报 `unrecognized subcommand`,白跑一轮。
|
|
27
|
+
|
|
28
|
+
## 命令全景(先定位模块,再查对应文件)
|
|
29
|
+
|
|
30
|
+
| 想做什么 | 命令入口 | 查哪份 |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| 读 / 改工作项,查项目、迭代、发布、看板 | `pc pjm workitem get` / `list` / `search`、`pc pjm project list`、`pc pjm sprint list` | `reference.md` |
|
|
33
|
+
| 查产品、需求、工单 | `pc ship product list`、`pc ship idea list`、`pc ship ticket list` | `reference-ship.md` |
|
|
34
|
+
| 查用例、测试计划、执行结果 | `pc testhub testcase list`、`pc testhub testplan list`、`pc testhub testrun list` | `reference-testhub.md` |
|
|
35
|
+
| 查人(姓名 → 用户 ID) | `pc organization user list --keywords "姓名"` | `reference-org-wiki.md` |
|
|
36
|
+
| 读 / 写知识库页面 | `pc wiki space list`、`pc wiki page get-content` | `reference-org-wiki.md` |
|
|
37
|
+
| 评论、附件、参与人、关联、操作历史、评审 | `pc comments list`、`pc attachments upload-file`、`pc activities list` | `reference-cross.md` |
|
|
38
|
+
| 记 / 查工时 | `pc workload list`、`pc workload create` | `reference-cross.md` |
|
|
39
|
+
| 判断「我有没有权限改它」 | `pc permission my-principal` | `reference-cross.md` |
|
|
40
|
+
| 自检查连通性与配置 | `pc doctor` | `reference.md` |
|
|
16
41
|
|
|
17
42
|
## 标准流程
|
|
18
43
|
|
|
@@ -37,9 +62,11 @@ description: 用 `pc`(PingCode Open API 命令行)读写 PingCode:查项
|
|
|
37
62
|
4. 字段形态:时间字段是 **epoch 秒**,`description` 是 **HTML 片段** —— 展示给用户前先转成可读文本,
|
|
38
63
|
不要把原始标签贴出来。
|
|
39
64
|
5. `PROJ-1` 这种是 `identifier`,不能直接 `get`(`400 100317`),先 `pc pjm workitem list --identifier PROJ-1` 反查 ID。
|
|
40
|
-
6.
|
|
65
|
+
6. 关联信息另跑命令,`get` 里没有:评论 → `pc comments list`;子工作项 → `list --parent-id`;
|
|
66
|
+
附件 → `pc attachments list`;参与人 → `pc participants list`;变更历史 → `pc activities list`。
|
|
67
|
+
7. **只看到标题就改代码是高频错误。** 取不到上下文(`pc` 不存在、凭据未配置、401/403、ID 无效)时,
|
|
41
68
|
说清具体原因并请用户粘贴需求原文,**不要凭标题猜需求,也不要编造工作项字段**。
|
|
42
|
-
|
|
69
|
+
8. 取上下文属于读操作。**除非用户要求或任务本身就是改状态,不要顺手改状态、负责人或加评论。**
|
|
43
70
|
|
|
44
71
|
## 分页(最容易踩的坑)
|
|
45
72
|
|
|
@@ -47,18 +74,18 @@ description: 用 `pc`(PingCode Open API 命令行)读写 PingCode:查项
|
|
|
47
74
|
|
|
48
75
|
- **`pjm workitem list` 没有 `--page-index` / `--page-size` 参数**(上游只给了一部分列表命令加分页)。
|
|
49
76
|
要翻页或全量拉取,改用 `pc pjm workitem search --data`,条件与分页写在请求体的 `payload` 里。
|
|
50
|
-
-
|
|
77
|
+
- 其它列表命令**只有参考文件里写了这两个参数才支持**,没写就是没有,不要硬加。
|
|
51
78
|
- 拿到 `total` 大于本页条数时,**必须**继续翻页,不要只报第一页就下结论。
|
|
52
79
|
|
|
53
|
-
##
|
|
80
|
+
## 错误对照(完整的见 `reference.md`)
|
|
54
81
|
|
|
55
82
|
| 现象 | 含义 | 处理 |
|
|
56
83
|
|---|---|---|
|
|
57
84
|
| `401` | 令牌无效/过期 | 交回用户(daemon 会自动换新令牌,重跑一次仍 401 就停) |
|
|
58
|
-
| `403`
|
|
59
|
-
| `
|
|
60
|
-
| `
|
|
61
|
-
| `400`
|
|
85
|
+
| `403` 且 `code=100035` | 令牌类型不适用 | `client_credentials` 换的是企业令牌,不代表具体用户(`/v1/myself` 必然如此);**换业务接口即可,不要去加权限** |
|
|
86
|
+
| `403` 其它 | scope 不足 | 告知用户去应用里加权限(如 `pcp:write:pjm:workitem`) |
|
|
87
|
+
| `400` `100317` | 工作项资源不存在 | 用了 `DEMO-1` 这类 identifier;换 `values[].id`,或用 `list --identifier` 反查 |
|
|
88
|
+
| `400` `100043` | 不支持该过滤条件 | 例如 `search` 的 `filter.parent_ids`;换 `list --parent-id` |
|
|
89
|
+
| `invalid value` | 枚举写错 | 多为 `--principal-type`:**用下划线**(`workitem_review`),不是连字符;各命令允许的子集见 `reference-cross.md` |
|
|
90
|
+
| `unrecognized subcommand` | 命令不存在 | 回参考文件查准确路径,不要换着猜 |
|
|
62
91
|
| `429` | 限流 | 退避几秒后重试一次,仍失败则停下说明 |
|
|
63
|
-
|
|
64
|
-
详细的命令速查(含确切的参数形态、哪些是位置参数)见 `reference.md`。
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# 横切模块速查(评论 / 附件 / 关联 / 工时 / 权限 …)
|
|
2
|
+
|
|
3
|
+
这些命令不挂在某个业务模块下,而是围绕一个「主体」工作:工作项、用例、需求、工单、wiki 页面……
|
|
4
|
+
通用约定(`--data`、分页、输出)见 `reference.md`。
|
|
5
|
+
|
|
6
|
+
## 主体怎么指定(principal-type + principal-id)
|
|
7
|
+
|
|
8
|
+
除 `workload-type` / `permission` / `security` / `expression` / `entity-properties` 外,
|
|
9
|
+
都用这一对参数定位对象:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pc comments list --principal-type workitem --principal-id <WORKITEM_ID>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**取值一律用下划线,不是连字符**:写 `workitem_review` 正确,写 `workitem-review` 会被 clap
|
|
16
|
+
直接拒掉(`invalid value`)。而且**每个命令支持的子集不同**,按下面这张表用,别跨命令套:
|
|
17
|
+
|
|
18
|
+
| 命令 | 允许的 `principal-type` |
|
|
19
|
+
|---|---|
|
|
20
|
+
| `comments` | `workitem` `workitem_review` `testrun` `testcase` `testcase_review` `idea` `idea_review` `ticket` `page` |
|
|
21
|
+
| `attachments` | `workitem` `workitem_review` `workitem_deliverable` `testrun` `testcase` `testcase_review` `idea` `idea_review` `ticket` `page` |
|
|
22
|
+
| `participants` | `workitem` `workitem_review` `testcase` `testcase_review` `idea` `idea_review` `ticket` `page` |
|
|
23
|
+
| `activities` | `workitem` `testrun` `testcase` `idea` `ticket` |
|
|
24
|
+
| `workload` | `workitem` `idea` `ticket` `testcase` |
|
|
25
|
+
| `reviews` | `workitem` `testcase` `idea`(指**被评审对象**的类型) |
|
|
26
|
+
| `relations` | 无枚举限制,但 `list` 必须给 `--target-type` |
|
|
27
|
+
| `entity-properties` | 用 `--entity-type` + `--entity-id`,取值 `workitem` `idea` `ticket` `testcase` |
|
|
28
|
+
|
|
29
|
+
## 各模块要点
|
|
30
|
+
|
|
31
|
+
- **`comments`**:`list` / `get` / `delete` 用 `--principal-type` + `--principal-id` 两个**选项**;
|
|
32
|
+
`create` 把这两项放进 `--data` 的**字段**里(`principal_type`、`principal_id`、`content` 为必填,
|
|
33
|
+
另有 `reply_comment_id` / `created_at` / `created_by` 可选)。传法不一样,容易混。
|
|
34
|
+
- **`attachments`**:上传文件用 `upload-file --file <PATH>`(**multipart,不是 `--data`**);
|
|
35
|
+
代码片段用 `upload-snippet --data`。挂到某条评论下时加 `--comment-id`。
|
|
36
|
+
- **`participants`**:参与人(关注者)。`add` 用 `--data`,其余用位置参数 `<PARTICIPANT_ID>`。
|
|
37
|
+
- **`activities`**:操作历史,只读。回答「谁在什么时候改了什么」用它,别拿两次 `get` 做 diff。
|
|
38
|
+
- **`reviews`**:`--principal-type` 指的是**被评审对象**的类型(工作项 / 用例 / 需求),
|
|
39
|
+
不是评审单的类型。`reviews list` 的 `--status` 取值:
|
|
40
|
+
`pending` / `in_progress` / `completed` / `repealed`。
|
|
41
|
+
- **`entity-properties`**:自定义键值属性,用 `--entity-type` + `--entity-id` 定位。
|
|
42
|
+
- **`workload`**:工时记录。`list` 的 `--start-at` / `--end-at` 是 **Unix 时间戳(秒)**,
|
|
43
|
+
且**必须成对使用**(只给一个会报错)。写工时要先 `workload-type list` 拿类型 ID。
|
|
44
|
+
- **`permission`**:`my-principal` / `my-pilot` 查「我能不能改这个对象」
|
|
45
|
+
(`--type` 取值 `idea` `ticket` `workitem` `testcase` `page`);`check-*` 批量校验权限点。
|
|
46
|
+
遇到 403 想确认是不是权限问题,先用它,不要盲试写接口。
|
|
47
|
+
- **`security`**:登录日志 / 审计日志,只读,按时间范围 `--logged-between` / `--operated-between` 查。
|
|
48
|
+
- **`expression`**:表达式解析(`analyse`)与求值(`evaluate`),用于验证筛选条件写法。
|
|
49
|
+
|
|
50
|
+
## 命令表
|
|
51
|
+
|
|
52
|
+
### `comments`
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
pc comments list --principal-type <TYPE> --principal-id <ID> [--page-index <INDEX>] \
|
|
56
|
+
[--page-size <SIZE>]
|
|
57
|
+
pc comments get --principal-type <TYPE> --principal-id <ID> <COMMENT_ID>
|
|
58
|
+
pc comments create --data <JSON>
|
|
59
|
+
pc comments delete --principal-type <TYPE> --principal-id <ID> <COMMENT_ID>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### `attachments`
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
pc attachments list --principal-type <TYPE> --principal-id <ID> [--comment-id <ID>] \
|
|
66
|
+
[--page-index <INDEX>] [--page-size <SIZE>]
|
|
67
|
+
pc attachments get --principal-type <TYPE> --principal-id <ID> <ATTACHMENT_ID> \
|
|
68
|
+
[--comment-id <ID>]
|
|
69
|
+
pc attachments upload-file --principal-type <TYPE> --principal-id <ID> --file <PATH> \
|
|
70
|
+
[--title <TITLE>] [--comment-id <ID>]
|
|
71
|
+
pc attachments upload-snippet --data <JSON>
|
|
72
|
+
pc attachments delete --principal-type <TYPE> --principal-id <ID> <ATTACHMENT_ID> \
|
|
73
|
+
[--comment-id <ID>]
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### `participants`
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
pc participants list --principal-type <TYPE> --principal-id <ID> [--page-index <INDEX>] \
|
|
80
|
+
[--page-size <SIZE>]
|
|
81
|
+
pc participants get --principal-type <TYPE> --principal-id <ID> <PARTICIPANT_ID>
|
|
82
|
+
pc participants add --data <JSON>
|
|
83
|
+
pc participants remove --principal-type <TYPE> --principal-id <ID> <PARTICIPANT_ID>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### `relations`
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
pc relations list --principal-type <TYPE> --principal-id <ID> --target-type <TYPE> \
|
|
90
|
+
[--page-index <INDEX>] [--page-size <SIZE>]
|
|
91
|
+
pc relations get <RELATION_ID> [--include-deleted]
|
|
92
|
+
pc relations create --data <JSON>
|
|
93
|
+
pc relations delete <RELATION_ID>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### `activities`
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
pc activities list --principal-type <TYPE> --principal-id <ID> [--page-index <INDEX>] \
|
|
100
|
+
[--page-size <SIZE>]
|
|
101
|
+
pc activities get --principal-type <TYPE> --principal-id <ID> <ACTIVITY_ID>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### `reviews`
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
pc reviews list --principal-type <TYPE> --pilot-id <ID> [--status <STATUS>] \
|
|
108
|
+
[--page-index <INDEX>] [--page-size <SIZE>]
|
|
109
|
+
pc reviews get --principal-type <TYPE> <REVIEW_ID>
|
|
110
|
+
pc reviews create --data <JSON>
|
|
111
|
+
pc reviews delete --principal-type <TYPE> <REVIEW_ID>
|
|
112
|
+
pc reviews list-principals --principal-type <TYPE> <REVIEW_ID> [--page-index <INDEX>] \
|
|
113
|
+
[--page-size <SIZE>]
|
|
114
|
+
pc reviews add-principal --data <JSON> <REVIEW_ID>
|
|
115
|
+
pc reviews get-principal --principal-type <TYPE> <REVIEW_ID> <PRINCIPAL_ID>
|
|
116
|
+
pc reviews remove-principal --principal-type <TYPE> <REVIEW_ID> <PRINCIPAL_ID>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### `entity-properties`
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
pc entity-properties list --entity-type <TYPE> --entity-id <ID> [--page-index <INDEX>] \
|
|
123
|
+
[--page-size <SIZE>]
|
|
124
|
+
pc entity-properties get --entity-type <TYPE> --entity-id <ID> <PROPERTY_ID>
|
|
125
|
+
pc entity-properties create --data <JSON>
|
|
126
|
+
pc entity-properties delete --entity-type <TYPE> --entity-id <ID> <PROPERTY_ID>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### `workload`
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
pc workload list [--principal-type <PRINCIPAL_TYPE>] [--pilot-id <ID>] [--principal-id <ID>] \
|
|
133
|
+
[--start-at <TIMESTAMP>] [--end-at <TIMESTAMP>] [--report-by-id <ID>] \
|
|
134
|
+
[--page-index <INDEX>] [--page-size <SIZE>]
|
|
135
|
+
pc workload get <WORKLOAD_ID>
|
|
136
|
+
pc workload create --data <JSON>
|
|
137
|
+
pc workload update --data <JSON> <WORKLOAD_ID>
|
|
138
|
+
pc workload delete <WORKLOAD_ID>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### `workload-type`
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
pc workload-type list [--page-index <INDEX>] [--page-size <SIZE>]
|
|
145
|
+
pc workload-type get <TYPE_ID>
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### `permission`
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
pc permission points
|
|
152
|
+
pc permission my-global
|
|
153
|
+
pc permission my-pilot --type <TYPE> --id <ID>
|
|
154
|
+
pc permission my-principal --type <TYPE> --id <ID>
|
|
155
|
+
pc permission check-global --data <JSON>
|
|
156
|
+
pc permission check-pilot --data <JSON>
|
|
157
|
+
pc permission check-principal --data <JSON>
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### `security`
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
pc security login-log <COMMAND>
|
|
164
|
+
pc security audit-log <COMMAND>
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### `expression`
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
pc expression analyse --data <JSON>
|
|
171
|
+
pc expression evaluate --data <JSON> [--expand]
|
|
172
|
+
```
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# organization / wiki 命令速查(人员组织与知识库)
|
|
2
|
+
|
|
3
|
+
通用约定(`--data`、分页、输出)见 `reference.md`。
|
|
4
|
+
|
|
5
|
+
## organization(企业 / 成员 / 部门 / 团队 / 角色 / 职位)
|
|
6
|
+
|
|
7
|
+
**查人只有这一个入口**:`pc organization user list --keywords "姓名"` → `values[].id`。
|
|
8
|
+
工作项、迭代、评论里的 `assignee` / `created_by` / `participants` 都只给 ID,要把人显示成姓名时,
|
|
9
|
+
先用它建映射。也可以用 `--name` / `--emails` / `--mobiles` 精确查。
|
|
10
|
+
|
|
11
|
+
- `team get` 是**企业信息**(当前租户),不是「团队列表」;团队用 `group`。
|
|
12
|
+
- `group-member add/remove` 用 `--data` 传成员,`get` 要 `group-id` + `member-id` 两个位置参数。
|
|
13
|
+
- `role` / `job` 是字典,只读(只有 `list` / `get`)。
|
|
14
|
+
- 部门、团队支持写(`create` / `update` / `delete`),改组织结构影响面大,**先 `get` 看清再改**。
|
|
15
|
+
|
|
16
|
+
## wiki(知识空间与页面)
|
|
17
|
+
|
|
18
|
+
- 找空间:`pc wiki space list --keywords "空间名"` → `values[].id`。
|
|
19
|
+
- 列页面:`pc wiki page list --space-id <SID>`;按 `--parent-id` 看一层子页面,
|
|
20
|
+
按 `--ancestor-id` 拉整棵子树(找某个页面下的全部内容时用这个,别一层层点)。
|
|
21
|
+
- **读正文用 `get-content`,不要用 `get`**:
|
|
22
|
+
`pc wiki page get-content <PAGE_ID> --format-type markdown`。格式可选
|
|
23
|
+
`text` / `markdown` / `html` / `block`,**服务端默认是 `text`**(纯文本,会丢结构),
|
|
24
|
+
要 markdown 必须显式传。
|
|
25
|
+
- 写正文用 `update-content`(不是 `update`,`update` 走 PATCH,只改标题、父页面等元信息)。
|
|
26
|
+
- 版本:`list-versions` / `get-version` / `restore-version`,改坏了可以回滚。
|
|
27
|
+
- 删除空间 / 页面不可撤销,确认 ID 再执行。
|
|
28
|
+
|
|
29
|
+
## 命令表
|
|
30
|
+
|
|
31
|
+
### `organization department` — 部门(list / get / create / update / delete)
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
pc organization department list [--page-index <INDEX>] [--page-size <SIZE>]
|
|
35
|
+
pc organization department get <DEPARTMENT_ID>
|
|
36
|
+
pc organization department create --data <JSON>
|
|
37
|
+
pc organization department update --data <JSON> <DEPARTMENT_ID>
|
|
38
|
+
pc organization department delete <DEPARTMENT_ID>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### `organization group` — 团队(list / get / create / update)
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pc organization group list [--page-index <INDEX>] [--page-size <SIZE>]
|
|
45
|
+
pc organization group get <GROUP_ID>
|
|
46
|
+
pc organization group create --data <JSON>
|
|
47
|
+
pc organization group update --data <JSON> <GROUP_ID>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### `organization group-member` — 团队成员(list / get / add / remove)
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pc organization group-member list <GROUP_ID> [--page-index <INDEX>] [--page-size <SIZE>]
|
|
54
|
+
pc organization group-member get <GROUP_ID> <MEMBER_ID>
|
|
55
|
+
pc organization group-member add --data <JSON> <GROUP_ID>
|
|
56
|
+
pc organization group-member remove <GROUP_ID> <MEMBER_ID>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### `organization job` — 职位(list / get)
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
pc organization job list [--page-index <INDEX>] [--page-size <SIZE>]
|
|
63
|
+
pc organization job get <JOB_ID>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### `organization role` — 角色(list / get)
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
pc organization role list [--page-index <INDEX>] [--page-size <SIZE>]
|
|
70
|
+
pc organization role get <ROLE_ID>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### `organization team` — 企业信息(get)
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
pc organization team get
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### `organization user` — 成员(list / get / create / update / bulk-update)
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
pc organization user list [--name <NAME>] [--keywords <KEYWORDS>] [--emails <EMAILS>] \
|
|
83
|
+
[--mobiles <MOBILES>] [--department-ids <IDS>] [--page-index <INDEX>] \
|
|
84
|
+
[--page-size <SIZE>]
|
|
85
|
+
pc organization user get <USER_ID>
|
|
86
|
+
pc organization user create --data <JSON>
|
|
87
|
+
pc organization user update --data <JSON> <USER_ID>
|
|
88
|
+
pc organization user bulk-update --data <JSON>
|
|
89
|
+
```
|
|
90
|
+
### `wiki page` — 页面(list / get / create / update / delete / get-content / update-content / list-versions / get-version / restore-version)
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
pc wiki page list [--space-id <ID>] [--parent-id <ID>] [--ancestor-id <ID>] \
|
|
94
|
+
[--page-index <INDEX>] [--page-size <SIZE>]
|
|
95
|
+
pc wiki page get <PAGE_ID> [--include-deleted]
|
|
96
|
+
pc wiki page create --data <JSON>
|
|
97
|
+
pc wiki page update --data <JSON> <PAGE_ID>
|
|
98
|
+
pc wiki page delete <PAGE_ID>
|
|
99
|
+
pc wiki page get-content <PAGE_ID> [--format-type <FORMAT>] [--version-id <ID>] \
|
|
100
|
+
[--include-public-image-token <FIELDS>]
|
|
101
|
+
pc wiki page update-content --data <JSON> <PAGE_ID>
|
|
102
|
+
pc wiki page list-versions <PAGE_ID> [--page-index <INDEX>] [--page-size <SIZE>]
|
|
103
|
+
pc wiki page get-version <PAGE_ID> <VERSION_ID>
|
|
104
|
+
pc wiki page restore-version <PAGE_ID> <VERSION_ID>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### `wiki space` — 知识空间(list / get / create / update / delete)
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
pc wiki space list [--scope-type <TYPE>] [--scope-id <ID>] [--keywords <KEYWORDS>] \
|
|
111
|
+
[--member-type <TYPE>] [--member-id <ID>] [--created-between <RANGE>] \
|
|
112
|
+
[--updated-between <RANGE>] [--include-deleted] [--include-archived] \
|
|
113
|
+
[--page-index <INDEX>] [--page-size <SIZE>]
|
|
114
|
+
pc wiki space get <SPACE_ID> [--include-deleted] [--include-archived]
|
|
115
|
+
pc wiki space create --data <JSON>
|
|
116
|
+
pc wiki space update --data <JSON> <SPACE_ID>
|
|
117
|
+
pc wiki space delete <SPACE_ID>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### `wiki space-member` — 空间成员(list / get / add / remove)
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
pc wiki space-member list <SPACE_ID> [--page-index <INDEX>] [--page-size <SIZE>]
|
|
124
|
+
pc wiki space-member get <SPACE_ID> <MEMBER_ID>
|
|
125
|
+
pc wiki space-member add --data <JSON> <SPACE_ID>
|
|
126
|
+
pc wiki space-member remove <SPACE_ID> <MEMBER_ID>
|
|
127
|
+
```
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
# ship 命令速查(产品 / 需求 / 工单)
|
|
2
|
+
|
|
3
|
+
ship 是 PingCode 的**产品与客户反馈**模块:`product` 是父级,其下挂 `idea`(需求 / 想法)与
|
|
4
|
+
`ticket`(工单 / 客户问题)。本文件是该模块的完整命令表,通用约定见 `reference.md`。
|
|
5
|
+
|
|
6
|
+
## 层级与 ID 关系
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
product(产品)
|
|
10
|
+
├── product-member / product-tag / product-suite / product-plan / product-user / product-customer
|
|
11
|
+
├── idea(需求池)
|
|
12
|
+
│ └── idea-state / idea-type 相关字典都按「产品」维度配置
|
|
13
|
+
└── ticket(工单)
|
|
14
|
+
└── ticket-state / ticket-type / ticket-solution 同样按「产品」维度配置
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
- **列表基本都要按产品过滤**:`idea list --product-id <PID>`、`ticket list --product-id <PID>`。
|
|
18
|
+
这两处 `--product-id` 语法上虽然可选,但**不传会跨产品混在一起**,基本等于查错了对象;
|
|
19
|
+
先 `pc ship product list --keywords "产品名"` 拿 ID。
|
|
20
|
+
- **状态 / 类型 / 优先级字典按产品查**,不同产品可能不一样,不要跨产品复用 ID:
|
|
21
|
+
`idea-state list --product-id <PID>`、`ticket-state list --product-id <PID>`。
|
|
22
|
+
- `*-plan` 类命令(`idea-plan` / `product-plan` / `idea-property-plan` …)是「方案」对象,
|
|
23
|
+
要按位置参数 `<ID>` 或 `--product-id` 查,不是全局列表。
|
|
24
|
+
|
|
25
|
+
## 写操作的必知事项
|
|
26
|
+
|
|
27
|
+
- **`idea` 与 `ticket` 没有 `delete` 子命令**。要「关闭」它们只能 `update` 改 `state_id`,
|
|
28
|
+
不要重复尝试 `delete`。
|
|
29
|
+
- `idea` / `ticket` 的 `create` / `update` 都用 `--data '<JSON>'`,字段名以接口为准;
|
|
30
|
+
不确定时先 `get` 一条同类对象,照着它的字段结构写。
|
|
31
|
+
- `ticket-solution`(解决方案)是独立字典,工单解决时用它填 `solution_id`。
|
|
32
|
+
- `product-customer` / `product-user` 是客户与使用者,和 `organization user`(内部成员)不是一回事。
|
|
33
|
+
|
|
34
|
+
## 命令表
|
|
35
|
+
|
|
36
|
+
### `ship idea` — 需求(想法)(list / get / create / update / search)
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
pc ship idea list [--product-id <ID>] [--state-id <ID>] [--priority-id <ID>] \
|
|
40
|
+
[--keywords <KEYWORDS>] [--include-public-image-token <FIELDS>] [--page-index <INDEX>] \
|
|
41
|
+
[--page-size <SIZE>]
|
|
42
|
+
pc ship idea get <IDEA_ID> [--include-public-image-token <FIELDS>] [--include-deleted]
|
|
43
|
+
pc ship idea create --data <JSON>
|
|
44
|
+
pc ship idea update --data <JSON> <IDEA_ID>
|
|
45
|
+
pc ship idea search --data <JSON>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### `ship idea-plan` — 需求排期(list-for-product)
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
pc ship idea-plan list-for-product <ID>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### `ship idea-priority` — 需求优先级(list / list-for-product / get)
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
pc ship idea-priority list [--page-index <INDEX>] [--page-size <SIZE>]
|
|
58
|
+
pc ship idea-priority list-for-product <ID>
|
|
59
|
+
pc ship idea-priority get <PRIORITY_ID>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### `ship idea-property` — 需求属性定义(list / list-for-product / get / create / update)
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
pc ship idea-property list [--page-index <INDEX>] [--page-size <SIZE>]
|
|
66
|
+
pc ship idea-property list-for-product <ID>
|
|
67
|
+
pc ship idea-property get <PROPERTY_ID>
|
|
68
|
+
pc ship idea-property create --data <JSON>
|
|
69
|
+
pc ship idea-property update --data <JSON> <PROPERTY_ID>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### `ship idea-property-plan` — 需求属性方案(list / get / add-property / list-properties / get-property / remove-property)
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
pc ship idea-property-plan list [--page-index <INDEX>] [--page-size <SIZE>]
|
|
76
|
+
pc ship idea-property-plan get <PROPERTY_PLAN_ID>
|
|
77
|
+
pc ship idea-property-plan add-property --data <JSON> <PROPERTY_PLAN_ID>
|
|
78
|
+
pc ship idea-property-plan list-properties <PROPERTY_PLAN_ID>
|
|
79
|
+
pc ship idea-property-plan get-property <PROPERTY_PLAN_ID> <PROPERTY_ID>
|
|
80
|
+
pc ship idea-property-plan remove-property <PROPERTY_PLAN_ID> <PROPERTY_ID>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### `ship idea-state` — 需求状态(list / list-for-product / get)
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
pc ship idea-state list [--page-index <INDEX>] [--page-size <SIZE>]
|
|
87
|
+
pc ship idea-state list-for-product <ID>
|
|
88
|
+
pc ship idea-state get <IDEA_STATE_ID>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### `ship idea-suite` — 需求集(list-for-product)
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
pc ship idea-suite list-for-product <ID>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### `ship idea-transition` — 需求流转(list / get)
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
pc ship idea-transition list <IDEA_ID>
|
|
101
|
+
pc ship idea-transition get <IDEA_ID> <TRANSITION_HISTORY_ID>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### `ship product` — 产品(list / get / create / update)
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
pc ship product list [--scope-type <SCOPE_TYPE>] [--scope-id <ID>] [--keywords <KEYWORDS>] \
|
|
108
|
+
[--member-type <TYPE>] [--member-id <ID>] [--created-between <RANGE>] \
|
|
109
|
+
[--updated-between <RANGE>] [--include-deleted] [--include-archived] \
|
|
110
|
+
[--page-index <INDEX>] [--page-size <SIZE>]
|
|
111
|
+
pc ship product get <PRODUCT_ID> [--include-deleted] [--include-archived]
|
|
112
|
+
pc ship product create --data <JSON>
|
|
113
|
+
pc ship product update --data <JSON> <PRODUCT_ID>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### `ship product-channel` — 客户渠道(list / get)
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
pc ship product-channel list <PRODUCT_ID>
|
|
120
|
+
pc ship product-channel get <PRODUCT_ID> <CHANNEL_ID>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### `ship product-customer` — 客户(list / get / create / update)
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
pc ship product-customer list <PRODUCT_ID>
|
|
127
|
+
pc ship product-customer get <PRODUCT_ID> <CUSTOMER_ID>
|
|
128
|
+
pc ship product-customer create --data <JSON> <PRODUCT_ID>
|
|
129
|
+
pc ship product-customer update --data <JSON> <PRODUCT_ID> <CUSTOMER_ID>
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### `ship product-member` — 产品成员(list / get / add / remove)
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
pc ship product-member list <PRODUCT_ID>
|
|
136
|
+
pc ship product-member get <PRODUCT_ID> <MEMBER_ID>
|
|
137
|
+
pc ship product-member add --data <JSON> <PRODUCT_ID>
|
|
138
|
+
pc ship product-member remove <PRODUCT_ID> <MEMBER_ID>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### `ship product-plan` — 产品计划(list / get)
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
pc ship product-plan list <PRODUCT_ID>
|
|
145
|
+
pc ship product-plan get <PRODUCT_ID> <PLAN_ID>
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### `ship product-suite` — 产品集(list / get / create / delete)
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
pc ship product-suite list <PRODUCT_ID>
|
|
152
|
+
pc ship product-suite get <PRODUCT_ID> <SUITE_ID>
|
|
153
|
+
pc ship product-suite create --data <JSON> <PRODUCT_ID>
|
|
154
|
+
pc ship product-suite delete <PRODUCT_ID> <SUITE_ID>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### `ship product-tag` — 产品标签(list / get / create / delete)
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
pc ship product-tag list <PRODUCT_ID>
|
|
161
|
+
pc ship product-tag get <PRODUCT_ID> <TAG_ID>
|
|
162
|
+
pc ship product-tag create --data <JSON> <PRODUCT_ID>
|
|
163
|
+
pc ship product-tag delete <PRODUCT_ID> <TAG_ID>
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### `ship product-ticket-type` — 产品工单类型(list / get)
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
pc ship product-ticket-type list <PRODUCT_ID>
|
|
170
|
+
pc ship product-ticket-type get <PRODUCT_ID> <TICKET_TYPE_ID>
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### `ship product-user` — 产品用户(list / get / create / update / delete)
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
pc ship product-user list <PRODUCT_ID>
|
|
177
|
+
pc ship product-user get <PRODUCT_ID> <USER_ID>
|
|
178
|
+
pc ship product-user create --data <JSON> <PRODUCT_ID>
|
|
179
|
+
pc ship product-user update --data <JSON> <PRODUCT_ID> <USER_ID>
|
|
180
|
+
pc ship product-user delete <PRODUCT_ID> <USER_ID>
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### `ship ticket` — 工单(list / get / create / update / search)
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
pc ship ticket list [--product-id <ID>] [--type-id <ID>] [--state-id <ID>] \
|
|
187
|
+
[--priority-id <ID>] [--keywords <KEYWORDS>] [--include-public-image-token <FIELDS>] \
|
|
188
|
+
[--page-index <INDEX>] [--page-size <SIZE>]
|
|
189
|
+
pc ship ticket get <TICKET_ID> [--include-public-image-token <FIELDS>] [--include-deleted]
|
|
190
|
+
pc ship ticket create --data <JSON>
|
|
191
|
+
pc ship ticket update --data <JSON> <TICKET_ID>
|
|
192
|
+
pc ship ticket search --data <JSON>
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### `ship ticket-channel` — 工单渠道(list-for-product)
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
pc ship ticket-channel list-for-product <ID>
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### `ship ticket-priority` — 工单优先级(list / list-for-product / get)
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
pc ship ticket-priority list [--page-index <INDEX>] [--page-size <SIZE>]
|
|
205
|
+
pc ship ticket-priority list-for-product <ID>
|
|
206
|
+
pc ship ticket-priority get <PRIORITY_ID>
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### `ship ticket-property` — 工单属性定义(list / list-for-product / get / create / update)
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
pc ship ticket-property list [--page-index <INDEX>] [--page-size <SIZE>]
|
|
213
|
+
pc ship ticket-property list-for-product <ID>
|
|
214
|
+
pc ship ticket-property get <PROPERTY_ID>
|
|
215
|
+
pc ship ticket-property create --data <JSON>
|
|
216
|
+
pc ship ticket-property update --data <JSON> <PROPERTY_ID>
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### `ship ticket-property-plan` — 工单属性方案(list / get / add-property / list-properties / get-property / remove-property)
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
pc ship ticket-property-plan list [--page-index <INDEX>] [--page-size <SIZE>]
|
|
223
|
+
pc ship ticket-property-plan get <PROPERTY_PLAN_ID>
|
|
224
|
+
pc ship ticket-property-plan add-property --data <JSON> <PROPERTY_PLAN_ID>
|
|
225
|
+
pc ship ticket-property-plan list-properties <PROPERTY_PLAN_ID>
|
|
226
|
+
pc ship ticket-property-plan get-property <PROPERTY_PLAN_ID> <PROPERTY_ID>
|
|
227
|
+
pc ship ticket-property-plan remove-property <PROPERTY_PLAN_ID> <PROPERTY_ID>
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### `ship ticket-solution` — 工单解决方案(list / list-for-product / get)
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
pc ship ticket-solution list [--page-index <INDEX>] [--page-size <SIZE>]
|
|
234
|
+
pc ship ticket-solution list-for-product <ID>
|
|
235
|
+
pc ship ticket-solution get <TICKET_SOLUTION_ID>
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### `ship ticket-state` — 工单状态(list / list-for-product / get / create / update)
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
pc ship ticket-state list [--page-index <INDEX>] [--page-size <SIZE>]
|
|
242
|
+
pc ship ticket-state list-for-product <ID>
|
|
243
|
+
pc ship ticket-state get <TICKET_STATE_ID>
|
|
244
|
+
pc ship ticket-state create --data <JSON>
|
|
245
|
+
pc ship ticket-state update --data <JSON> <TICKET_STATE_ID>
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### `ship ticket-state-plan` — 工单状态方案与流转(list / get / add-state / list-states / get-state / remove-state / add-flow / list-flows / get-flow / remove-flow)
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
pc ship ticket-state-plan list [--page-index <INDEX>] [--page-size <SIZE>]
|
|
252
|
+
pc ship ticket-state-plan get <STATE_PLAN_ID>
|
|
253
|
+
pc ship ticket-state-plan add-state --data <JSON> <STATE_PLAN_ID>
|
|
254
|
+
pc ship ticket-state-plan list-states <STATE_PLAN_ID>
|
|
255
|
+
pc ship ticket-state-plan get-state <STATE_PLAN_ID> <STATE_ID>
|
|
256
|
+
pc ship ticket-state-plan remove-state <STATE_PLAN_ID> <STATE_ID>
|
|
257
|
+
pc ship ticket-state-plan add-flow --data <JSON> <STATE_PLAN_ID>
|
|
258
|
+
pc ship ticket-state-plan list-flows <STATE_PLAN_ID>
|
|
259
|
+
pc ship ticket-state-plan get-flow <STATE_PLAN_ID> <STATE_FLOW_ID>
|
|
260
|
+
pc ship ticket-state-plan remove-flow <STATE_PLAN_ID> <STATE_FLOW_ID>
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### `ship ticket-tag` — 工单标签(list-for-product)
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
pc ship ticket-tag list-for-product <ID>
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### `ship ticket-transition` — 工单流转(list / get)
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
pc ship ticket-transition list <TICKET_ID>
|
|
273
|
+
pc ship ticket-transition get <TICKET_ID> <TRANSITION_HISTORY_ID>
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### `ship ticket-type` — 工单类型(list / list-for-product / get)
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
pc ship ticket-type list [--page-index <INDEX>] [--page-size <SIZE>]
|
|
280
|
+
pc ship ticket-type list-for-product <ID>
|
|
281
|
+
pc ship ticket-type get <TICKET_TYPE_ID>
|
|
282
|
+
```
|