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,214 @@
1
+ /**
2
+ * 工作流服务
3
+ * 100% 参考 Meego API 文档
4
+ *
5
+ * 提供工作项工作流相关功能:
6
+ * - 状态流转(状态流工作项)
7
+ * - 节点完成/回滚(节点流工作项)
8
+ * - 更新节点/排期
9
+ * - 获取流转必填信息
10
+ * - 获取工作流详情
11
+ */
12
+ import { BaseService, type ServiceRequestOptions } from '../../core/base-service.js';
13
+ import type { StateChangeRequest, NodeOperateRequest, UpdateNodeRequest, TransitionRequiredInfoRequest, TransitionRequiredInfo, WorkflowInfo, WbsViewQueryParams, WbsViewRequest, WbsWorkItem } from '../../types/workitem.js';
14
+ /** API 路径 */
15
+ export declare const API_PATHS: {
16
+ /** 获取工作流详情 */
17
+ WORKFLOW_QUERY: string;
18
+ /** 状态流转(状态流工作项) */
19
+ STATE_CHANGE: string;
20
+ /** 节点完成/回滚(节点流工作项) */
21
+ NODE_OPERATE: string;
22
+ /** 更新节点/排期 */
23
+ NODE_UPDATE: string;
24
+ /** 获取流转必填信息 */
25
+ TRANSITION_REQUIRED_INFO: string;
26
+ /** 获取工作流详情(WBS) */
27
+ WBS_VIEW: string;
28
+ };
29
+ /**
30
+ * 工作流服务
31
+ *
32
+ * 提供工作项工作流相关功能
33
+ */
34
+ export declare class WorkflowService extends BaseService {
35
+ /**
36
+ * 获取工作流详情
37
+ *
38
+ * 获取工作项实例的工作流详情,包含节点信息、流转信息等
39
+ *
40
+ * @param projectKey 空间 ID 或域名
41
+ * @param workItemTypeKey 工作项类型
42
+ * @param workItemId 工作项 ID
43
+ * @param options 请求选项
44
+ * @returns 工作流详情
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const workflow = await client.workItem.workflow.query('my-project', 'story', 123456);
49
+ * console.log('当前状态:', workflow.current_nodes);
50
+ * console.log('可用流转:', workflow.transitions);
51
+ * ```
52
+ */
53
+ query(projectKey: string, workItemTypeKey: string, workItemId: number, options?: ServiceRequestOptions<WorkflowInfo>): Promise<WorkflowInfo>;
54
+ /**
55
+ * 状态流转(状态流工作项)
56
+ *
57
+ * 用于"状态流"类型的工作项进行状态流转
58
+ *
59
+ * @param projectKey 空间 ID 或域名
60
+ * @param workItemTypeKey 工作项类型
61
+ * @param workItemId 工作项 ID
62
+ * @param request 流转请求
63
+ * @param options 请求选项
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * // 基本状态流转
68
+ * await client.workItem.workflow.stateChange('my-project', 'story', 123456, {
69
+ * transition_id: 12345,
70
+ * });
71
+ *
72
+ * // 流转时同时更新字段
73
+ * await client.workItem.workflow.stateChange('my-project', 'story', 123456, {
74
+ * transition_id: 12345,
75
+ * fields: [
76
+ * { field_key: 'priority', field_value: 'P0' }
77
+ * ],
78
+ * role_owners: [
79
+ * { role_key: 'developer', owner: ['user123'] }
80
+ * ]
81
+ * });
82
+ * ```
83
+ */
84
+ stateChange(projectKey: string, workItemTypeKey: string, workItemId: number, request: StateChangeRequest, options?: ServiceRequestOptions<void>): Promise<void>;
85
+ /**
86
+ * 节点完成/回滚(节点流工作项)
87
+ *
88
+ * 用于"节点流"类型的工作项完成或回滚节点
89
+ *
90
+ * @param projectKey 空间 ID 或域名
91
+ * @param workItemTypeKey 工作项类型
92
+ * @param workItemId 工作项 ID
93
+ * @param nodeId 目标节点 ID
94
+ * @param request 操作请求
95
+ * @param options 请求选项
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * // 完成节点
100
+ * await client.workItem.workflow.operateNode('my-project', 'story', 123456, 'dev_node', {
101
+ * action: 'confirm',
102
+ * node_owners: ['user123'],
103
+ * node_schedule: {
104
+ * points: 3,
105
+ * estimate_start_date: 1724169600000,
106
+ * estimate_end_date: 1724428799999,
107
+ * }
108
+ * });
109
+ *
110
+ * // 回滚节点
111
+ * await client.workItem.workflow.operateNode('my-project', 'story', 123456, 'dev_node', {
112
+ * action: 'rollback',
113
+ * rollback_reason: '需要重新开发',
114
+ * });
115
+ * ```
116
+ */
117
+ operateNode(projectKey: string, workItemTypeKey: string, workItemId: number, nodeId: string, request: NodeOperateRequest, options?: ServiceRequestOptions<void>): Promise<void>;
118
+ /**
119
+ * 更新节点信息(节点流工作项)
120
+ *
121
+ * 更新节点的负责人、排期、字段等信息
122
+ *
123
+ * @param projectKey 空间 ID 或域名
124
+ * @param workItemTypeKey 工作项类型
125
+ * @param workItemId 工作项 ID
126
+ * @param nodeId 目标节点 ID
127
+ * @param request 更新请求
128
+ * @param options 请求选项
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * // 更新节点负责人和排期
133
+ * await client.workItem.workflow.updateNode('my-project', 'story', 123456, 'dev_node', {
134
+ * node_owners: ['user123', 'user456'],
135
+ * node_schedule: {
136
+ * points: 5,
137
+ * estimate_start_date: 1724169600000,
138
+ * estimate_end_date: 1724428799999,
139
+ * }
140
+ * });
141
+ *
142
+ * // 差异化排期(按人汇总)
143
+ * await client.workItem.workflow.updateNode('my-project', 'story', 123456, 'dev_node', {
144
+ * node_owners: ['user123', 'user456'],
145
+ * schedules: [
146
+ * { owner: 'user123', points: 3, estimate_start_date: 1724169600000, estimate_end_date: 1724300799999 },
147
+ * { owner: 'user456', points: 2, estimate_start_date: 1724300800000, estimate_end_date: 1724428799999 },
148
+ * ]
149
+ * });
150
+ * ```
151
+ */
152
+ updateNode(projectKey: string, workItemTypeKey: string, workItemId: number, nodeId: string, request: UpdateNodeRequest, options?: ServiceRequestOptions<void>): Promise<void>;
153
+ /**
154
+ * 获取流转必填信息
155
+ *
156
+ * 在进行状态流转或节点完成操作之前,获取目标节点/状态所需的必填信息
157
+ *
158
+ * @param request 查询请求
159
+ * @param options 请求选项
160
+ * @returns 流转必填信息
161
+ *
162
+ * @example
163
+ * ```typescript
164
+ * // 获取完整必填信息
165
+ * const requiredInfo = await client.workItem.workflow.getTransitionRequiredInfo({
166
+ * project_key: 'my-project',
167
+ * work_item_id: 123456,
168
+ * state_key: 'dev_done',
169
+ * });
170
+ *
171
+ * // 检查必填字段
172
+ * if (requiredInfo.form_items) {
173
+ * for (const item of requiredInfo.form_items) {
174
+ * if (!item.finished) {
175
+ * console.log('未完成:', item.key);
176
+ * }
177
+ * }
178
+ * }
179
+ *
180
+ * // 仅查询未完成的必填项
181
+ * const unfinished = await client.workItem.workflow.getTransitionRequiredInfo({
182
+ * project_key: 'my-project',
183
+ * work_item_id: 123456,
184
+ * state_key: 'dev_done',
185
+ * mode: 'unfinished',
186
+ * });
187
+ * ```
188
+ */
189
+ getTransitionRequiredInfo(request: TransitionRequiredInfoRequest, options?: ServiceRequestOptions<TransitionRequiredInfo>): Promise<TransitionRequiredInfo>;
190
+ /**
191
+ * 获取工作流详情(WBS 视图)
192
+ *
193
+ * 获取工作项的 WBS 视图信息,包含完整的工作分解结构
194
+ *
195
+ * @param projectKey 空间 ID 或域名
196
+ * @param workItemTypeKey 工作项类型
197
+ * @param workItemId 工作项 ID
198
+ * @param options 请求选项
199
+ * @returns WBS 工作项信息
200
+ *
201
+ * @example
202
+ * ```typescript
203
+ * const wbsView = await client.workItem.workflow.getWbsView('my-project', 'story', 123456);
204
+ * console.log('工作分解结构:', wbsView);
205
+ * ```
206
+ */
207
+ getWbsView(projectKey: string, workItemTypeKey: string, workItemId: number, params?: {
208
+ /** 查询参数(如 need_union_deliverable) */
209
+ query?: WbsViewQueryParams;
210
+ /** 请求体(expand 等扩展参数) */
211
+ body?: WbsViewRequest;
212
+ }, options?: ServiceRequestOptions<WbsWorkItem>): Promise<WbsWorkItem>;
213
+ }
214
+ //# sourceMappingURL=workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../../src/service/workitem/workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,6BAA6B,EAC7B,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,WAAW,EACZ,MAAM,yBAAyB,CAAC;AAEjC,aAAa;AACb,eAAO,MAAM,SAAS;IACpB,cAAc;;IAEd,mBAAmB;;IAEnB,sBAAsB;;IAEtB,cAAc;;IAEd,eAAe;;IAEf,mBAAmB;;CAEpB,CAAC;AAEF;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAC9C;;;;;;;;;;;;;;;;;OAiBG;IACG,KAAK,CACT,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,qBAAqB,CAAC,YAAY,CAAC,GAC5C,OAAO,CAAC,YAAY,CAAC;IAYxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,WAAW,CACf,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC;IAYhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACG,WAAW,CACf,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC;IAahB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACG,UAAU,CACd,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC;IAahB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACG,yBAAyB,CAC7B,OAAO,EAAE,6BAA6B,EACtC,OAAO,CAAC,EAAE,qBAAqB,CAAC,sBAAsB,CAAC,GACtD,OAAO,CAAC,sBAAsB,CAAC;IAIlC;;;;;;;;;;;;;;;;OAgBG;IACG,UAAU,CACd,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE;QACP,qCAAqC;QACrC,KAAK,CAAC,EAAE,kBAAkB,CAAC;QAC3B,wBAAwB;QACxB,IAAI,CAAC,EAAE,cAAc,CAAC;KACvB,EACD,OAAO,CAAC,EAAE,qBAAqB,CAAC,WAAW,CAAC,GAC3C,OAAO,CAAC,WAAW,CAAC;CAgCxB"}
@@ -0,0 +1,281 @@
1
+ /**
2
+ * 工作流服务
3
+ * 100% 参考 Meego API 文档
4
+ *
5
+ * 提供工作项工作流相关功能:
6
+ * - 状态流转(状态流工作项)
7
+ * - 节点完成/回滚(节点流工作项)
8
+ * - 更新节点/排期
9
+ * - 获取流转必填信息
10
+ * - 获取工作流详情
11
+ */
12
+ import { BaseService } from '../../core/base-service.js';
13
+ /** API 路径 */
14
+ export const API_PATHS = {
15
+ /** 获取工作流详情 */
16
+ WORKFLOW_QUERY: '/open_api/:project_key/work_item/:work_item_type_key/:work_item_id/workflow/query',
17
+ /** 状态流转(状态流工作项) */
18
+ STATE_CHANGE: '/open_api/:project_key/workflow/:work_item_type_key/:work_item_id/node/state_change',
19
+ /** 节点完成/回滚(节点流工作项) */
20
+ NODE_OPERATE: '/open_api/:project_key/workflow/:work_item_type_key/:work_item_id/node/:node_id/operate',
21
+ /** 更新节点/排期 */
22
+ NODE_UPDATE: '/open_api/:project_key/workflow/:work_item_type_key/:work_item_id/node/:node_id',
23
+ /** 获取流转必填信息 */
24
+ TRANSITION_REQUIRED_INFO: '/open_api/work_item/transition_required_info/get',
25
+ /** 获取工作流详情(WBS) */
26
+ WBS_VIEW: '/open_api/:project_key/work_item/:work_item_type_key/:work_item_id/wbs_view',
27
+ };
28
+ /**
29
+ * 工作流服务
30
+ *
31
+ * 提供工作项工作流相关功能
32
+ */
33
+ export class WorkflowService extends BaseService {
34
+ /**
35
+ * 获取工作流详情
36
+ *
37
+ * 获取工作项实例的工作流详情,包含节点信息、流转信息等
38
+ *
39
+ * @param projectKey 空间 ID 或域名
40
+ * @param workItemTypeKey 工作项类型
41
+ * @param workItemId 工作项 ID
42
+ * @param options 请求选项
43
+ * @returns 工作流详情
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * const workflow = await client.workItem.workflow.query('my-project', 'story', 123456);
48
+ * console.log('当前状态:', workflow.current_nodes);
49
+ * console.log('可用流转:', workflow.transitions);
50
+ * ```
51
+ */
52
+ async query(projectKey, workItemTypeKey, workItemId, options) {
53
+ return this.post(API_PATHS.WORKFLOW_QUERY, {}, {
54
+ ...options,
55
+ pathParams: {
56
+ project_key: projectKey,
57
+ work_item_type_key: workItemTypeKey,
58
+ work_item_id: String(workItemId),
59
+ ...options?.pathParams,
60
+ },
61
+ });
62
+ }
63
+ /**
64
+ * 状态流转(状态流工作项)
65
+ *
66
+ * 用于"状态流"类型的工作项进行状态流转
67
+ *
68
+ * @param projectKey 空间 ID 或域名
69
+ * @param workItemTypeKey 工作项类型
70
+ * @param workItemId 工作项 ID
71
+ * @param request 流转请求
72
+ * @param options 请求选项
73
+ *
74
+ * @example
75
+ * ```typescript
76
+ * // 基本状态流转
77
+ * await client.workItem.workflow.stateChange('my-project', 'story', 123456, {
78
+ * transition_id: 12345,
79
+ * });
80
+ *
81
+ * // 流转时同时更新字段
82
+ * await client.workItem.workflow.stateChange('my-project', 'story', 123456, {
83
+ * transition_id: 12345,
84
+ * fields: [
85
+ * { field_key: 'priority', field_value: 'P0' }
86
+ * ],
87
+ * role_owners: [
88
+ * { role_key: 'developer', owner: ['user123'] }
89
+ * ]
90
+ * });
91
+ * ```
92
+ */
93
+ async stateChange(projectKey, workItemTypeKey, workItemId, request, options) {
94
+ await this.post(API_PATHS.STATE_CHANGE, request, {
95
+ ...options,
96
+ pathParams: {
97
+ project_key: projectKey,
98
+ work_item_type_key: workItemTypeKey,
99
+ work_item_id: String(workItemId),
100
+ ...options?.pathParams,
101
+ },
102
+ });
103
+ }
104
+ /**
105
+ * 节点完成/回滚(节点流工作项)
106
+ *
107
+ * 用于"节点流"类型的工作项完成或回滚节点
108
+ *
109
+ * @param projectKey 空间 ID 或域名
110
+ * @param workItemTypeKey 工作项类型
111
+ * @param workItemId 工作项 ID
112
+ * @param nodeId 目标节点 ID
113
+ * @param request 操作请求
114
+ * @param options 请求选项
115
+ *
116
+ * @example
117
+ * ```typescript
118
+ * // 完成节点
119
+ * await client.workItem.workflow.operateNode('my-project', 'story', 123456, 'dev_node', {
120
+ * action: 'confirm',
121
+ * node_owners: ['user123'],
122
+ * node_schedule: {
123
+ * points: 3,
124
+ * estimate_start_date: 1724169600000,
125
+ * estimate_end_date: 1724428799999,
126
+ * }
127
+ * });
128
+ *
129
+ * // 回滚节点
130
+ * await client.workItem.workflow.operateNode('my-project', 'story', 123456, 'dev_node', {
131
+ * action: 'rollback',
132
+ * rollback_reason: '需要重新开发',
133
+ * });
134
+ * ```
135
+ */
136
+ async operateNode(projectKey, workItemTypeKey, workItemId, nodeId, request, options) {
137
+ await this.post(API_PATHS.NODE_OPERATE, request, {
138
+ ...options,
139
+ pathParams: {
140
+ project_key: projectKey,
141
+ work_item_type_key: workItemTypeKey,
142
+ work_item_id: String(workItemId),
143
+ node_id: nodeId,
144
+ ...options?.pathParams,
145
+ },
146
+ });
147
+ }
148
+ /**
149
+ * 更新节点信息(节点流工作项)
150
+ *
151
+ * 更新节点的负责人、排期、字段等信息
152
+ *
153
+ * @param projectKey 空间 ID 或域名
154
+ * @param workItemTypeKey 工作项类型
155
+ * @param workItemId 工作项 ID
156
+ * @param nodeId 目标节点 ID
157
+ * @param request 更新请求
158
+ * @param options 请求选项
159
+ *
160
+ * @example
161
+ * ```typescript
162
+ * // 更新节点负责人和排期
163
+ * await client.workItem.workflow.updateNode('my-project', 'story', 123456, 'dev_node', {
164
+ * node_owners: ['user123', 'user456'],
165
+ * node_schedule: {
166
+ * points: 5,
167
+ * estimate_start_date: 1724169600000,
168
+ * estimate_end_date: 1724428799999,
169
+ * }
170
+ * });
171
+ *
172
+ * // 差异化排期(按人汇总)
173
+ * await client.workItem.workflow.updateNode('my-project', 'story', 123456, 'dev_node', {
174
+ * node_owners: ['user123', 'user456'],
175
+ * schedules: [
176
+ * { owner: 'user123', points: 3, estimate_start_date: 1724169600000, estimate_end_date: 1724300799999 },
177
+ * { owner: 'user456', points: 2, estimate_start_date: 1724300800000, estimate_end_date: 1724428799999 },
178
+ * ]
179
+ * });
180
+ * ```
181
+ */
182
+ async updateNode(projectKey, workItemTypeKey, workItemId, nodeId, request, options) {
183
+ await this.put(API_PATHS.NODE_UPDATE, request, {
184
+ ...options,
185
+ pathParams: {
186
+ project_key: projectKey,
187
+ work_item_type_key: workItemTypeKey,
188
+ work_item_id: String(workItemId),
189
+ node_id: nodeId,
190
+ ...options?.pathParams,
191
+ },
192
+ });
193
+ }
194
+ /**
195
+ * 获取流转必填信息
196
+ *
197
+ * 在进行状态流转或节点完成操作之前,获取目标节点/状态所需的必填信息
198
+ *
199
+ * @param request 查询请求
200
+ * @param options 请求选项
201
+ * @returns 流转必填信息
202
+ *
203
+ * @example
204
+ * ```typescript
205
+ * // 获取完整必填信息
206
+ * const requiredInfo = await client.workItem.workflow.getTransitionRequiredInfo({
207
+ * project_key: 'my-project',
208
+ * work_item_id: 123456,
209
+ * state_key: 'dev_done',
210
+ * });
211
+ *
212
+ * // 检查必填字段
213
+ * if (requiredInfo.form_items) {
214
+ * for (const item of requiredInfo.form_items) {
215
+ * if (!item.finished) {
216
+ * console.log('未完成:', item.key);
217
+ * }
218
+ * }
219
+ * }
220
+ *
221
+ * // 仅查询未完成的必填项
222
+ * const unfinished = await client.workItem.workflow.getTransitionRequiredInfo({
223
+ * project_key: 'my-project',
224
+ * work_item_id: 123456,
225
+ * state_key: 'dev_done',
226
+ * mode: 'unfinished',
227
+ * });
228
+ * ```
229
+ */
230
+ async getTransitionRequiredInfo(request, options) {
231
+ return this.post(API_PATHS.TRANSITION_REQUIRED_INFO, request, options);
232
+ }
233
+ /**
234
+ * 获取工作流详情(WBS 视图)
235
+ *
236
+ * 获取工作项的 WBS 视图信息,包含完整的工作分解结构
237
+ *
238
+ * @param projectKey 空间 ID 或域名
239
+ * @param workItemTypeKey 工作项类型
240
+ * @param workItemId 工作项 ID
241
+ * @param options 请求选项
242
+ * @returns WBS 工作项信息
243
+ *
244
+ * @example
245
+ * ```typescript
246
+ * const wbsView = await client.workItem.workflow.getWbsView('my-project', 'story', 123456);
247
+ * console.log('工作分解结构:', wbsView);
248
+ * ```
249
+ */
250
+ async getWbsView(projectKey, workItemTypeKey, workItemId, params, options) {
251
+ // GET 请求在 fetch 中不能携带 body,将 expand 映射到 query 以保持兼容
252
+ const expandQuery = params?.body?.expand
253
+ ? {
254
+ need_union_deliverable: params.body.expand.need_union_deliverable,
255
+ need_wbs_relation_chain_path: params.body.expand.need_wbs_relation_chain_path,
256
+ need_wbs_relation_chain_entity: params.body.expand.need_wbs_relation_chain_entity,
257
+ }
258
+ : {};
259
+ const mergedQuery = {
260
+ ...expandQuery,
261
+ ...(params?.query ?? {}),
262
+ ...(options?.query ?? {}),
263
+ };
264
+ return this.requestHandler.request({
265
+ method: 'GET',
266
+ path: API_PATHS.WBS_VIEW,
267
+ pathParams: {
268
+ project_key: projectKey,
269
+ work_item_type_key: workItemTypeKey,
270
+ work_item_id: String(workItemId),
271
+ ...options?.pathParams,
272
+ },
273
+ query: Object.keys(mergedQuery).length > 0 ? mergedQuery : undefined,
274
+ auth: options?.auth,
275
+ idempotencyKey: options?.idempotencyKey,
276
+ timeout: options?.timeout,
277
+ skipRetry: options?.skipRetry,
278
+ });
279
+ }
280
+ }
281
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../src/service/workitem/workflow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * 工时登记服务
3
+ * 100% 参考 Meego API 文档
4
+ */
5
+ import { BaseService, type ServiceRequestOptions } from '../../core/base-service.js';
6
+ import type { CreateWorkHourRecordRequest, UpdateWorkHourRecordRequest, DeleteWorkHourRecordRequest, ListWorkHourRecordsRequest, WorkHourRecord } from '../../types/workitem.js';
7
+ import type { PaginatedResult } from '../../types/common.js';
8
+ /** API 路径 */
9
+ export declare const API_PATHS: {
10
+ /** 创建实际工时 */
11
+ CREATE: string;
12
+ /** 更新实际工时(批量) */
13
+ UPDATE: string;
14
+ /** 删除实际工时(批量) */
15
+ DELETE: string;
16
+ /** 获取工作项的工时记录列表 */
17
+ LIST: string;
18
+ };
19
+ /**
20
+ * 工时登记服务
21
+ */
22
+ export declare class WorkHourService extends BaseService {
23
+ /**
24
+ * 创建工时登记记录
25
+ *
26
+ * @param projectKey 空间 ID 或域名
27
+ * @param workItemTypeKey 工作项类型 key
28
+ * @param workItemId 工作项 ID
29
+ * @param request 创建请求
30
+ * @param options 请求选项
31
+ * @returns 新建工时记录列表
32
+ */
33
+ create(projectKey: string, workItemTypeKey: string, workItemId: number, request: CreateWorkHourRecordRequest, options?: ServiceRequestOptions<WorkHourRecord[]>): Promise<WorkHourRecord[]>;
34
+ /**
35
+ * 更新工时登记记录
36
+ *
37
+ * @param projectKey 空间 ID 或域名
38
+ * @param workItemTypeKey 工作项类型 key
39
+ * @param workItemId 工作项 ID
40
+ * @param request 更新请求
41
+ * @param options 请求选项
42
+ */
43
+ update(projectKey: string, workItemTypeKey: string, workItemId: number, request: UpdateWorkHourRecordRequest, options?: ServiceRequestOptions<void>): Promise<void>;
44
+ /**
45
+ * 删除工时登记记录
46
+ *
47
+ * @param projectKey 空间 ID 或域名
48
+ * @param workItemTypeKey 工作项类型 key
49
+ * @param workItemId 工作项 ID
50
+ * @param request 删除请求
51
+ * @param options 请求选项
52
+ */
53
+ deleteRecords(projectKey: string, workItemTypeKey: string, workItemId: number, request: DeleteWorkHourRecordRequest, options?: ServiceRequestOptions<void>): Promise<void>;
54
+ /**
55
+ * 获取工作项的工时登记记录列表
56
+ *
57
+ * @param request 查询请求
58
+ * @param options 请求选项
59
+ * @returns 分页的工时记录列表
60
+ */
61
+ list(request: ListWorkHourRecordsRequest, options?: ServiceRequestOptions<WorkHourRecord>): Promise<PaginatedResult<WorkHourRecord>>;
62
+ }
63
+ //# sourceMappingURL=workhour.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workhour.d.ts","sourceRoot":"","sources":["../../../src/service/workitem/workhour.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,KAAK,EACV,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,cAAc,EACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,aAAa;AACb,eAAO,MAAM,SAAS;IACpB,aAAa;;IAEb,iBAAiB;;IAEjB,iBAAiB;;IAEjB,mBAAmB;;CAEpB,CAAC;AAEF;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAC9C;;;;;;;;;OASG;IACG,MAAM,CACV,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,2BAA2B,EACpC,OAAO,CAAC,EAAE,qBAAqB,CAAC,cAAc,EAAE,CAAC,GAChD,OAAO,CAAC,cAAc,EAAE,CAAC;IAY5B;;;;;;;;OAQG;IACG,MAAM,CACV,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,2BAA2B,EACpC,OAAO,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC;IAYhB;;;;;;;;OAQG;IACG,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,2BAA2B,EACpC,OAAO,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC;IAYhB;;;;;;OAMG;IACG,IAAI,CACR,OAAO,EAAE,0BAA0B,EACnC,OAAO,CAAC,EAAE,qBAAqB,CAAC,cAAc,CAAC,GAC9C,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;CAG5C"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * 工时登记服务
3
+ * 100% 参考 Meego API 文档
4
+ */
5
+ import { BaseService } from '../../core/base-service.js';
6
+ /** API 路径 */
7
+ export const API_PATHS = {
8
+ /** 创建实际工时 */
9
+ CREATE: '/open_api/:project_key/work_item/:work_item_type_key/:work_item_id/work_hour_record',
10
+ /** 更新实际工时(批量) */
11
+ UPDATE: '/open_api/:project_key/work_item/:work_item_type_key/:work_item_id/work_hour_record',
12
+ /** 删除实际工时(批量) */
13
+ DELETE: '/open_api/:project_key/work_item/:work_item_type_key/:work_item_id/work_hour_record',
14
+ /** 获取工作项的工时记录列表 */
15
+ LIST: '/open_api/work_item/man_hour/records',
16
+ };
17
+ /**
18
+ * 工时登记服务
19
+ */
20
+ export class WorkHourService extends BaseService {
21
+ /**
22
+ * 创建工时登记记录
23
+ *
24
+ * @param projectKey 空间 ID 或域名
25
+ * @param workItemTypeKey 工作项类型 key
26
+ * @param workItemId 工作项 ID
27
+ * @param request 创建请求
28
+ * @param options 请求选项
29
+ * @returns 新建工时记录列表
30
+ */
31
+ async create(projectKey, workItemTypeKey, workItemId, request, options) {
32
+ return this.post(API_PATHS.CREATE, request, {
33
+ ...options,
34
+ pathParams: {
35
+ project_key: projectKey,
36
+ work_item_type_key: workItemTypeKey,
37
+ work_item_id: String(workItemId),
38
+ ...options?.pathParams,
39
+ },
40
+ });
41
+ }
42
+ /**
43
+ * 更新工时登记记录
44
+ *
45
+ * @param projectKey 空间 ID 或域名
46
+ * @param workItemTypeKey 工作项类型 key
47
+ * @param workItemId 工作项 ID
48
+ * @param request 更新请求
49
+ * @param options 请求选项
50
+ */
51
+ async update(projectKey, workItemTypeKey, workItemId, request, options) {
52
+ await this.put(API_PATHS.UPDATE, request, {
53
+ ...options,
54
+ pathParams: {
55
+ project_key: projectKey,
56
+ work_item_type_key: workItemTypeKey,
57
+ work_item_id: String(workItemId),
58
+ ...options?.pathParams,
59
+ },
60
+ });
61
+ }
62
+ /**
63
+ * 删除工时登记记录
64
+ *
65
+ * @param projectKey 空间 ID 或域名
66
+ * @param workItemTypeKey 工作项类型 key
67
+ * @param workItemId 工作项 ID
68
+ * @param request 删除请求
69
+ * @param options 请求选项
70
+ */
71
+ async deleteRecords(projectKey, workItemTypeKey, workItemId, request, options) {
72
+ await this.deleteWithBody(API_PATHS.DELETE, request, {
73
+ ...options,
74
+ pathParams: {
75
+ project_key: projectKey,
76
+ work_item_type_key: workItemTypeKey,
77
+ work_item_id: String(workItemId),
78
+ ...options?.pathParams,
79
+ },
80
+ });
81
+ }
82
+ /**
83
+ * 获取工作项的工时登记记录列表
84
+ *
85
+ * @param request 查询请求
86
+ * @param options 请求选项
87
+ * @returns 分页的工时记录列表
88
+ */
89
+ async list(request, options) {
90
+ return this.postPaginated(API_PATHS.LIST, request, options);
91
+ }
92
+ }
93
+ //# sourceMappingURL=workhour.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workhour.js","sourceRoot":"","sources":["../../../src/service/workitem/workhour.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAA8B,MAAM,4BAA4B,CAAC;AAUrF,aAAa;AACb,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,aAAa;IACb,MAAM,EAAE,qFAAqF;IAC7F,iBAAiB;IACjB,MAAM,EAAE,qFAAqF;IAC7F,iBAAiB;IACjB,MAAM,EAAE,qFAAqF;IAC7F,mBAAmB;IACnB,IAAI,EAAE,sCAAsC;CAC7C,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC9C;;;;;;;;;OASG;IACH,KAAK,CAAC,MAAM,CACV,UAAkB,EAClB,eAAuB,EACvB,UAAkB,EAClB,OAAoC,EACpC,OAAiD;QAEjD,OAAO,IAAI,CAAC,IAAI,CAAmB,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE;YAC5D,GAAG,OAAO;YACV,UAAU,EAAE;gBACV,WAAW,EAAE,UAAU;gBACvB,kBAAkB,EAAE,eAAe;gBACnC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC;gBAChC,GAAG,OAAO,EAAE,UAAU;aACvB;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,MAAM,CACV,UAAkB,EAClB,eAAuB,EACvB,UAAkB,EAClB,OAAoC,EACpC,OAAqC;QAErC,MAAM,IAAI,CAAC,GAAG,CAAO,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE;YAC9C,GAAG,OAAO;YACV,UAAU,EAAE;gBACV,WAAW,EAAE,UAAU;gBACvB,kBAAkB,EAAE,eAAe;gBACnC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC;gBAChC,GAAG,OAAO,EAAE,UAAU;aACvB;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa,CACjB,UAAkB,EAClB,eAAuB,EACvB,UAAkB,EAClB,OAAoC,EACpC,OAAqC;QAErC,MAAM,IAAI,CAAC,cAAc,CAAO,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE;YACzD,GAAG,OAAO;YACV,UAAU,EAAE;gBACV,WAAW,EAAE,UAAU;gBACvB,kBAAkB,EAAE,eAAe;gBACnC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC;gBAChC,GAAG,OAAO,EAAE,UAAU;aACvB;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CACR,OAAmC,EACnC,OAA+C;QAE/C,OAAO,IAAI,CAAC,aAAa,CAAiB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC;CACF"}