meeglesdk 0.1.0

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.
Files changed (190) hide show
  1. package/README.md +191 -0
  2. package/dist/client.d.ts +186 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +197 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/core/base-service.d.ts +156 -0
  7. package/dist/core/base-service.d.ts.map +1 -0
  8. package/dist/core/base-service.js +240 -0
  9. package/dist/core/base-service.js.map +1 -0
  10. package/dist/core/errors.d.ts +181 -0
  11. package/dist/core/errors.d.ts.map +1 -0
  12. package/dist/core/errors.js +250 -0
  13. package/dist/core/errors.js.map +1 -0
  14. package/dist/core/rate-limiter.d.ts +72 -0
  15. package/dist/core/rate-limiter.d.ts.map +1 -0
  16. package/dist/core/rate-limiter.js +269 -0
  17. package/dist/core/rate-limiter.js.map +1 -0
  18. package/dist/core/request.d.ts +270 -0
  19. package/dist/core/request.d.ts.map +1 -0
  20. package/dist/core/request.js +842 -0
  21. package/dist/core/request.js.map +1 -0
  22. package/dist/core/token-manager.d.ts +134 -0
  23. package/dist/core/token-manager.d.ts.map +1 -0
  24. package/dist/core/token-manager.js +412 -0
  25. package/dist/core/token-manager.js.map +1 -0
  26. package/dist/helpers/auth.d.ts +7 -0
  27. package/dist/helpers/auth.d.ts.map +1 -0
  28. package/dist/helpers/auth.js +19 -0
  29. package/dist/helpers/auth.js.map +1 -0
  30. package/dist/index.d.ts +72 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +61 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/service/auth/index.d.ts +96 -0
  35. package/dist/service/auth/index.d.ts.map +1 -0
  36. package/dist/service/auth/index.js +163 -0
  37. package/dist/service/auth/index.js.map +1 -0
  38. package/dist/service/config/basic.d.ts +37 -0
  39. package/dist/service/config/basic.d.ts.map +1 -0
  40. package/dist/service/config/basic.js +54 -0
  41. package/dist/service/config/basic.js.map +1 -0
  42. package/dist/service/config/config.d.ts +27 -0
  43. package/dist/service/config/config.d.ts.map +1 -0
  44. package/dist/service/config/config.js +34 -0
  45. package/dist/service/config/config.js.map +1 -0
  46. package/dist/service/config/field.d.ts +50 -0
  47. package/dist/service/config/field.d.ts.map +1 -0
  48. package/dist/service/config/field.js +74 -0
  49. package/dist/service/config/field.js.map +1 -0
  50. package/dist/service/config/relation.d.ts +53 -0
  51. package/dist/service/config/relation.d.ts.map +1 -0
  52. package/dist/service/config/relation.js +66 -0
  53. package/dist/service/config/relation.js.map +1 -0
  54. package/dist/service/config/resource.d.ts +59 -0
  55. package/dist/service/config/resource.d.ts.map +1 -0
  56. package/dist/service/config/resource.js +75 -0
  57. package/dist/service/config/resource.js.map +1 -0
  58. package/dist/service/config/role.d.ts +55 -0
  59. package/dist/service/config/role.d.ts.map +1 -0
  60. package/dist/service/config/role.js +90 -0
  61. package/dist/service/config/role.js.map +1 -0
  62. package/dist/service/config/template.d.ts +65 -0
  63. package/dist/service/config/template.d.ts.map +1 -0
  64. package/dist/service/config/template.js +95 -0
  65. package/dist/service/config/template.js.map +1 -0
  66. package/dist/service/measure/index.d.ts +26 -0
  67. package/dist/service/measure/index.d.ts.map +1 -0
  68. package/dist/service/measure/index.js +36 -0
  69. package/dist/service/measure/index.js.map +1 -0
  70. package/dist/service/measure/query.d.ts +56 -0
  71. package/dist/service/measure/query.d.ts.map +1 -0
  72. package/dist/service/measure/query.js +86 -0
  73. package/dist/service/measure/query.js.map +1 -0
  74. package/dist/service/space/relation.d.ts +63 -0
  75. package/dist/service/space/relation.d.ts.map +1 -0
  76. package/dist/service/space/relation.js +102 -0
  77. package/dist/service/space/relation.js.map +1 -0
  78. package/dist/service/space/space.d.ts +81 -0
  79. package/dist/service/space/space.d.ts.map +1 -0
  80. package/dist/service/space/space.js +110 -0
  81. package/dist/service/space/space.js.map +1 -0
  82. package/dist/service/tenant/tenant.d.ts +52 -0
  83. package/dist/service/tenant/tenant.d.ts.map +1 -0
  84. package/dist/service/tenant/tenant.js +75 -0
  85. package/dist/service/tenant/tenant.js.map +1 -0
  86. package/dist/service/user/group.d.ts +47 -0
  87. package/dist/service/user/group.d.ts.map +1 -0
  88. package/dist/service/user/group.js +70 -0
  89. package/dist/service/user/group.js.map +1 -0
  90. package/dist/service/user/query.d.ts +25 -0
  91. package/dist/service/user/query.d.ts.map +1 -0
  92. package/dist/service/user/query.js +26 -0
  93. package/dist/service/user/query.js.map +1 -0
  94. package/dist/service/user/search.d.ts +25 -0
  95. package/dist/service/user/search.d.ts.map +1 -0
  96. package/dist/service/user/search.js +26 -0
  97. package/dist/service/user/search.js.map +1 -0
  98. package/dist/service/user/user.d.ts +37 -0
  99. package/dist/service/user/user.d.ts.map +1 -0
  100. package/dist/service/user/user.js +46 -0
  101. package/dist/service/user/user.js.map +1 -0
  102. package/dist/service/view/query.d.ts +52 -0
  103. package/dist/service/view/query.d.ts.map +1 -0
  104. package/dist/service/view/query.js +76 -0
  105. package/dist/service/view/query.js.map +1 -0
  106. package/dist/service/view/view.d.ts +76 -0
  107. package/dist/service/view/view.d.ts.map +1 -0
  108. package/dist/service/view/view.js +108 -0
  109. package/dist/service/view/view.js.map +1 -0
  110. package/dist/service/workitem/attachment.d.ts +143 -0
  111. package/dist/service/workitem/attachment.d.ts.map +1 -0
  112. package/dist/service/workitem/attachment.js +231 -0
  113. package/dist/service/workitem/attachment.js.map +1 -0
  114. package/dist/service/workitem/batch.d.ts +135 -0
  115. package/dist/service/workitem/batch.d.ts.map +1 -0
  116. package/dist/service/workitem/batch.js +146 -0
  117. package/dist/service/workitem/batch.js.map +1 -0
  118. package/dist/service/workitem/chat.d.ts +42 -0
  119. package/dist/service/workitem/chat.d.ts.map +1 -0
  120. package/dist/service/workitem/chat.js +50 -0
  121. package/dist/service/workitem/chat.js.map +1 -0
  122. package/dist/service/workitem/comment.d.ts +139 -0
  123. package/dist/service/workitem/comment.d.ts.map +1 -0
  124. package/dist/service/workitem/comment.js +180 -0
  125. package/dist/service/workitem/comment.js.map +1 -0
  126. package/dist/service/workitem/review.d.ts +44 -0
  127. package/dist/service/workitem/review.d.ts.map +1 -0
  128. package/dist/service/workitem/review.js +49 -0
  129. package/dist/service/workitem/review.js.map +1 -0
  130. package/dist/service/workitem/search.d.ts +213 -0
  131. package/dist/service/workitem/search.d.ts.map +1 -0
  132. package/dist/service/workitem/search.js +242 -0
  133. package/dist/service/workitem/search.js.map +1 -0
  134. package/dist/service/workitem/subtask.d.ts +193 -0
  135. package/dist/service/workitem/subtask.d.ts.map +1 -0
  136. package/dist/service/workitem/subtask.js +247 -0
  137. package/dist/service/workitem/subtask.js.map +1 -0
  138. package/dist/service/workitem/workItem.d.ts +225 -0
  139. package/dist/service/workitem/workItem.d.ts.map +1 -0
  140. package/dist/service/workitem/workItem.js +310 -0
  141. package/dist/service/workitem/workItem.js.map +1 -0
  142. package/dist/service/workitem/workflow.d.ts +214 -0
  143. package/dist/service/workitem/workflow.d.ts.map +1 -0
  144. package/dist/service/workitem/workflow.js +281 -0
  145. package/dist/service/workitem/workflow.js.map +1 -0
  146. package/dist/service/workitem/workhour.d.ts +63 -0
  147. package/dist/service/workitem/workhour.d.ts.map +1 -0
  148. package/dist/service/workitem/workhour.js +93 -0
  149. package/dist/service/workitem/workhour.js.map +1 -0
  150. package/dist/types/auth.d.ts +115 -0
  151. package/dist/types/auth.d.ts.map +1 -0
  152. package/dist/types/auth.js +6 -0
  153. package/dist/types/auth.js.map +1 -0
  154. package/dist/types/common.d.ts +354 -0
  155. package/dist/types/common.d.ts.map +1 -0
  156. package/dist/types/common.js +14 -0
  157. package/dist/types/common.js.map +1 -0
  158. package/dist/types/config.d.ts +305 -0
  159. package/dist/types/config.d.ts.map +1 -0
  160. package/dist/types/config.js +6 -0
  161. package/dist/types/config.js.map +1 -0
  162. package/dist/types/index.d.ts +13 -0
  163. package/dist/types/index.d.ts.map +1 -0
  164. package/dist/types/index.js +13 -0
  165. package/dist/types/index.js.map +1 -0
  166. package/dist/types/measure.d.ts +55 -0
  167. package/dist/types/measure.d.ts.map +1 -0
  168. package/dist/types/measure.js +6 -0
  169. package/dist/types/measure.js.map +1 -0
  170. package/dist/types/space.d.ts +164 -0
  171. package/dist/types/space.d.ts.map +1 -0
  172. package/dist/types/space.js +6 -0
  173. package/dist/types/space.js.map +1 -0
  174. package/dist/types/tenant.d.ts +106 -0
  175. package/dist/types/tenant.d.ts.map +1 -0
  176. package/dist/types/tenant.js +6 -0
  177. package/dist/types/tenant.js.map +1 -0
  178. package/dist/types/user.d.ts +110 -0
  179. package/dist/types/user.d.ts.map +1 -0
  180. package/dist/types/user.js +6 -0
  181. package/dist/types/user.js.map +1 -0
  182. package/dist/types/view.d.ts +162 -0
  183. package/dist/types/view.d.ts.map +1 -0
  184. package/dist/types/view.js +6 -0
  185. package/dist/types/view.js.map +1 -0
  186. package/dist/types/workitem.d.ts +1523 -0
  187. package/dist/types/workitem.d.ts.map +1 -0
  188. package/dist/types/workitem.js +6 -0
  189. package/dist/types/workitem.js.map +1 -0
  190. package/package.json +43 -0
@@ -0,0 +1,1523 @@
1
+ /**
2
+ * 工作项相关类型定义
3
+ * 100% 参考 Meego API 文档
4
+ */
5
+ import type { FieldValuePair, RoleOwner, Schedule, UserDetail, Connection, MultiText } from './common.js';
6
+ export type { UserDetail, Connection, MultiText };
7
+ /** 工作流模式 */
8
+ export type WorkItemPattern = 'Node' | 'State';
9
+ /** 节点/状态流节点状态 */
10
+ export type NodeStatus = 1 | 2 | 3;
11
+ /** 节点负责人设置方式 */
12
+ export type OwnerUsageMode = 1 | 2;
13
+ /**
14
+ * 当前节点信息(节点流)
15
+ */
16
+ export interface CurrentNode {
17
+ /** 节点 ID */
18
+ id: string;
19
+ /** 节点名称 */
20
+ name: string;
21
+ /** 负责人 user_key 数组 */
22
+ owners?: string[];
23
+ /** 是否里程碑 */
24
+ milestone?: boolean;
25
+ }
26
+ /**
27
+ * 工作项状态
28
+ */
29
+ export interface WorkItemStatus {
30
+ /** 状态 key */
31
+ state_key: string;
32
+ /** 是否为完成状态 */
33
+ is_archived_state: boolean;
34
+ /** 是否为初始状态 */
35
+ is_init_state: boolean;
36
+ /** 状态更新时间(毫秒) */
37
+ updated_at: number;
38
+ /** 状态更新人 user_key */
39
+ updated_by: string;
40
+ /** 历史变更记录 */
41
+ history?: WorkItemStatusHistory[];
42
+ }
43
+ /**
44
+ * 工作项状态历史
45
+ */
46
+ export interface WorkItemStatusHistory {
47
+ state_key: string;
48
+ is_archived_state: boolean;
49
+ is_init_state: boolean;
50
+ updated_at: number;
51
+ updated_by: string;
52
+ }
53
+ /**
54
+ * 状态时间记录
55
+ */
56
+ export interface StateTime {
57
+ /** 状态名称 */
58
+ name: string;
59
+ /** 状态 key */
60
+ state_key: string;
61
+ /** 开始时间(毫秒) */
62
+ start_time: number;
63
+ /** 结束时间(毫秒),0 表示未结束 */
64
+ end_time: number;
65
+ }
66
+ /**
67
+ * 工作流节点(节点流)
68
+ */
69
+ export interface WorkflowNode {
70
+ /** 节点 ID */
71
+ id: string;
72
+ /** 状态 key */
73
+ state_key: string;
74
+ /** 节点名称 */
75
+ name: string;
76
+ /** 节点状态 1:未开始 2:进行中 3:已完成 */
77
+ status: NodeStatus;
78
+ /** 节点表单字段 */
79
+ fields?: FieldValuePair[];
80
+ /** 负责人 user_key 数组 */
81
+ owners?: string[];
82
+ /** 节点总排期 */
83
+ node_schedule?: Schedule;
84
+ /** 差异化排期数组 */
85
+ schedules?: Schedule[];
86
+ /** 子任务列表 */
87
+ sub_tasks?: SubTask[];
88
+ /** 实际开始时间 */
89
+ actual_begin_time?: string;
90
+ /** 实际结束时间 */
91
+ actual_finish_time?: string;
92
+ /** 角色负责人 */
93
+ role_assignee?: RoleOwner[];
94
+ /** 是否里程碑节点 */
95
+ milestone?: boolean;
96
+ /** 负责人设置方式 */
97
+ owner_usage_mode?: OwnerUsageMode;
98
+ /** 是否差异化排期 */
99
+ different_schedule?: boolean;
100
+ }
101
+ /**
102
+ * 状态流节点
103
+ */
104
+ export interface StateFlowNode {
105
+ /** 状态 ID */
106
+ id: string;
107
+ /** 状态名称 */
108
+ name: string;
109
+ /** 状态 */
110
+ status: NodeStatus;
111
+ /** 字段 */
112
+ fields?: FieldValuePair[];
113
+ /** 角色负责人 */
114
+ role_owners?: RoleOwner[];
115
+ /** 状态开始时间 */
116
+ actual_begin_time?: string;
117
+ /** 状态结束时间 */
118
+ actual_finish_time?: string;
119
+ }
120
+ /**
121
+ * 工作流信息
122
+ */
123
+ export interface WorkflowInfo {
124
+ /** 模板版本 */
125
+ version: number;
126
+ /** 模板 ID */
127
+ template_id: number;
128
+ /** 用户详情 */
129
+ user_details?: UserDetail[];
130
+ /** 节点流节点数组 */
131
+ workflow_nodes?: WorkflowNode[];
132
+ /** 状态流节点数组 */
133
+ state_flow_nodes?: StateFlowNode[];
134
+ /** 连接数组 */
135
+ connections?: Array<{
136
+ transition_id?: number;
137
+ source_state_key: string;
138
+ target_state_key: string;
139
+ }>;
140
+ }
141
+ /**
142
+ * 关联字段详情
143
+ */
144
+ export interface RelationFieldDetail {
145
+ /** 关联字段 key */
146
+ field_key: string;
147
+ /** 关联详情 */
148
+ detail: Array<{
149
+ /** 关联工作项 ID */
150
+ story_id: number;
151
+ /** 关联空间 key */
152
+ project_key: string;
153
+ /** 关联工作项类型 */
154
+ work_item_type_key: string;
155
+ }>;
156
+ }
157
+ /**
158
+ * 工作项信息
159
+ */
160
+ export interface WorkItem {
161
+ /** 工作项 ID */
162
+ id: number;
163
+ /** 工作项名称 */
164
+ name: string;
165
+ /** 工作项类型 key */
166
+ work_item_type_key: string;
167
+ /** 所属空间 ID */
168
+ project_key: string;
169
+ /** 模板 ID */
170
+ template_id: number;
171
+ /** 模板类型 */
172
+ template_type?: string;
173
+ /** 工作流模式 */
174
+ pattern: WorkItemPattern;
175
+ /** 工作项标识 */
176
+ simple_name?: string;
177
+ /** 创建人 user_key */
178
+ created_by: string;
179
+ /** 更新人 user_key */
180
+ updated_by: string;
181
+ /** 删除人 user_key */
182
+ deleted_by?: string;
183
+ /** 创建时间(毫秒) */
184
+ created_at: number;
185
+ /** 更新时间(毫秒) */
186
+ updated_at: number;
187
+ /** 删除时间(毫秒) */
188
+ deleted_at?: number;
189
+ /** 当前节点(节点流) */
190
+ current_nodes?: CurrentNode[];
191
+ /** 工作项状态 */
192
+ work_item_status?: WorkItemStatus;
193
+ /** 状态时间记录(节点流) */
194
+ state_times?: StateTime[];
195
+ /** 字段列表 */
196
+ fields?: FieldValuePair[];
197
+ /** 用户详情(扩展查询) */
198
+ user_details?: UserDetail[];
199
+ /** 富文本信息(扩展查询) */
200
+ multi_texts?: MultiText[];
201
+ /** 工作流信息(扩展查询) */
202
+ workflow_infos?: WorkflowInfo;
203
+ /** 关联字段详情(扩展查询) */
204
+ relation_fields_detail?: RelationFieldDetail[];
205
+ }
206
+ /**
207
+ * 查询扩展选项
208
+ */
209
+ export interface QueryWorkItemExpand {
210
+ /** 是否需要用户详细信息 */
211
+ need_user_detail?: boolean;
212
+ /** 是否需要工作流信息 */
213
+ need_workflow?: boolean;
214
+ /** 是否需要富文本信息 */
215
+ need_multi_text?: boolean;
216
+ /** 是否需要关联字段详情 */
217
+ relation_fields_detail?: boolean;
218
+ /** 是否需要复合字段组标识 */
219
+ need_group_uuid_for_compound?: boolean;
220
+ }
221
+ /**
222
+ * 获取工作项详情请求
223
+ */
224
+ export interface QueryWorkItemRequest {
225
+ /** 工作项 ID 列表(最多 50 个) */
226
+ work_item_ids: number[];
227
+ /** 返回的字段(可选,默认全部) */
228
+ fields?: string[];
229
+ /** 扩展查询选项 */
230
+ expand?: QueryWorkItemExpand;
231
+ }
232
+ /**
233
+ * 创建工作项请求
234
+ */
235
+ export interface CreateWorkItemRequest {
236
+ /** 工作项类型 key */
237
+ work_item_type_key: string;
238
+ /** 工作项名称 */
239
+ name?: string;
240
+ /** 流程模板 ID */
241
+ template_id?: number;
242
+ /** 字段值列表 */
243
+ field_value_pairs?: FieldValuePair[];
244
+ }
245
+ /**
246
+ * 更新工作项请求
247
+ */
248
+ export interface UpdateWorkItemRequest {
249
+ /** 更新的字段 */
250
+ update_fields?: FieldValuePair[];
251
+ }
252
+ /**
253
+ * 删除工作项请求
254
+ */
255
+ export interface DeleteWorkItemRequest {
256
+ /** 工作项 ID */
257
+ work_item_id: number;
258
+ }
259
+ /**
260
+ * 字段选项
261
+ */
262
+ export interface FieldOption {
263
+ /** 选项值 */
264
+ value: string;
265
+ /** 选项标签 */
266
+ label: string;
267
+ /** 是否默认选中 */
268
+ is_default?: boolean;
269
+ /** 子选项(级联) */
270
+ children?: FieldOption[];
271
+ }
272
+ /**
273
+ * 字段元数据
274
+ */
275
+ export interface FieldMeta {
276
+ /** 字段 key */
277
+ field_key: string;
278
+ /** 字段别名 */
279
+ field_alias?: string;
280
+ /** 字段名称 */
281
+ field_name: string;
282
+ /** 字段类型 */
283
+ field_type_key: string;
284
+ /** 是否必填 */
285
+ is_required?: boolean;
286
+ /** 是否可编辑 */
287
+ is_editable?: boolean;
288
+ /** 选项列表 */
289
+ options?: FieldOption[];
290
+ /** 默认值 */
291
+ default_value?: unknown;
292
+ }
293
+ /**
294
+ * 获取创建元数据响应
295
+ * API 直接返回字段数组
296
+ */
297
+ export type GetWorkItemMetaResponse = FieldMeta[];
298
+ /** 操作者类型 */
299
+ export type OperatorType = 'user' | 'auto' | 'system' | 'calc_field' | 'plugin' | 'others';
300
+ /** 操作渠道类型 */
301
+ export type SourceType = 'auto' | 'plugin';
302
+ /** 操作动作类型 */
303
+ export type OperationType = 'modify' | 'create' | 'delete' | 'terminate' | 'restore' | 'complete' | 'rollback' | 'add' | 'remove';
304
+ /** 操作记录模块 */
305
+ export type OpRecordModule = 'work_item_mod' | 'node_mod' | 'sub_task_mod' | 'field_mod' | 'role_and_user_mod' | 'baseline_mod';
306
+ /**
307
+ * 获取操作记录请求
308
+ */
309
+ export interface GetOperationRecordsRequest {
310
+ /** 空间 ID */
311
+ project_key: string;
312
+ /** 工作项 ID 列表(最多 50 个) */
313
+ work_item_ids: number[];
314
+ /** 分页参数 */
315
+ start_from?: string;
316
+ /** 操作者 */
317
+ operator?: string[];
318
+ /** 操作者类型 */
319
+ operator_type?: OperatorType[];
320
+ /** 操作渠道类型 */
321
+ source_type?: SourceType[];
322
+ /** 操作渠道值 */
323
+ source?: string[];
324
+ /** 操作动作类型 */
325
+ operation_type?: OperationType[];
326
+ /** 开始时间(毫秒) */
327
+ start?: number;
328
+ /** 结束时间(毫秒) */
329
+ end?: number;
330
+ /** 操作记录模块 */
331
+ op_record_module?: OpRecordModule[];
332
+ /** 每页数据条数(最大 200) */
333
+ page_size?: number;
334
+ }
335
+ /**
336
+ * 变更对象
337
+ */
338
+ export interface RecordObject {
339
+ /** 对象类型 */
340
+ object_type: 'work_item' | 'node' | 'sub_task' | 'field' | 'role_and_user' | 'template' | 'owner';
341
+ /** 对象值 */
342
+ object_value: string;
343
+ }
344
+ /**
345
+ * 状态值
346
+ */
347
+ export interface StatusValue {
348
+ /** 属性值 */
349
+ values: string[];
350
+ /** 对象属性 */
351
+ object_property: string;
352
+ }
353
+ /**
354
+ * 记录内容
355
+ */
356
+ export interface RecordContent {
357
+ /** 变更主体对象 */
358
+ object: RecordObject;
359
+ /** 变更前的值 */
360
+ old?: string[];
361
+ /** 变更后的值 */
362
+ new?: string[];
363
+ /** 新增的值 */
364
+ add?: string[];
365
+ /** 删除的值 */
366
+ delete?: string[];
367
+ /** 状态值 */
368
+ status_values?: StatusValue[];
369
+ /** 所属对象 */
370
+ belong_object?: RecordObject[];
371
+ /** 其他信息 */
372
+ extra?: Record<string, unknown>;
373
+ }
374
+ /**
375
+ * 操作记录
376
+ */
377
+ export interface OperationRecord {
378
+ /** 空间 key */
379
+ project_key: string;
380
+ /** 操作动作类型 */
381
+ operation_type: OperationType;
382
+ /** 操作时间(毫秒) */
383
+ operation_time: number;
384
+ /** 工作项 ID */
385
+ work_item_id: number;
386
+ /** 工作项类型 */
387
+ work_item_type_key: string;
388
+ /** 操作者类型 */
389
+ operator_type: OperatorType;
390
+ /** 操作者 */
391
+ operator: string;
392
+ /** 操作记录模块 */
393
+ op_record_module: OpRecordModule;
394
+ /** 操作渠道类型 */
395
+ source_type?: SourceType;
396
+ /** 操作渠道值 */
397
+ source?: string;
398
+ /** 记录内容 */
399
+ record_contents: RecordContent[];
400
+ }
401
+ /**
402
+ * 获取操作记录响应
403
+ */
404
+ export interface GetOperationRecordsResponse {
405
+ /** 是否有更多 */
406
+ has_more: boolean;
407
+ /** 分页参数 */
408
+ start_from: string;
409
+ /** 操作记录列表 */
410
+ op_records: OperationRecord[];
411
+ /** 总数 */
412
+ total?: number;
413
+ }
414
+ /** 复合字段操作类型 */
415
+ export type CompoundFieldAction = 'add' | 'update' | 'delete';
416
+ /**
417
+ * 更新复合字段请求
418
+ */
419
+ export interface UpdateCompoundFieldRequest {
420
+ /** 空间 ID 或域名 */
421
+ project_key: string;
422
+ /** 工作项 ID */
423
+ work_item_id: number;
424
+ /** 复合字段 key(与 field_alias 二选一) */
425
+ field_key?: string;
426
+ /** 复合字段对接标识(与 field_key 二选一) */
427
+ field_alias?: string;
428
+ /** 组标识(update/delete 时必填) */
429
+ group_uuid?: string;
430
+ /** 操作类型 */
431
+ action: CompoundFieldAction;
432
+ /** 字段值(add/update 时使用) */
433
+ fields?: FieldValuePair[][];
434
+ }
435
+ /**
436
+ * 上传文件请求参数(添加附件到工作项)
437
+ */
438
+ export interface UploadAttachmentRequest {
439
+ /** 文件数据 */
440
+ file: Blob | File | Buffer;
441
+ /** 文件名(可选,默认取 file.name 或使用 "file") */
442
+ fileName?: string;
443
+ /** 附件字段 key(与 field_alias 二选一) */
444
+ field_key?: string;
445
+ /** 附件字段对接标识(与 field_key 二选一) */
446
+ field_alias?: string;
447
+ /** 复合字段数组下标(可选) */
448
+ index?: string;
449
+ }
450
+ /**
451
+ * 上传通用文件请求参数(用于富文本图片等)
452
+ */
453
+ export interface UploadFileRequest {
454
+ /** 文件数据 */
455
+ file: Blob | File | Buffer;
456
+ /** 文件名(可选,默认取 file.name 或使用 "file") */
457
+ fileName?: string;
458
+ }
459
+ /**
460
+ * 下载附件请求参数
461
+ */
462
+ export interface DownloadAttachmentRequest {
463
+ /** 附件 UUID */
464
+ uuid: string;
465
+ }
466
+ /**
467
+ * 删除附件请求参数
468
+ */
469
+ export interface DeleteAttachmentRequest {
470
+ /** 空间 ID 或域名 */
471
+ project_key: string;
472
+ /** 工作项 ID */
473
+ work_item_id: number;
474
+ /** 附件字段 key(与 field_alias 二选一) */
475
+ field_key?: string;
476
+ /** 附件字段对接标识(与 field_key 二选一) */
477
+ field_alias?: string;
478
+ /** 要删除的附件 UUID 列表 */
479
+ uuids: string[];
480
+ }
481
+ /**
482
+ * 创建子任务请求
483
+ */
484
+ export interface CreateSubtaskRequest {
485
+ /** 目标节点 ID(节点 ID 或节点 state_key 等价) */
486
+ node_id: string;
487
+ /** 子任务名称 */
488
+ name: string;
489
+ /** 目标节点的对接标识 */
490
+ alias_key?: string;
491
+ /** 子任务负责人的 userKey 列表(非角色联动模式使用) */
492
+ assignee?: string[];
493
+ /** 子任务角色负责人列表(角色联动模式使用) */
494
+ role_assignee?: RoleOwner[];
495
+ /** 子任务的排期信息 */
496
+ schedule?: Schedule;
497
+ /** 子任务的备注信息 */
498
+ note?: string;
499
+ /** 自定义字段及其对应的值列表 */
500
+ field_value_pairs?: FieldValuePair[];
501
+ }
502
+ /**
503
+ * 更新子任务请求
504
+ */
505
+ export interface UpdateSubtaskRequest {
506
+ /** 子任务名称 */
507
+ name?: string;
508
+ /** 子任务负责人的 userKey 列表(非角色联动模式使用) */
509
+ assignee?: string[];
510
+ /** 子任务角色负责人列表(角色联动模式使用) */
511
+ role_assignee?: RoleOwner[];
512
+ /** 子任务的排期信息 */
513
+ schedule?: Schedule;
514
+ /** 子任务的备注信息 */
515
+ note?: string;
516
+ /** 交付物字段列表 */
517
+ deliverable?: FieldValuePair[];
518
+ /** 目标更新的字段列表 */
519
+ update_fields?: FieldValuePair[];
520
+ }
521
+ /** 子任务操作类型 */
522
+ export type SubtaskAction = 'confirm' | 'rollback';
523
+ /**
524
+ * 完成/回滚子任务请求
525
+ */
526
+ export interface CompleteRollbackSubtaskRequest {
527
+ /** 目标节点 ID */
528
+ node_id: string;
529
+ /** 子任务 ID */
530
+ task_id: number;
531
+ /** 操作类型:confirm=完成,rollback=回滚 */
532
+ action: SubtaskAction;
533
+ /** 子任务负责人的 userKey 列表(非角色联动模式使用) */
534
+ assignee?: string[];
535
+ /** 子任务角色负责人列表(角色联动模式使用) */
536
+ role_assignee?: RoleOwner[];
537
+ /** 估分排期信息 */
538
+ schedules?: Schedule[];
539
+ /** 交付物字段列表 */
540
+ deliverable?: FieldValuePair[];
541
+ /** 备注信息 */
542
+ note?: string;
543
+ }
544
+ /**
545
+ * 获取子任务详情查询参数
546
+ */
547
+ export interface GetSubtasksQuery {
548
+ /** 目标节点的 state_key,不传则查询所有节点的子任务 */
549
+ node_id?: string;
550
+ }
551
+ /** 子任务状态:0=进行中,1=已完成 */
552
+ export type SubtaskStatus = 0 | 1;
553
+ /**
554
+ * 搜索子任务请求(跨空间)
555
+ */
556
+ export interface SearchSubtasksRequest {
557
+ /** 需要查询的空间 ID 列表 */
558
+ project_keys?: string[];
559
+ /** 空间域名列表 */
560
+ simple_names?: string[];
561
+ /** 分页大小,默认50 */
562
+ page_size?: number;
563
+ /** 页码,默认1 */
564
+ page_num?: number;
565
+ /** 子任务名称,支持模糊匹配 */
566
+ name?: string;
567
+ /** 子任务负责人的 userKey 列表 */
568
+ user_keys?: string[];
569
+ /** 子任务状态:0=进行中,1=已完成 */
570
+ status?: SubtaskStatus;
571
+ /** 创建时间区间 */
572
+ created_at?: {
573
+ /** 开始时间,毫秒精度 */
574
+ start?: number;
575
+ /** 结束时间,毫秒精度 */
576
+ end?: number;
577
+ };
578
+ }
579
+ /**
580
+ * 子任务信息
581
+ */
582
+ export interface SubTask {
583
+ /** 子任务 ID */
584
+ id: string;
585
+ /** 子任务名称 */
586
+ name: string;
587
+ /** 排期数组 */
588
+ schedules?: Schedule[];
589
+ /** 排序字段 */
590
+ order?: number;
591
+ /** 是否已完成 */
592
+ passed: boolean;
593
+ /** 负责人 userKey 数组 */
594
+ owners?: string[];
595
+ /** 备注 */
596
+ note?: string;
597
+ /** 子任务负责人 userKey 列表(非角色联动模式) */
598
+ assignee?: string[];
599
+ /** 子任务角色负责人列表(角色联动模式) */
600
+ role_assignee?: RoleOwner[];
601
+ /** 交付物 */
602
+ deliverable?: FieldValuePair[];
603
+ /** 自定义字段 */
604
+ fields?: FieldValuePair[];
605
+ /** 备注(同 note) */
606
+ details?: string;
607
+ /** 实际开始时间,ISO 8601 格式 */
608
+ actual_begin_time?: string;
609
+ /** 实际完成时间,ISO 8601 格式 */
610
+ actual_finish_time?: string;
611
+ /** 子任务负责人分配模式(1: 自行添加,2: 与角色联动) */
612
+ owner_usage_mode?: number;
613
+ /** 子任务负责人范围或者关联的角色 */
614
+ owner_roles?: string[];
615
+ }
616
+ /**
617
+ * 节点子任务信息
618
+ */
619
+ export interface NodeTask {
620
+ /** 节点 ID */
621
+ id: string;
622
+ /** 节点 state_key */
623
+ state_key: string;
624
+ /** 子任务列表 */
625
+ sub_tasks: SubTask[];
626
+ }
627
+ /**
628
+ * 子任务搜索结果项
629
+ */
630
+ export interface SubtaskSearchResult {
631
+ /** 工作项实例 ID */
632
+ work_item_id: number;
633
+ /** 工作项实例名称 */
634
+ work_item_name: string;
635
+ /** 节点 ID */
636
+ node_id: string;
637
+ /** 子任务信息 */
638
+ sub_task: SubTask;
639
+ }
640
+ /**
641
+ * 搜索子任务响应
642
+ */
643
+ export interface SearchSubtasksResponse {
644
+ /** 分页信息 */
645
+ pagination: {
646
+ /** 总记录数 */
647
+ total: number;
648
+ /** 当前页码 */
649
+ page_num: number;
650
+ /** 每页数据条数 */
651
+ page_size: number;
652
+ };
653
+ /** 搜索结果列表 */
654
+ data: SubtaskSearchResult[];
655
+ }
656
+ /**
657
+ * 富文本内容(用于评论)
658
+ */
659
+ export interface CommentRichText {
660
+ /** 富文本 doc 信息 */
661
+ doc?: string;
662
+ /** 富文本中包含的图片 URL 列表 */
663
+ doc_img?: string[];
664
+ /** 富文本 html 信息 */
665
+ doc_html?: string;
666
+ /** 富文本纯文本信息 */
667
+ doc_text?: string;
668
+ /** 标识富文本内容是否为空 */
669
+ is_empty?: boolean;
670
+ }
671
+ /**
672
+ * 评论信息
673
+ * 注意:id 字段为字符串类型,因为飞书项目 API 返回的评论 ID 超过 JavaScript 安全整数范围
674
+ */
675
+ export interface Comment {
676
+ /** 评论 ID(字符串格式,避免大整数精度丢失) */
677
+ id: string;
678
+ /** 评论所属工作项 ID */
679
+ work_item_id: number;
680
+ /** 评论所属工作项类型 */
681
+ work_item_type_key: string;
682
+ /** 评论创建时间,毫秒精度 */
683
+ created_at: number;
684
+ /** 评论人 user_key */
685
+ operator: string;
686
+ /** 评论内容(纯文本) */
687
+ content?: string;
688
+ /** 富文本信息 */
689
+ doc_rich_text?: CommentRichText;
690
+ }
691
+ /**
692
+ * 富文本元素(用于创建/更新评论)
693
+ * 参考: 富文本格式
694
+ */
695
+ export interface RichTextElement {
696
+ /** 元素类型: paragraph, text, image 等 */
697
+ type: string;
698
+ /** 文本内容(type=text 时使用) */
699
+ text?: string;
700
+ /** 元素属性 */
701
+ attrs?: Record<string, unknown>;
702
+ /** 子元素(type=paragraph 时使用) */
703
+ content?: RichTextElement[];
704
+ }
705
+ /**
706
+ * 创建评论请求
707
+ */
708
+ export interface CreateCommentRequest {
709
+ /** 评论内容,仅支持原生文本(与 rich_text 二选一,都有值时 rich_text 优先) */
710
+ content?: string;
711
+ /** 评论内容,支持富文本格式(与 content 二选一,都有值时 rich_text 优先) */
712
+ rich_text?: RichTextElement[];
713
+ }
714
+ /**
715
+ * 更新评论请求
716
+ */
717
+ export interface UpdateCommentRequest {
718
+ /** 评论内容,仅支持原生文本(与 rich_text 二选一,都有值时 rich_text 优先) */
719
+ content?: string;
720
+ /** 评论内容,支持富文本格式(与 content 二选一,都有值时 rich_text 优先) */
721
+ rich_text?: RichTextElement[];
722
+ }
723
+ /**
724
+ * 查询评论请求参数
725
+ */
726
+ export interface ListCommentsQuery {
727
+ /** 每页返回的数据条数,最大支持 200 条 */
728
+ page_size?: number;
729
+ /** 分页页码,从 1 开始计数,默认值为 1 */
730
+ page_num?: number;
731
+ }
732
+ /**
733
+ * 拉机器人入群请求
734
+ * 接口: POST /open_api/:project_key/work_item/:work_item_id/bot_join_chat
735
+ */
736
+ export interface BotJoinChatRequest {
737
+ /** 工作项类型 key(必填) */
738
+ work_item_type_key: string;
739
+ /** 飞书开放平台应用 App ID 列表(必填) */
740
+ app_ids: string[];
741
+ }
742
+ /**
743
+ * 拉机器人入群响应
744
+ */
745
+ export interface BotJoinChatResponse {
746
+ /** 工作项关联群 ID */
747
+ chat_id: string;
748
+ /** 失败的机器人 App ID 列表 */
749
+ failed_members: string[];
750
+ /** 成功入群的机器人 App ID 列表 */
751
+ success_members: string[];
752
+ }
753
+ /**
754
+ * 时间范围
755
+ */
756
+ export interface TimeRange {
757
+ /** 开始时间,毫秒精度 */
758
+ start?: number;
759
+ /** 结束时间,毫秒精度 */
760
+ end?: number;
761
+ }
762
+ /**
763
+ * 工作项状态筛选条件
764
+ */
765
+ export interface WorkItemStatusFilter {
766
+ /** 状态 key */
767
+ state_key?: string;
768
+ /** 是否为完成状态(状态流使用) */
769
+ is_archived_state?: boolean;
770
+ /** 是否为初始状态(状态流使用) */
771
+ is_init_state?: boolean;
772
+ }
773
+ /**
774
+ * 筛选工作项请求(单空间)
775
+ * 接口: /open_api/:project_key/work_item/filter
776
+ */
777
+ export interface FilterWorkItemsRequest {
778
+ work_item_type_keys: string[];
779
+ work_item_name?: string;
780
+ user_keys?: string[];
781
+ work_item_ids?: number[];
782
+ search_id?: string;
783
+ sub_stages?: string[];
784
+ created_at?: TimeRange;
785
+ updated_at?: TimeRange;
786
+ work_item_status?: WorkItemStatusFilter[];
787
+ businesses?: string[];
788
+ priorities?: string[];
789
+ tags?: string[];
790
+ page_size?: number;
791
+ page_num?: number;
792
+ expand?: QueryWorkItemExpand;
793
+ }
794
+ /**
795
+ * 用户搜索条件(跨空间)
796
+ */
797
+ export interface SearchUser {
798
+ /** 角色 ID(查询该角色包含指定人员的工作项) */
799
+ role?: string;
800
+ /** 人员字段 key(仅支持:创建人、关注人、经办人、报告人) */
801
+ field_key?: string;
802
+ /** 用户 user_key 列表 */
803
+ user_keys?: string[];
804
+ }
805
+ /**
806
+ * 筛选工作项请求(跨空间)
807
+ * 接口: /open_api/work_items/filter_across_project
808
+ */
809
+ export interface FilterWorkItemsAcrossProjectRequest {
810
+ work_item_type_key: string;
811
+ project_keys?: string[];
812
+ simple_names?: string[];
813
+ work_item_name?: string;
814
+ search_user?: SearchUser;
815
+ work_item_ids?: number[];
816
+ tenant_group_id?: number;
817
+ created_at?: TimeRange;
818
+ updated_at?: TimeRange;
819
+ work_item_status?: WorkItemStatusFilter[];
820
+ businesses?: string[];
821
+ priorities?: string[];
822
+ tags?: string[];
823
+ template_ids?: number[];
824
+ page_size?: number;
825
+ page_num?: number;
826
+ expand?: QueryWorkItemExpand;
827
+ }
828
+ /**
829
+ * 搜索参数操作符
830
+ */
831
+ export type SearchOperator = '~' | '!~' | '=' | '!=' | '<' | '>' | '<=' | '>=' | 'HAS ANY OF' | 'HAS NONE OF' | 'IS NULL' | 'IS NOT NULL' | 'CONTAINS' | 'NOT CONTAINS' | 'MEET' | 'NOT MEET';
832
+ /**
833
+ * 前置操作符
834
+ */
835
+ export type PreOperator = 'ANY' | 'EVERY';
836
+ /**
837
+ * 连接符
838
+ */
839
+ export type SearchConjunction = 'AND' | 'OR';
840
+ /**
841
+ * 搜索参数
842
+ */
843
+ export interface SearchParam {
844
+ /** 字段 key */
845
+ param_key: string;
846
+ /** 搜索字段值(格式取决于 param_key 和 operator) */
847
+ value: unknown;
848
+ /** 操作符 */
849
+ operator: SearchOperator;
850
+ /** 前置操作符(复合字段使用) */
851
+ pre_operator?: PreOperator;
852
+ /** 复合字段子条件(当 param_key 为复合字段父字段且 operator 为 MEET/NOT MEET 时使用) */
853
+ value_search_groups?: SearchGroup;
854
+ }
855
+ /**
856
+ * 搜索组
857
+ */
858
+ export interface SearchGroup {
859
+ /** 搜索参数列表(最多 50 个) */
860
+ search_params: SearchParam[];
861
+ /** 条件之间的逻辑关系 */
862
+ conjunction: SearchConjunction;
863
+ /** 嵌套的搜索组 */
864
+ search_groups?: SearchGroup[];
865
+ }
866
+ /**
867
+ * 复杂条件搜索请求(单空间)
868
+ * 接口: /open_api/:project_key/work_item/:work_item_type_key/search/params
869
+ */
870
+ export interface SearchWorkItemsByParamsRequest {
871
+ search_group: SearchGroup;
872
+ page_size?: number;
873
+ page_num?: number;
874
+ fields?: string[];
875
+ expand?: QueryWorkItemExpand;
876
+ }
877
+ /**
878
+ * 关联类型
879
+ * 0: 关联字段 ID
880
+ * 1: 关联字段对接标识
881
+ */
882
+ export type RelationType = 0 | 1;
883
+ /**
884
+ * 搜索关联工作项请求
885
+ * 接口: /open_api/:project_key/work_item/:work_item_type_key/:work_item_id/search_by_relation
886
+ */
887
+ export interface SearchByRelationRequest {
888
+ /** 关联的工作项类型(必填) */
889
+ relation_work_item_type_key: string;
890
+ /** 关联关系 ID(必填) */
891
+ relation_key: string;
892
+ /** 关联类型:0=关联字段ID,1=关联字段对接标识 */
893
+ relation_type?: RelationType;
894
+ /** 分页大小,最大 200 */
895
+ page_size?: number;
896
+ /** 页码,从 1 开始 */
897
+ page_num?: number;
898
+ }
899
+ /**
900
+ * 全局搜索查询类型
901
+ */
902
+ export type QueryType = 'workitem' | 'view';
903
+ /**
904
+ * 全局搜索请求
905
+ * 接口: /open_api/compositive_search
906
+ */
907
+ export interface CompositiveSearchRequest {
908
+ /** 查询类型(必填): workitem=工作项, view=视图 */
909
+ query_type: QueryType;
910
+ /** 查询内容(必填) */
911
+ query: string;
912
+ /** 空间 key 列表(限定搜索范围) */
913
+ project_keys?: string[];
914
+ /** 工作项类型列表(query_type=workitem 时生效) */
915
+ query_sub_type?: string[];
916
+ /** 分页大小,默认 50 */
917
+ page_size?: number;
918
+ /** 页码,默认 1 */
919
+ page_num?: number;
920
+ }
921
+ /**
922
+ * 全局搜索结果项
923
+ */
924
+ export interface CompositiveSearchItem {
925
+ ID: string;
926
+ name: string;
927
+ WorkItemTypeKey?: string;
928
+ ViewScopeKey?: string;
929
+ ProjectKey?: string;
930
+ ProjectKeys?: string[];
931
+ CreatedBy?: string;
932
+ CreatedAt?: number;
933
+ SearchHit?: string[];
934
+ }
935
+ /**
936
+ * 批量更新模式
937
+ * - APPEND: 追加(仅适用于多选字段)
938
+ * - UPDATE: 修改(即将原先的值替换为新值)
939
+ * - REPLACE: 替换(某个值替换为新值,仅适用于多选字段)
940
+ */
941
+ export type BatchUpdateMode = 'APPEND' | 'UPDATE' | 'REPLACE';
942
+ /**
943
+ * 批量更新工作项字段请求
944
+ * 接口: /open_api/work_item/batch_update
945
+ */
946
+ export interface BatchUpdateRequest {
947
+ project_key: string;
948
+ work_item_ids: number[];
949
+ work_item_type_key: string;
950
+ update_mode: BatchUpdateMode;
951
+ field_key: string;
952
+ before_field_value?: unknown;
953
+ after_field_value: unknown;
954
+ }
955
+ /**
956
+ * 批量更新响应
957
+ */
958
+ export interface BatchUpdateResponse {
959
+ /** 任务 ID,用于查询处理进度 */
960
+ task_id: string;
961
+ }
962
+ /**
963
+ * 批量任务状态
964
+ */
965
+ export type BatchTaskStatus = 'SUCCESS' | 'IDLE' | 'RUNNING' | 'FAILED' | 'CANCELED' | 'NOT_EXIST';
966
+ /**
967
+ * 批量任务子任务结果
968
+ */
969
+ export interface BatchSubTaskResult {
970
+ /** 工作项 ID */
971
+ work_item_id: number;
972
+ /** 工作项类型 */
973
+ work_item_type_key: string;
974
+ }
975
+ /**
976
+ * 批量任务错误信息
977
+ */
978
+ export interface BatchErrorScene {
979
+ /** 错误码 */
980
+ error_code: number;
981
+ /** 错误信息 */
982
+ error_msg: string;
983
+ /** 失败的工作项 ID 列表 */
984
+ failed_work_item_ids: number[];
985
+ }
986
+ /**
987
+ * 批量任务结果查询请求
988
+ */
989
+ export interface BatchTaskResultQuery {
990
+ /** 任务 ID */
991
+ task_id: string;
992
+ }
993
+ /**
994
+ * 批量任务结果
995
+ */
996
+ export interface BatchTaskResult {
997
+ /** 任务 ID */
998
+ task_id: string;
999
+ /** 任务状态 */
1000
+ task_status: BatchTaskStatus;
1001
+ /** 总数 */
1002
+ total: number;
1003
+ /** 成功数 */
1004
+ success_total: number;
1005
+ /** 失败数 */
1006
+ error_total: number;
1007
+ /** 成功的子任务列表 */
1008
+ success_sub_task_list?: BatchSubTaskResult[];
1009
+ /** 失败的子任务列表 */
1010
+ fail_sub_task_list?: BatchSubTaskResult[];
1011
+ /** 错误场景列表 */
1012
+ error_scenes?: BatchErrorScene[];
1013
+ }
1014
+ /**
1015
+ * 交付物批量查询请求
1016
+ * 接口: /open_api/work_item/deliverable/batch_query
1017
+ */
1018
+ export interface DeliverableBatchQueryRequest {
1019
+ /** 空间 ID(必填) */
1020
+ project_key: string;
1021
+ /** 工作项 ID 列表(必填,最多 10 个) */
1022
+ work_item_ids: number[];
1023
+ }
1024
+ /**
1025
+ * 交付物详情
1026
+ */
1027
+ export interface DeliveryRelatedInfoItem {
1028
+ /** 空间 key */
1029
+ project_key: string;
1030
+ /** 工作项 ID */
1031
+ work_item_id: number;
1032
+ /** 工作项类型 */
1033
+ work_item_type_key: string;
1034
+ /** 工作项名称 */
1035
+ name: string;
1036
+ }
1037
+ export interface DeliveryRelatedInfo {
1038
+ /** 根工作项 */
1039
+ root_work_item?: DeliveryRelatedInfoItem;
1040
+ /** 直接挂载工作项 */
1041
+ source_work_item?: DeliveryRelatedInfoItem;
1042
+ }
1043
+ export interface DeliverableInfo {
1044
+ /** 交付物工作项名称 */
1045
+ name: string;
1046
+ /** 交付物工作项 ID */
1047
+ work_item_id: number;
1048
+ /** 是否是交付物模板资源 */
1049
+ template_resources: boolean;
1050
+ /** 交付物类型 */
1051
+ template_type: string;
1052
+ /** 是否删除 */
1053
+ deleted: boolean;
1054
+ /** 交付物关联挂载工作项信息 */
1055
+ delivery_related_info?: DeliveryRelatedInfo;
1056
+ /** 交付物来源工作项 ID */
1057
+ instance_linked_virtual_resource_workitem?: number;
1058
+ }
1059
+ /**
1060
+ * 交付物信息
1061
+ */
1062
+ export interface WorkItemDeliverable {
1063
+ /** 交付物信息 */
1064
+ deliverable_info: DeliverableInfo;
1065
+ /** 交付物类型 */
1066
+ deliverable_type: string;
1067
+ /** 交付物唯一标识 */
1068
+ deliverable_uuid: string;
1069
+ }
1070
+ /** 节点操作类型 */
1071
+ export type NodeAction = 'confirm' | 'rollback';
1072
+ /**
1073
+ * 状态流转请求(状态流工作项)
1074
+ * 接口: POST /open_api/:project_key/workflow/:work_item_type_key/:work_item_id/node/state_change
1075
+ */
1076
+ export interface StateChangeRequest {
1077
+ /** 流转到下一状态的 ID(必填) */
1078
+ transition_id: number;
1079
+ /** 要更新的字段数组(仅能更新状态表单中的字段) */
1080
+ fields?: FieldValuePair[];
1081
+ /** 角色及负责人 */
1082
+ role_owners?: RoleOwner[];
1083
+ }
1084
+ /**
1085
+ * 节点完成/回滚请求(节点流工作项)
1086
+ * 接口: POST /open_api/:project_key/workflow/:work_item_type_key/:work_item_id/node/:node_id/operate
1087
+ */
1088
+ export interface NodeOperateRequest {
1089
+ /** 操作类型:confirm=完成节点,rollback=回滚节点 */
1090
+ action: NodeAction;
1091
+ /** 回滚原因(action=rollback 时必填) */
1092
+ rollback_reason?: string;
1093
+ /** 节点负责人的 user_key 数组 */
1094
+ node_owners?: string[];
1095
+ /** 节点排期(非差异化排期场景) */
1096
+ node_schedule?: Schedule;
1097
+ /** 子排期数组(差异化排期场景) */
1098
+ schedules?: Schedule[];
1099
+ /** 要更新的字段数组 */
1100
+ fields?: FieldValuePair[];
1101
+ /** 角色负责人(节点与角色绑定时使用) */
1102
+ role_assignee?: RoleOwner[];
1103
+ }
1104
+ /**
1105
+ * 更新节点请求(节点流工作项)
1106
+ * 接口: PUT /open_api/:project_key/workflow/:work_item_type_key/:work_item_id/node/:node_id
1107
+ */
1108
+ export interface UpdateNodeRequest {
1109
+ /** 节点负责人的 user_key 数组(不传表示无需更新,空数组表示删除所有人) */
1110
+ node_owners?: string[];
1111
+ /** 节点排期(动态计算排期时使用) */
1112
+ node_schedule?: Schedule;
1113
+ /** 子排期数组(按人汇总排期时使用,节点负责人必须>=2人才生效) */
1114
+ schedules?: Schedule[];
1115
+ /** 要更新的字段数组 */
1116
+ fields?: FieldValuePair[];
1117
+ /** 角色负责人(节点与角色绑定时使用) */
1118
+ role_assignee?: RoleOwner[];
1119
+ }
1120
+ /** 流转必填信息查询模式 */
1121
+ export type TransitionRequiredMode = 'unfinished';
1122
+ /**
1123
+ * 获取流转必填信息请求
1124
+ * 接口: POST /open_api/work_item/transition_required_info/get
1125
+ */
1126
+ export interface TransitionRequiredInfoRequest {
1127
+ /** 空间 ID 或域名(必填) */
1128
+ project_key: string;
1129
+ /** 工作项类型 */
1130
+ work_item_type_key?: string;
1131
+ /** 工作项 ID(必填) */
1132
+ work_item_id: number;
1133
+ /**
1134
+ * 流转时的节点标识(必填)
1135
+ * - 节点流:表示节点 ID(node_key/state_key)
1136
+ * - 状态流:表示目标状态 key
1137
+ */
1138
+ state_key: string;
1139
+ /** 查询模式:unfinished=仅查询未完成的必填项 */
1140
+ mode?: TransitionRequiredMode;
1141
+ }
1142
+ /** 表单项类型 */
1143
+ export type FormItemClass = 'field' | 'role' | 'control';
1144
+ /**
1145
+ * 必填子任务
1146
+ */
1147
+ export interface RequiredTask {
1148
+ /** 子任务 ID */
1149
+ task_id: number;
1150
+ /** 子任务是否已完成 */
1151
+ finished: boolean;
1152
+ }
1153
+ /**
1154
+ * 必填字段
1155
+ */
1156
+ export interface RequiredField {
1157
+ /** 字段 key */
1158
+ field_key: string;
1159
+ /** 字段类型 */
1160
+ field_type_key?: string;
1161
+ /** 是否已填写 */
1162
+ finished: boolean;
1163
+ /** 未完成人员 user_key */
1164
+ not_finished_owner?: string[];
1165
+ /** 复合字段类型的必填子字段 */
1166
+ sub_field?: RequiredField[];
1167
+ }
1168
+ /**
1169
+ * 节点信息控件的节点信息
1170
+ */
1171
+ export interface RequiredStateInfo {
1172
+ /** 节点 node_id */
1173
+ state_key: string;
1174
+ /** 节点信息控件的必填节点字段 */
1175
+ node_fields?: RequiredField[];
1176
+ }
1177
+ /**
1178
+ * 必填表单项
1179
+ */
1180
+ export interface RequiredFormItem {
1181
+ /** 表单项类型:field=字段,role=角色,control=控件 */
1182
+ class: FormItemClass;
1183
+ /**
1184
+ * 表单项的 key
1185
+ * - 字段类型:field_key
1186
+ * - 角色类型:role_key
1187
+ * - 控件类型:控件 ID(如节点信息控件为 "workflow_state_info")
1188
+ */
1189
+ key: string;
1190
+ /** 字段类型(字段类型表单项) */
1191
+ field_type_key?: string;
1192
+ /** 该表单项是否已填写 */
1193
+ finished: boolean;
1194
+ /** 未完成人员 user_key */
1195
+ not_finished_owner?: string[];
1196
+ /** 复合字段类型的必填子字段 */
1197
+ sub_field?: RequiredField[];
1198
+ /** 节点信息控件的节点信息 */
1199
+ state_info?: RequiredStateInfo;
1200
+ }
1201
+ /**
1202
+ * 必填交付物
1203
+ */
1204
+ export interface RequiredDeliverable {
1205
+ /** 交付物 ID */
1206
+ deliverable_id: number;
1207
+ /** 是否已完成 */
1208
+ finished: boolean;
1209
+ }
1210
+ /**
1211
+ * 流转必填信息
1212
+ */
1213
+ export interface TransitionRequiredInfo {
1214
+ /** 必填子任务 */
1215
+ tasks?: RequiredTask[];
1216
+ /** 必填表单项 */
1217
+ form_items?: RequiredFormItem[];
1218
+ /** 必填节点字段 */
1219
+ node_fields?: RequiredField[];
1220
+ /** 必填交付物 */
1221
+ deliverables?: RequiredDeliverable[];
1222
+ }
1223
+ /**
1224
+ * WBS 视图查询参数
1225
+ */
1226
+ export interface WbsViewQueryParams {
1227
+ /** 是否融合需要交付物(查询参数) */
1228
+ need_union_deliverable?: boolean;
1229
+ /** 是否需要计划表自定义列聚合字段 */
1230
+ need_schedule_table_agg?: boolean;
1231
+ }
1232
+ /**
1233
+ * WBS 视图扩展查询参数
1234
+ */
1235
+ export interface WbsViewExpand {
1236
+ /** 是否需要融合交付物信息 */
1237
+ need_union_deliverable?: boolean;
1238
+ /** 是否需要 WBS 链路层级信息 */
1239
+ need_wbs_relation_chain_path?: boolean;
1240
+ /** 是否需要 WBS 链路实例信息 */
1241
+ need_wbs_relation_chain_entity?: boolean;
1242
+ }
1243
+ /**
1244
+ * WBS 视图请求体
1245
+ */
1246
+ export interface WbsViewRequest {
1247
+ expand?: WbsViewExpand;
1248
+ }
1249
+ /**
1250
+ * WBS 工作流节点
1251
+ */
1252
+ export interface WbsWorkflowNode {
1253
+ /** 节点 ID */
1254
+ state_key: string;
1255
+ /** 节点名称 */
1256
+ name: string;
1257
+ /** 节点状态 */
1258
+ status?: number;
1259
+ /** 节点负责人 */
1260
+ owners?: string[];
1261
+ /** 子任务列表 */
1262
+ sub_tasks?: Array<{
1263
+ task_id: number;
1264
+ name: string;
1265
+ status: number;
1266
+ assignee?: string[];
1267
+ }>;
1268
+ /** 交付物信息 */
1269
+ deliverables?: Array<{
1270
+ deliverable_id: number;
1271
+ name: string;
1272
+ finished: boolean;
1273
+ }>;
1274
+ }
1275
+ /**
1276
+ * WBS 工作项视图(行业专版)
1277
+ * 接口: GET /open_api/:project_key/work_item/:work_item_type_key/:work_item_id/wbs_view
1278
+ */
1279
+ export interface WbsWorkItem {
1280
+ /** 工作项 ID */
1281
+ id: number;
1282
+ /** 工作项名称 */
1283
+ name: string;
1284
+ /** 工作项类型 key */
1285
+ work_item_type_key: string;
1286
+ /** 空间 key */
1287
+ project_key: string;
1288
+ /** WBS 工作流节点列表 */
1289
+ workflow_nodes?: WbsWorkflowNode[];
1290
+ /** WBS 链路层级信息 */
1291
+ wbs_relation_chain_path?: string[];
1292
+ /** WBS 链路实例信息 */
1293
+ wbs_relation_chain_entity?: Array<{
1294
+ work_item_id: number;
1295
+ work_item_type_key: string;
1296
+ project_key: string;
1297
+ }>;
1298
+ }
1299
+ /**
1300
+ * 工时关联对象类型
1301
+ */
1302
+ export type WorkHourResourceType = 'node' | 'sub_task';
1303
+ /**
1304
+ * 创建工时记录条目
1305
+ */
1306
+ export interface CreateWorkingHourRecord {
1307
+ /** 关联对象类型 */
1308
+ resource_type: WorkHourResourceType;
1309
+ /** 关联对象 ID */
1310
+ resource_id: string;
1311
+ /** 实际工时(单位:天) */
1312
+ work_time: number | string;
1313
+ /** 工作描述 */
1314
+ work_description?: string;
1315
+ }
1316
+ /**
1317
+ * 创建工时登记记录请求
1318
+ */
1319
+ export interface CreateWorkHourRecordRequest {
1320
+ /** 工作开始日期(毫秒时间戳) */
1321
+ work_begin_date: number;
1322
+ /** 工作结束日期(毫秒时间戳) */
1323
+ work_end_date: number;
1324
+ /** 是否包含节假日 */
1325
+ include_holidays: boolean;
1326
+ /** 待创建工时记录列表 */
1327
+ working_hour_records: CreateWorkingHourRecord[];
1328
+ }
1329
+ /**
1330
+ * 更新工时记录条目
1331
+ */
1332
+ export interface UpdateWorkingHourRecord {
1333
+ /** 工时记录 ID */
1334
+ id: number;
1335
+ /** 实际工时 */
1336
+ work_time?: number | string;
1337
+ /** 工作描述 */
1338
+ work_description?: string;
1339
+ }
1340
+ /**
1341
+ * 更新工时登记记录请求
1342
+ */
1343
+ export interface UpdateWorkHourRecordRequest {
1344
+ /** 待更新记录列表 */
1345
+ working_hour_records: UpdateWorkingHourRecord[];
1346
+ }
1347
+ /**
1348
+ * 删除工时登记记录请求
1349
+ */
1350
+ export interface DeleteWorkHourRecordRequest {
1351
+ /** 工时记录 ID 列表 */
1352
+ working_hour_record_ids: number[];
1353
+ }
1354
+ /**
1355
+ * 查询工时登记记录请求
1356
+ */
1357
+ export interface ListWorkHourRecordsRequest {
1358
+ /** 空间 ID */
1359
+ project_key: string;
1360
+ /** 工作项类型 key */
1361
+ work_item_type_key: string;
1362
+ /** 工作项 ID */
1363
+ work_item_id: number;
1364
+ /** 页码 */
1365
+ page_num?: number;
1366
+ /** 分页大小 */
1367
+ page_size?: number;
1368
+ }
1369
+ /**
1370
+ * 工时登记记录
1371
+ */
1372
+ export interface WorkHourRecord {
1373
+ /** 工时记录 ID */
1374
+ id: number;
1375
+ /** 工作日期(毫秒时间戳) */
1376
+ work_date?: number;
1377
+ /** 实际工时 */
1378
+ work_time?: number;
1379
+ /** 创建时间 */
1380
+ created_at?: number;
1381
+ /** 更新时间 */
1382
+ updated_at?: number;
1383
+ /** 关联对象 ID */
1384
+ resource_id?: string;
1385
+ /** 关联对象名称 */
1386
+ resource_name?: string;
1387
+ /** 关联对象类型 */
1388
+ resource_type?: WorkHourResourceType;
1389
+ /** 工时归属人 user_key */
1390
+ work_user_key?: string;
1391
+ /** 工作描述 */
1392
+ work_description?: string;
1393
+ /** 关联工作项 ID */
1394
+ related_work_item_id?: number;
1395
+ /** 关联工作项名称 */
1396
+ related_work_item_name?: string;
1397
+ /** 关联工作项类型 */
1398
+ related_work_item_type_key?: string;
1399
+ }
1400
+ /**
1401
+ * 评审结论标签
1402
+ */
1403
+ export interface ReviewConclusionOptionItem {
1404
+ /** 标签 key */
1405
+ key: string;
1406
+ /** 标签名称 */
1407
+ label: string;
1408
+ /** 原始标签名称 */
1409
+ origin_label?: string;
1410
+ }
1411
+ /**
1412
+ * 评审意见(个人)
1413
+ */
1414
+ export interface ReviewOwnerOpinionInfo {
1415
+ /** 用户 user_key */
1416
+ owner: string;
1417
+ /** 评审意见 */
1418
+ finished_opinion_result: string;
1419
+ }
1420
+ /**
1421
+ * 评审意见(汇总)
1422
+ */
1423
+ export interface ReviewOpinionInfo {
1424
+ /** 汇总意见 */
1425
+ finished_opinion_result?: string;
1426
+ /** 人员意见 */
1427
+ owners_finished_opinion_result?: ReviewOwnerOpinionInfo[];
1428
+ }
1429
+ /**
1430
+ * 评审结论(个人)
1431
+ */
1432
+ export interface ReviewOwnerConclusionInfo {
1433
+ /** 用户 user_key */
1434
+ owner: string;
1435
+ /** 结论 */
1436
+ finished_conclusion_result: ReviewConclusionOptionItem;
1437
+ }
1438
+ /**
1439
+ * 评审结论(汇总)
1440
+ */
1441
+ export interface ReviewConclusionInfo {
1442
+ /** 汇总结论 */
1443
+ finished_conclusion_result?: ReviewConclusionOptionItem;
1444
+ /** 人员结论 */
1445
+ owners_finished_conclusion_result?: ReviewOwnerConclusionInfo[];
1446
+ }
1447
+ /**
1448
+ * 评审信息条目
1449
+ */
1450
+ export interface ReviewFinishedInfoItem {
1451
+ /** 节点 ID */
1452
+ node_id: string;
1453
+ /** 评审意见 */
1454
+ opinion?: ReviewOpinionInfo;
1455
+ /** 评审结论 */
1456
+ conclusion?: ReviewConclusionInfo;
1457
+ /** 汇总模式 */
1458
+ summary_mode?: string;
1459
+ }
1460
+ /**
1461
+ * 批量查询评审信息请求
1462
+ * 接口: /open_api/work_item/finished/batch_query
1463
+ */
1464
+ export interface ReviewBatchQueryRequest {
1465
+ /** 空间 ID(必填) */
1466
+ project_key: string;
1467
+ /** 工作项 ID(必填) */
1468
+ work_item_id: number;
1469
+ /** 节点 ID 列表(必填,最多 10 个) */
1470
+ node_ids: string[];
1471
+ }
1472
+ /**
1473
+ * 批量查询评审信息响应
1474
+ */
1475
+ export interface ReviewBatchQueryResponse {
1476
+ project_key: string;
1477
+ work_item_id: number;
1478
+ finished_infos: ReviewFinishedInfoItem[];
1479
+ }
1480
+ /**
1481
+ * 评审结论标签查询请求
1482
+ */
1483
+ export interface ReviewConclusionOptionRequest {
1484
+ /** 空间 ID */
1485
+ project_key: string;
1486
+ /** 工作项 ID */
1487
+ work_item_id: number;
1488
+ /** 节点 ID 列表 */
1489
+ node_ids: string[];
1490
+ }
1491
+ /**
1492
+ * 评审结论标签查询响应条目
1493
+ */
1494
+ export interface ReviewConclusionOption {
1495
+ /** 节点 ID */
1496
+ node_id: string;
1497
+ /** 统一评审结论标签(计划废弃) */
1498
+ finished_conclusion_option?: ReviewConclusionOptionItem[];
1499
+ /** 负责人评审结论标签 */
1500
+ finished_owners_conclusion_option?: ReviewConclusionOptionItem[];
1501
+ /** 整体评审结论标签 */
1502
+ finished_overall_conclusion_option?: ReviewConclusionOptionItem[];
1503
+ }
1504
+ /**
1505
+ * 修改评审意见/结论请求
1506
+ */
1507
+ export interface UpdateReviewRequest {
1508
+ /** 空间 ID */
1509
+ project_key: string;
1510
+ /** 工作项 ID */
1511
+ work_item_id: number;
1512
+ /** 节点 ID */
1513
+ node_id: string;
1514
+ /** 评审意见 */
1515
+ opinion?: string;
1516
+ /** 评审结论标签 key */
1517
+ finished_conclusion_option_key?: string;
1518
+ /** 操作类型 */
1519
+ operation_type?: string;
1520
+ /** 是否置空 */
1521
+ reset?: boolean;
1522
+ }
1523
+ //# sourceMappingURL=workitem.d.ts.map