zt-devops-cli 0.2.0__tar.gz → 0.2.2__tar.gz

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.
@@ -0,0 +1,287 @@
1
+ Metadata-Version: 2.4
2
+ Name: zt-devops-cli
3
+ Version: 0.2.2
4
+ Summary: DevOps 平台迭代管理 CLI
5
+ Requires-Python: >=3.10
6
+ Description-Content-Type: text/markdown
7
+ Requires-Dist: playwright>=1.40.0
8
+ Requires-Dist: requests>=2.31.0
9
+ Requires-Dist: click>=8.1.0
10
+ Requires-Dist: pyyaml>=6.0
11
+
12
+ # DevOps CLI
13
+
14
+ 蓝鲸 DevOps(ZTN)平台迭代、任务、缺陷等能力的命令行工具。
15
+
16
+ ## 打包
17
+
18
+ ```bash
19
+ uv pip install --upgrade build twine
20
+ uv build
21
+ uv publish
22
+ ```
23
+
24
+ ## 安装
25
+
26
+ **源码安装**
27
+
28
+ ```bash
29
+ pip install -e .
30
+ ```
31
+
32
+ **pip / pipx 安装**
33
+
34
+ ```bash
35
+ pipx install zt-devops-cli
36
+ ```
37
+
38
+ ## 使用
39
+
40
+ ### 全局选项
41
+
42
+ 根命令 `zt-devops-cli` 支持:
43
+
44
+ | 选项 | 说明 |
45
+ |------|------|
46
+ | `-p` / `--project` | 默认项目 ID;**仅对子命令里 `-p` 为可选的命令**生效,解析顺序为「子命令 `-p` → 根命令 `-p` → `config.yaml` 的 `default_project`」 |
47
+ | `-o` / `--output` | `json`(默认)或 `human`;列表类在 `human` 下为表格,部分写操作在 `human` 下仅输出简短成功信息 |
48
+
49
+ **注意(Click 解析)**:若子命令将 `-p` / `--project` 标为必填(如 `bug list`、`task list`、`bug create`、缺陷流转等),则必须在**该子命令后**再写一遍 `-p`,根命令上的 `-p` 不会自动填入子命令参数。
50
+
51
+ 示例(`sprint list` 的 `-p` 可选,可用根级 `-p`):
52
+
53
+ ```bash
54
+ zt-devops-cli -o human -p k64352 sprint list
55
+ ```
56
+
57
+ 示例(`bug list` 的 `-p` 为子命令必填,须写在 `bug list` 之后):
58
+
59
+ ```bash
60
+ zt-devops-cli -o human bug list -p b9f157 --num 1 --size 20
61
+ ```
62
+
63
+ ### 登录
64
+
65
+ 首次或 cookie 失效时会走浏览器登录流程;成功后将 cookie 写入本地缓存。
66
+
67
+ ```bash
68
+ zt-devops-cli login
69
+ ```
70
+
71
+ 需要弹出窗口手动登录时(无环境变量自动填表时):
72
+
73
+ ```bash
74
+ zt-devops-cli login --headed
75
+ ```
76
+
77
+ 无头自动登录依赖环境变量 `ZT_SSO_USERNAME`、`ZT_SSO_PASSWORD`(见 `auth` 模块说明)。
78
+
79
+ ### 项目管理
80
+
81
+ ```bash
82
+ zt-devops-cli project list
83
+ ```
84
+
85
+ ### ZTeam 项目
86
+
87
+ ```bash
88
+ zt-devops-cli zteam-project list --project f39507
89
+ ```
90
+
91
+ ### 迭代管理
92
+
93
+ **迭代列表**
94
+
95
+ ```bash
96
+ zt-devops-cli sprint list --project k64352
97
+ # 或与根命令 -p 组合(本子命令 -p 可选)
98
+ zt-devops-cli -p k64352 sprint list
99
+ ```
100
+
101
+ **迭代提测列表**
102
+
103
+ ```bash
104
+ zt-devops-cli sprint test-list --project b9f157 \
105
+ --search "BSC_V26.701.01" \
106
+ --num 1 \
107
+ --size 10
108
+ ```
109
+
110
+ 可选筛选:`--result`、`--create-user`、`--create-time`、`--principal`、`--obj-id`(均可重复传入)。
111
+
112
+ **创建迭代**
113
+
114
+ ```bash
115
+ zt-devops-cli sprint create --project k64352 \
116
+ --title "迭代名称" \
117
+ --start-date 2026-04-04 \
118
+ --end-date 2026-05-30 \
119
+ --purpose "迭代目标"
120
+ ```
121
+
122
+ 日期可用简写:`-s` / `--start-date`、`-e` / `--end-date`。可选:`--test-start`、`--test-end`。
123
+
124
+ **启用 / 删除 / 完成迭代**
125
+
126
+ ```bash
127
+ zt-devops-cli sprint start --project k64352 -i <sprint-id>
128
+ zt-devops-cli sprint delete --project k64352 -i <sprint-id>
129
+ zt-devops-cli sprint done --project k64352 -i <sprint-id>
130
+ ```
131
+
132
+ `-i` 即 `--sprint-id`。`delete` / `done` 会交互确认。
133
+
134
+ ### 任务管理
135
+
136
+ **查询任务列表(TASK)**
137
+
138
+ 子命令上 `-p` **必填**。另须 `--start-date`、`--end-date`。可选:`--creator`、`--num`、`--size`、`--remember` / `--no-remember`(默认 `--no-remember`)。
139
+
140
+ ```bash
141
+ zt-devops-cli task list -p f39507 \
142
+ --start-date 2026-04-01 \
143
+ --end-date 2026-04-30 \
144
+ --creator zt07905
145
+ ```
146
+
147
+ **创建任务(TASK)**
148
+
149
+ 子命令上 `-p` **必填**。另须 `-t` / `--title`、`--owner`、`--estimate-start`、`--estimate-end`、`--zteam-project-id`(平台项目 ID 来自 `project list`,ZTeam 项目 ID 来自 `zteam-project list`)。
150
+
151
+ ```bash
152
+ zt-devops-cli task create \
153
+ -p "<project-id>" \
154
+ --title "<任务标题>" \
155
+ --owner zt07905 \
156
+ --estimate-start 2026-04-01 \
157
+ --estimate-end 2026-04-30 \
158
+ --zteam-project-id "<zteam-project-id>"
159
+ ```
160
+
161
+ 可选:`--model-type-id`、`--priority`、`--editor-type`、`--desc`、`--parent-id`、`--demand-classify`、`--origin-hours`、`--remain-hours`;扩展字段使用 `--field fieldId=value`(可多次)。
162
+
163
+ ### 缺陷管理
164
+
165
+ **查询缺陷列表(BUG)**
166
+
167
+ 子命令上 `-p` **必填**。与页面表格筛选相近。常用可选:`--num`、`--size`、`--remember` / `--no-remember`(默认 `--no-remember`)、`--operator`(逗号分隔多账号)、`--zteam-project`、`--owner-field` / `--owner`、`--state`(状态 ID,可先执行 `bug get-states`)、`--creator`、`--create-date` 或 `--create-start` + `--create-end`(二者须同时出现)。
168
+
169
+ ```bash
170
+ zt-devops-cli bug list -p b9f157 \
171
+ --num 1 \
172
+ --size 20
173
+ ```
174
+
175
+ **查询缺陷「状态」可选项**
176
+
177
+ ```bash
178
+ zt-devops-cli bug get-states -p b9f157
179
+ ```
180
+
181
+ 默认 `--all`;若与页面不一致可尝试 `--no-all`。
182
+
183
+ **查询缺陷「发现阶段」可选项**
184
+
185
+ ```bash
186
+ zt-devops-cli bug get-discovery-phases -p b9f157
187
+ ```
188
+
189
+ 默认 `--no-all`(与缺陷表 twBug 一致)。模板不同时可传 `--field-id`。若与页面不一致可试 `--all`。
190
+
191
+ **查询缺陷「解决方法」可选项**
192
+
193
+ ```bash
194
+ zt-devops-cli bug get-solution-methods -p b9f157
195
+ ```
196
+
197
+ 默认 `--no-all`。可选 `--field-id`。
198
+
199
+ **查询缺陷「类型」可选项**
200
+
201
+ ```bash
202
+ zt-devops-cli bug get-types -p b9f157
203
+ ```
204
+
205
+ 默认 `--no-all`。可选 `--field-id`。
206
+
207
+ **创建缺陷(BUG)**
208
+
209
+ 对应 `POST .../issue/{project}`。`--owner` 同时写入经办人与缺陷责任人;迭代、ZTeam、严重程度、类型、发现阶段、解决方法等使用代码内固定 `fieldId`(与团队抓包一致)。若你们项目字段不同,需改源码中的 `instance_values` 映射。
210
+
211
+ | 选项 | 说明 |
212
+ |------|------|
213
+ | `-p` / `--project` | 项目 ID(子命令必填) |
214
+ | `--zteam-project-id` | ZTeam 项目 ID |
215
+ | `--sprint-id` | 关联迭代 ID;可不关联时传空字符串 `""` |
216
+ | `-t` / `--title` | 标题 |
217
+ | `--severity` / `--type` / `--discovery-phase` | 与表单选项的 **value** 一致(非中文展示名) |
218
+ | `--solution-method` | 可选;解决方法字段的 value |
219
+ | `--owner` | 账号 |
220
+ | `--priority` | 默认 `CENTRAL` |
221
+ | `--desc` / `--desc-editor-type` | 描述 HTML 与编辑器类型,默认带四段模板 |
222
+ | `--parent-id`、`--model-type-id`、`--demand-classify` | 可选或保持默认 |
223
+
224
+ ```bash
225
+ zt-devops-cli bug create -p b9f157 \
226
+ --zteam-project-id 15678224 \
227
+ --sprint-id 3129a9cd7315457eb2963bfe19919e72 \
228
+ -t "缺陷标题示例" \
229
+ --owner zt07905 \
230
+ --severity 9Clfj3I8fR \
231
+ --type bgEHPFOjFt \
232
+ --discovery-phase vENjmMhXMC
233
+ ```
234
+
235
+ **缺陷工作流(接受 / 已解决 / 已验证 / 关闭 / 重新打开 / 拒绝)**
236
+
237
+ 均调用 `POST .../issue_direction/{project}/next`。各动作对应的 `nextNodeId` 写死在 `api.BUG_DIRECTION_NEXT_NODE_IDS`(与某项目浏览器抓包一致);若你们项目工作流节点不同,需改源码中该表。
238
+
239
+ 子命令参数(Click 下均为**该子命令**上的必填项):
240
+
241
+ - **`-i` / `--bug-id`**:缺陷 ID。
242
+ - **`-p` / `--project`**:项目 ID(须在子命令上显式传入,勿依赖仅写在根命令上的 `-p`)。
243
+ - **`--operator`**:经办人账号,英文逗号分隔多个。
244
+ - **`--comment`**:可选,流转备注(富文本 HTML,例如 `'<p>说明</p>'`)。
245
+
246
+ ```bash
247
+ zt-devops-cli bug accept -p b9f157 -i <bug-id> --operator zt07905 --comment '<p>说明</p>'
248
+ zt-devops-cli bug resolve -p b9f157 -i <bug-id> --operator zt07905
249
+ zt-devops-cli bug verify -p b9f157 -i <bug-id> --operator zt07905,user02
250
+ zt-devops-cli bug close -p b9f157 -i <bug-id> --operator zt07905
251
+ zt-devops-cli bug reopen -p b9f157 -i <bug-id> --operator zt07905
252
+ zt-devops-cli bug reject -p b9f157 -i <bug-id> --operator zt07905
253
+ ```
254
+
255
+ 在 `~/.zt-devops-cli/config.yaml` 中可写默认项目(便于省略**允许默认合并**的子命令上的 `-p`):
256
+
257
+ ```yaml
258
+ default_project: b9f157
259
+ ```
260
+
261
+ **删除缺陷**
262
+
263
+ ```bash
264
+ zt-devops-cli bug delete -p b9f157 -i <bug-id>
265
+ zt-devops-cli bug delete -p b9f157 -i <bug-id> -y
266
+ ```
267
+
268
+ `-y` / `--yes` 跳过交互确认。
269
+
270
+ ### 需求 / 工作项
271
+
272
+ **查询自定义字段下拉可选项**
273
+
274
+ 子命令上 `-p`、`--field-id`、`--classify` 均为必填。用于按字段与工作项类型拉取与页面 `issue_field_value/.../option/{fieldId}` 一致的选项列表(`classify` 与页面一致,如 `BUG`、`TASK`、`STORY`)。
275
+
276
+ ```bash
277
+ zt-devops-cli issue field-options -p b9f157 \
278
+ --field-id <fieldId> \
279
+ --classify BUG
280
+ ```
281
+
282
+ `--all` / `--no-all`:是否对应页面 `all` 参数(默认 `--no-all`)。
283
+
284
+ ## 配置
285
+
286
+ - Cookie 缓存:`~/.zt-devops-cli/cookies.json`
287
+ - 配置文件:`~/.zt-devops-cli/config.yaml`(常用键:`default_project`,解析时等同「根命令 `-p`」参与合并;另支持 `browser_channel`,默认 `chromium`)
@@ -0,0 +1,276 @@
1
+ # DevOps CLI
2
+
3
+ 蓝鲸 DevOps(ZTN)平台迭代、任务、缺陷等能力的命令行工具。
4
+
5
+ ## 打包
6
+
7
+ ```bash
8
+ uv pip install --upgrade build twine
9
+ uv build
10
+ uv publish
11
+ ```
12
+
13
+ ## 安装
14
+
15
+ **源码安装**
16
+
17
+ ```bash
18
+ pip install -e .
19
+ ```
20
+
21
+ **pip / pipx 安装**
22
+
23
+ ```bash
24
+ pipx install zt-devops-cli
25
+ ```
26
+
27
+ ## 使用
28
+
29
+ ### 全局选项
30
+
31
+ 根命令 `zt-devops-cli` 支持:
32
+
33
+ | 选项 | 说明 |
34
+ |------|------|
35
+ | `-p` / `--project` | 默认项目 ID;**仅对子命令里 `-p` 为可选的命令**生效,解析顺序为「子命令 `-p` → 根命令 `-p` → `config.yaml` 的 `default_project`」 |
36
+ | `-o` / `--output` | `json`(默认)或 `human`;列表类在 `human` 下为表格,部分写操作在 `human` 下仅输出简短成功信息 |
37
+
38
+ **注意(Click 解析)**:若子命令将 `-p` / `--project` 标为必填(如 `bug list`、`task list`、`bug create`、缺陷流转等),则必须在**该子命令后**再写一遍 `-p`,根命令上的 `-p` 不会自动填入子命令参数。
39
+
40
+ 示例(`sprint list` 的 `-p` 可选,可用根级 `-p`):
41
+
42
+ ```bash
43
+ zt-devops-cli -o human -p k64352 sprint list
44
+ ```
45
+
46
+ 示例(`bug list` 的 `-p` 为子命令必填,须写在 `bug list` 之后):
47
+
48
+ ```bash
49
+ zt-devops-cli -o human bug list -p b9f157 --num 1 --size 20
50
+ ```
51
+
52
+ ### 登录
53
+
54
+ 首次或 cookie 失效时会走浏览器登录流程;成功后将 cookie 写入本地缓存。
55
+
56
+ ```bash
57
+ zt-devops-cli login
58
+ ```
59
+
60
+ 需要弹出窗口手动登录时(无环境变量自动填表时):
61
+
62
+ ```bash
63
+ zt-devops-cli login --headed
64
+ ```
65
+
66
+ 无头自动登录依赖环境变量 `ZT_SSO_USERNAME`、`ZT_SSO_PASSWORD`(见 `auth` 模块说明)。
67
+
68
+ ### 项目管理
69
+
70
+ ```bash
71
+ zt-devops-cli project list
72
+ ```
73
+
74
+ ### ZTeam 项目
75
+
76
+ ```bash
77
+ zt-devops-cli zteam-project list --project f39507
78
+ ```
79
+
80
+ ### 迭代管理
81
+
82
+ **迭代列表**
83
+
84
+ ```bash
85
+ zt-devops-cli sprint list --project k64352
86
+ # 或与根命令 -p 组合(本子命令 -p 可选)
87
+ zt-devops-cli -p k64352 sprint list
88
+ ```
89
+
90
+ **迭代提测列表**
91
+
92
+ ```bash
93
+ zt-devops-cli sprint test-list --project b9f157 \
94
+ --search "BSC_V26.701.01" \
95
+ --num 1 \
96
+ --size 10
97
+ ```
98
+
99
+ 可选筛选:`--result`、`--create-user`、`--create-time`、`--principal`、`--obj-id`(均可重复传入)。
100
+
101
+ **创建迭代**
102
+
103
+ ```bash
104
+ zt-devops-cli sprint create --project k64352 \
105
+ --title "迭代名称" \
106
+ --start-date 2026-04-04 \
107
+ --end-date 2026-05-30 \
108
+ --purpose "迭代目标"
109
+ ```
110
+
111
+ 日期可用简写:`-s` / `--start-date`、`-e` / `--end-date`。可选:`--test-start`、`--test-end`。
112
+
113
+ **启用 / 删除 / 完成迭代**
114
+
115
+ ```bash
116
+ zt-devops-cli sprint start --project k64352 -i <sprint-id>
117
+ zt-devops-cli sprint delete --project k64352 -i <sprint-id>
118
+ zt-devops-cli sprint done --project k64352 -i <sprint-id>
119
+ ```
120
+
121
+ `-i` 即 `--sprint-id`。`delete` / `done` 会交互确认。
122
+
123
+ ### 任务管理
124
+
125
+ **查询任务列表(TASK)**
126
+
127
+ 子命令上 `-p` **必填**。另须 `--start-date`、`--end-date`。可选:`--creator`、`--num`、`--size`、`--remember` / `--no-remember`(默认 `--no-remember`)。
128
+
129
+ ```bash
130
+ zt-devops-cli task list -p f39507 \
131
+ --start-date 2026-04-01 \
132
+ --end-date 2026-04-30 \
133
+ --creator zt07905
134
+ ```
135
+
136
+ **创建任务(TASK)**
137
+
138
+ 子命令上 `-p` **必填**。另须 `-t` / `--title`、`--owner`、`--estimate-start`、`--estimate-end`、`--zteam-project-id`(平台项目 ID 来自 `project list`,ZTeam 项目 ID 来自 `zteam-project list`)。
139
+
140
+ ```bash
141
+ zt-devops-cli task create \
142
+ -p "<project-id>" \
143
+ --title "<任务标题>" \
144
+ --owner zt07905 \
145
+ --estimate-start 2026-04-01 \
146
+ --estimate-end 2026-04-30 \
147
+ --zteam-project-id "<zteam-project-id>"
148
+ ```
149
+
150
+ 可选:`--model-type-id`、`--priority`、`--editor-type`、`--desc`、`--parent-id`、`--demand-classify`、`--origin-hours`、`--remain-hours`;扩展字段使用 `--field fieldId=value`(可多次)。
151
+
152
+ ### 缺陷管理
153
+
154
+ **查询缺陷列表(BUG)**
155
+
156
+ 子命令上 `-p` **必填**。与页面表格筛选相近。常用可选:`--num`、`--size`、`--remember` / `--no-remember`(默认 `--no-remember`)、`--operator`(逗号分隔多账号)、`--zteam-project`、`--owner-field` / `--owner`、`--state`(状态 ID,可先执行 `bug get-states`)、`--creator`、`--create-date` 或 `--create-start` + `--create-end`(二者须同时出现)。
157
+
158
+ ```bash
159
+ zt-devops-cli bug list -p b9f157 \
160
+ --num 1 \
161
+ --size 20
162
+ ```
163
+
164
+ **查询缺陷「状态」可选项**
165
+
166
+ ```bash
167
+ zt-devops-cli bug get-states -p b9f157
168
+ ```
169
+
170
+ 默认 `--all`;若与页面不一致可尝试 `--no-all`。
171
+
172
+ **查询缺陷「发现阶段」可选项**
173
+
174
+ ```bash
175
+ zt-devops-cli bug get-discovery-phases -p b9f157
176
+ ```
177
+
178
+ 默认 `--no-all`(与缺陷表 twBug 一致)。模板不同时可传 `--field-id`。若与页面不一致可试 `--all`。
179
+
180
+ **查询缺陷「解决方法」可选项**
181
+
182
+ ```bash
183
+ zt-devops-cli bug get-solution-methods -p b9f157
184
+ ```
185
+
186
+ 默认 `--no-all`。可选 `--field-id`。
187
+
188
+ **查询缺陷「类型」可选项**
189
+
190
+ ```bash
191
+ zt-devops-cli bug get-types -p b9f157
192
+ ```
193
+
194
+ 默认 `--no-all`。可选 `--field-id`。
195
+
196
+ **创建缺陷(BUG)**
197
+
198
+ 对应 `POST .../issue/{project}`。`--owner` 同时写入经办人与缺陷责任人;迭代、ZTeam、严重程度、类型、发现阶段、解决方法等使用代码内固定 `fieldId`(与团队抓包一致)。若你们项目字段不同,需改源码中的 `instance_values` 映射。
199
+
200
+ | 选项 | 说明 |
201
+ |------|------|
202
+ | `-p` / `--project` | 项目 ID(子命令必填) |
203
+ | `--zteam-project-id` | ZTeam 项目 ID |
204
+ | `--sprint-id` | 关联迭代 ID;可不关联时传空字符串 `""` |
205
+ | `-t` / `--title` | 标题 |
206
+ | `--severity` / `--type` / `--discovery-phase` | 与表单选项的 **value** 一致(非中文展示名) |
207
+ | `--solution-method` | 可选;解决方法字段的 value |
208
+ | `--owner` | 账号 |
209
+ | `--priority` | 默认 `CENTRAL` |
210
+ | `--desc` / `--desc-editor-type` | 描述 HTML 与编辑器类型,默认带四段模板 |
211
+ | `--parent-id`、`--model-type-id`、`--demand-classify` | 可选或保持默认 |
212
+
213
+ ```bash
214
+ zt-devops-cli bug create -p b9f157 \
215
+ --zteam-project-id 15678224 \
216
+ --sprint-id 3129a9cd7315457eb2963bfe19919e72 \
217
+ -t "缺陷标题示例" \
218
+ --owner zt07905 \
219
+ --severity 9Clfj3I8fR \
220
+ --type bgEHPFOjFt \
221
+ --discovery-phase vENjmMhXMC
222
+ ```
223
+
224
+ **缺陷工作流(接受 / 已解决 / 已验证 / 关闭 / 重新打开 / 拒绝)**
225
+
226
+ 均调用 `POST .../issue_direction/{project}/next`。各动作对应的 `nextNodeId` 写死在 `api.BUG_DIRECTION_NEXT_NODE_IDS`(与某项目浏览器抓包一致);若你们项目工作流节点不同,需改源码中该表。
227
+
228
+ 子命令参数(Click 下均为**该子命令**上的必填项):
229
+
230
+ - **`-i` / `--bug-id`**:缺陷 ID。
231
+ - **`-p` / `--project`**:项目 ID(须在子命令上显式传入,勿依赖仅写在根命令上的 `-p`)。
232
+ - **`--operator`**:经办人账号,英文逗号分隔多个。
233
+ - **`--comment`**:可选,流转备注(富文本 HTML,例如 `'<p>说明</p>'`)。
234
+
235
+ ```bash
236
+ zt-devops-cli bug accept -p b9f157 -i <bug-id> --operator zt07905 --comment '<p>说明</p>'
237
+ zt-devops-cli bug resolve -p b9f157 -i <bug-id> --operator zt07905
238
+ zt-devops-cli bug verify -p b9f157 -i <bug-id> --operator zt07905,user02
239
+ zt-devops-cli bug close -p b9f157 -i <bug-id> --operator zt07905
240
+ zt-devops-cli bug reopen -p b9f157 -i <bug-id> --operator zt07905
241
+ zt-devops-cli bug reject -p b9f157 -i <bug-id> --operator zt07905
242
+ ```
243
+
244
+ 在 `~/.zt-devops-cli/config.yaml` 中可写默认项目(便于省略**允许默认合并**的子命令上的 `-p`):
245
+
246
+ ```yaml
247
+ default_project: b9f157
248
+ ```
249
+
250
+ **删除缺陷**
251
+
252
+ ```bash
253
+ zt-devops-cli bug delete -p b9f157 -i <bug-id>
254
+ zt-devops-cli bug delete -p b9f157 -i <bug-id> -y
255
+ ```
256
+
257
+ `-y` / `--yes` 跳过交互确认。
258
+
259
+ ### 需求 / 工作项
260
+
261
+ **查询自定义字段下拉可选项**
262
+
263
+ 子命令上 `-p`、`--field-id`、`--classify` 均为必填。用于按字段与工作项类型拉取与页面 `issue_field_value/.../option/{fieldId}` 一致的选项列表(`classify` 与页面一致,如 `BUG`、`TASK`、`STORY`)。
264
+
265
+ ```bash
266
+ zt-devops-cli issue field-options -p b9f157 \
267
+ --field-id <fieldId> \
268
+ --classify BUG
269
+ ```
270
+
271
+ `--all` / `--no-all`:是否对应页面 `all` 参数(默认 `--no-all`)。
272
+
273
+ ## 配置
274
+
275
+ - Cookie 缓存:`~/.zt-devops-cli/cookies.json`
276
+ - 配置文件:`~/.zt-devops-cli/config.yaml`(常用键:`default_project`,解析时等同「根命令 `-p`」参与合并;另支持 `browser_channel`,默认 `chromium`)
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "zt-devops-cli"
7
- version = "0.2.0"
7
+ version = "0.2.2"
8
8
  description = "DevOps 平台迭代管理 CLI"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -169,9 +169,9 @@ def zteam_project():
169
169
  @click.option("--title", "-t", required=True, help="迭代名称")
170
170
  @click.option("--start-date", "-s", required=True, help="开始日期 (YYYY-MM-DD)")
171
171
  @click.option("--end-date", "-e", required=True, help="结束日期 (YYYY-MM-DD)")
172
- @click.option("--purpose", help="迭代目标")
173
- @click.option("--test-start", help="测试开始日期")
174
- @click.option("--test-end", help="测试结束日期")
172
+ @click.option("--purpose", required=True, help="迭代目标")
173
+ @click.option("--test-start", required=True, help="测试开始日期")
174
+ @click.option("--test-end",required=True, help="测试结束日期")
175
175
  @click.pass_context
176
176
  def create_sprint(ctx, project, title, start_date, end_date, purpose, test_start, test_end):
177
177
  """创建迭代"""
@@ -190,7 +190,12 @@ def create_sprint(ctx, project, title, start_date, end_date, purpose, test_start
190
190
  test_start_date=test_start,
191
191
  test_end_date=test_end,
192
192
  )
193
- click.echo(f"创建成功! 迭代 ID: {result.get('id')}")
193
+
194
+ if result.get("0") == "0":
195
+ click.echo(f"创建成功! 迭代 ID: {result.get('id')}")
196
+ else:
197
+ click.echo(f"错误: {result.get('message')}", err=True)
198
+
194
199
  except Exception as e:
195
200
  click.echo(f"错误: {e}", err=True)
196
201