@zzp123/mcp-zentao 1.0.2 → 1.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.
- package/dist/api/zentaoApi.d.ts +134 -21
- package/dist/api/zentaoApi.js +905 -0
- package/dist/index.js +758 -0
- package/dist/services/programService.d.ts +8 -0
- package/dist/services/programService.js +49 -0
- package/dist/types/zentao.d.ts +555 -0
- package/package.json +1 -1
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export class ProgramService {
|
|
2
|
+
api;
|
|
3
|
+
constructor(api) {
|
|
4
|
+
this.api = api;
|
|
5
|
+
}
|
|
6
|
+
async getPrograms(order) {
|
|
7
|
+
const programs = await this.api.getPrograms(order);
|
|
8
|
+
return programs.map(program => this.enrichProgramData(program));
|
|
9
|
+
}
|
|
10
|
+
enrichProgramData(program) {
|
|
11
|
+
const enrichedProgram = { ...program };
|
|
12
|
+
// 计算项目持续天数
|
|
13
|
+
if (program.begin && program.end) {
|
|
14
|
+
const beginDate = new Date(program.begin);
|
|
15
|
+
const endDate = new Date(program.end);
|
|
16
|
+
const durationDays = Math.ceil((endDate.getTime() - beginDate.getTime()) / (1000 * 60 * 60 * 24));
|
|
17
|
+
// 添加持续天数信息(如果需要可以添加到类型定义中)
|
|
18
|
+
enrichedProgram.durationDays = durationDays;
|
|
19
|
+
}
|
|
20
|
+
// 计算实际执行天数
|
|
21
|
+
if (program.realBegan && program.realEnd) {
|
|
22
|
+
const realBeginDate = new Date(program.realBegan);
|
|
23
|
+
const realEndDate = new Date(program.realEnd);
|
|
24
|
+
const actualDays = Math.ceil((realEndDate.getTime() - realBeginDate.getTime()) / (1000 * 60 * 60 * 24));
|
|
25
|
+
enrichedProgram.actualDays = actualDays;
|
|
26
|
+
}
|
|
27
|
+
// 添加状态描述
|
|
28
|
+
switch (program.status) {
|
|
29
|
+
case 'doing':
|
|
30
|
+
enrichedProgram.statusDescription = '进行中';
|
|
31
|
+
break;
|
|
32
|
+
case 'done':
|
|
33
|
+
enrichedProgram.statusDescription = '已完成';
|
|
34
|
+
break;
|
|
35
|
+
case 'wait':
|
|
36
|
+
enrichedProgram.statusDescription = '未开始';
|
|
37
|
+
break;
|
|
38
|
+
case 'suspend':
|
|
39
|
+
enrichedProgram.statusDescription = '已挂起';
|
|
40
|
+
break;
|
|
41
|
+
case 'closed':
|
|
42
|
+
enrichedProgram.statusDescription = '已关闭';
|
|
43
|
+
break;
|
|
44
|
+
default:
|
|
45
|
+
enrichedProgram.statusDescription = program.status;
|
|
46
|
+
}
|
|
47
|
+
return enrichedProgram;
|
|
48
|
+
}
|
|
49
|
+
}
|
package/dist/types/zentao.d.ts
CHANGED
|
@@ -56,3 +56,558 @@ export interface BugResolution {
|
|
|
56
56
|
}
|
|
57
57
|
export type TaskStatus = 'wait' | 'doing' | 'done' | 'all';
|
|
58
58
|
export type BugStatus = 'active' | 'resolved' | 'closed' | 'all';
|
|
59
|
+
export interface User {
|
|
60
|
+
id: number;
|
|
61
|
+
account: string;
|
|
62
|
+
avatar: string;
|
|
63
|
+
realname: string;
|
|
64
|
+
}
|
|
65
|
+
export interface Program {
|
|
66
|
+
id: number;
|
|
67
|
+
name: string;
|
|
68
|
+
code: string;
|
|
69
|
+
type: string;
|
|
70
|
+
budget: string;
|
|
71
|
+
budgetUnit: string;
|
|
72
|
+
begin: string;
|
|
73
|
+
end: string;
|
|
74
|
+
realBegan: string;
|
|
75
|
+
realEnd: string;
|
|
76
|
+
status: string;
|
|
77
|
+
subStatus: string;
|
|
78
|
+
pri: string;
|
|
79
|
+
desc: string;
|
|
80
|
+
parent: number;
|
|
81
|
+
path: string;
|
|
82
|
+
grade: number;
|
|
83
|
+
percent: number;
|
|
84
|
+
openedBy: User;
|
|
85
|
+
openedDate: string;
|
|
86
|
+
openedVersion: string;
|
|
87
|
+
progress?: number;
|
|
88
|
+
}
|
|
89
|
+
export interface Product {
|
|
90
|
+
id: number;
|
|
91
|
+
program: number;
|
|
92
|
+
name: string;
|
|
93
|
+
code: string;
|
|
94
|
+
line: number;
|
|
95
|
+
type: string;
|
|
96
|
+
status: string;
|
|
97
|
+
subStatus: string;
|
|
98
|
+
desc: string;
|
|
99
|
+
PO: User;
|
|
100
|
+
QD: User | null;
|
|
101
|
+
RD: User | null;
|
|
102
|
+
acl: string;
|
|
103
|
+
whitelist: any[];
|
|
104
|
+
createdBy: User;
|
|
105
|
+
createdDate: string;
|
|
106
|
+
}
|
|
107
|
+
export interface Plan {
|
|
108
|
+
id: number;
|
|
109
|
+
product: number;
|
|
110
|
+
branch: number;
|
|
111
|
+
title: string;
|
|
112
|
+
desc: string;
|
|
113
|
+
begin: string;
|
|
114
|
+
end: string;
|
|
115
|
+
status: string;
|
|
116
|
+
stories: any[];
|
|
117
|
+
bugs: any[];
|
|
118
|
+
order: number;
|
|
119
|
+
parent: number;
|
|
120
|
+
title_: string;
|
|
121
|
+
category: string;
|
|
122
|
+
pri: number;
|
|
123
|
+
bugs_: string;
|
|
124
|
+
status_: string;
|
|
125
|
+
severity: number;
|
|
126
|
+
pri_: string;
|
|
127
|
+
type: string;
|
|
128
|
+
stages: string;
|
|
129
|
+
status__: string;
|
|
130
|
+
closedDate: string | null;
|
|
131
|
+
closedReason: string;
|
|
132
|
+
lastEditedBy: User | null;
|
|
133
|
+
lastEditedDate: string | null;
|
|
134
|
+
deleted: string;
|
|
135
|
+
}
|
|
136
|
+
export interface UpdatePlanRequest {
|
|
137
|
+
branch?: number;
|
|
138
|
+
title?: string;
|
|
139
|
+
begin?: string;
|
|
140
|
+
end?: string;
|
|
141
|
+
desc?: string;
|
|
142
|
+
}
|
|
143
|
+
export interface CreateStoryRequest {
|
|
144
|
+
title: string;
|
|
145
|
+
product: number;
|
|
146
|
+
pri: number;
|
|
147
|
+
category?: string;
|
|
148
|
+
spec?: string;
|
|
149
|
+
verify?: string;
|
|
150
|
+
source?: string;
|
|
151
|
+
sourceNote?: string;
|
|
152
|
+
estimate?: number;
|
|
153
|
+
keywords?: string;
|
|
154
|
+
}
|
|
155
|
+
export interface Story {
|
|
156
|
+
id: number;
|
|
157
|
+
parent: number;
|
|
158
|
+
product: number;
|
|
159
|
+
branch: number;
|
|
160
|
+
module: number;
|
|
161
|
+
fromBug: number;
|
|
162
|
+
source: string;
|
|
163
|
+
sourceNote: string;
|
|
164
|
+
title: string;
|
|
165
|
+
category: string;
|
|
166
|
+
pri: number;
|
|
167
|
+
estimate: number;
|
|
168
|
+
status: string;
|
|
169
|
+
stage: string;
|
|
170
|
+
openedBy: User;
|
|
171
|
+
openedDate: string;
|
|
172
|
+
assignedTo: string;
|
|
173
|
+
assignedDate: string | null;
|
|
174
|
+
lastEditedBy: User | null;
|
|
175
|
+
lastEditedDate: string | null;
|
|
176
|
+
reviewedBy: User | null;
|
|
177
|
+
reviewedDate: string | null;
|
|
178
|
+
closedBy: User | null;
|
|
179
|
+
closedDate: string | null;
|
|
180
|
+
closedReason: string;
|
|
181
|
+
toBug: number;
|
|
182
|
+
childStories: any[];
|
|
183
|
+
linkStories: any[];
|
|
184
|
+
duplicateStory: number;
|
|
185
|
+
version: number;
|
|
186
|
+
type: string;
|
|
187
|
+
verify: string;
|
|
188
|
+
keywords: string;
|
|
189
|
+
}
|
|
190
|
+
export interface Release {
|
|
191
|
+
id: number;
|
|
192
|
+
project: number;
|
|
193
|
+
product: number;
|
|
194
|
+
branch: number;
|
|
195
|
+
build: number;
|
|
196
|
+
name: string;
|
|
197
|
+
date: string;
|
|
198
|
+
desc: string;
|
|
199
|
+
status: string;
|
|
200
|
+
}
|
|
201
|
+
export interface CreateBugRequest {
|
|
202
|
+
title: string;
|
|
203
|
+
severity: number;
|
|
204
|
+
pri: number;
|
|
205
|
+
type: string;
|
|
206
|
+
branch?: number;
|
|
207
|
+
module?: number;
|
|
208
|
+
execution?: number;
|
|
209
|
+
keywords?: string;
|
|
210
|
+
os?: string;
|
|
211
|
+
browser?: string;
|
|
212
|
+
steps?: string;
|
|
213
|
+
task?: number;
|
|
214
|
+
story?: number;
|
|
215
|
+
deadline?: string;
|
|
216
|
+
openedBuild?: string[];
|
|
217
|
+
}
|
|
218
|
+
export interface Execution {
|
|
219
|
+
id: number;
|
|
220
|
+
name: string;
|
|
221
|
+
project: number;
|
|
222
|
+
code: string;
|
|
223
|
+
type: string;
|
|
224
|
+
parent: number;
|
|
225
|
+
begin: string;
|
|
226
|
+
end: string;
|
|
227
|
+
status: string;
|
|
228
|
+
openedBy: string | User;
|
|
229
|
+
openedDate: string;
|
|
230
|
+
progress: number;
|
|
231
|
+
}
|
|
232
|
+
export interface CreatePlanRequest {
|
|
233
|
+
title: string;
|
|
234
|
+
branch?: number;
|
|
235
|
+
begin?: string;
|
|
236
|
+
end?: string;
|
|
237
|
+
desc?: string;
|
|
238
|
+
parent?: number;
|
|
239
|
+
}
|
|
240
|
+
export interface Project {
|
|
241
|
+
id: number;
|
|
242
|
+
name: string;
|
|
243
|
+
code: string;
|
|
244
|
+
model: string;
|
|
245
|
+
type: string;
|
|
246
|
+
budget: string;
|
|
247
|
+
budgetUnit: string;
|
|
248
|
+
parent: number;
|
|
249
|
+
begin: string;
|
|
250
|
+
end: string;
|
|
251
|
+
status: string;
|
|
252
|
+
openedBy: string | User;
|
|
253
|
+
openedDate: string;
|
|
254
|
+
PM: string | User;
|
|
255
|
+
progress: number;
|
|
256
|
+
}
|
|
257
|
+
export interface UpdateStoryRequest {
|
|
258
|
+
module?: number;
|
|
259
|
+
source?: string;
|
|
260
|
+
sourceNote?: string;
|
|
261
|
+
pri?: number;
|
|
262
|
+
category?: string;
|
|
263
|
+
estimate?: number;
|
|
264
|
+
keywords?: string;
|
|
265
|
+
}
|
|
266
|
+
export interface CreateProgramRequest {
|
|
267
|
+
name?: string;
|
|
268
|
+
parent?: string;
|
|
269
|
+
PM?: string;
|
|
270
|
+
budget?: number;
|
|
271
|
+
budgetUnit?: string;
|
|
272
|
+
desc?: string;
|
|
273
|
+
begin?: string;
|
|
274
|
+
end?: string;
|
|
275
|
+
acl?: string;
|
|
276
|
+
whitelist?: string[];
|
|
277
|
+
}
|
|
278
|
+
export interface UpdateProgramRequest {
|
|
279
|
+
name?: string;
|
|
280
|
+
parent?: string;
|
|
281
|
+
PM?: string;
|
|
282
|
+
budget?: number;
|
|
283
|
+
budgetUnit?: string;
|
|
284
|
+
desc?: string;
|
|
285
|
+
begin?: string;
|
|
286
|
+
end?: string;
|
|
287
|
+
acl?: string;
|
|
288
|
+
whitelist?: string[];
|
|
289
|
+
}
|
|
290
|
+
export interface CreateProductRequest {
|
|
291
|
+
name: string;
|
|
292
|
+
code: string;
|
|
293
|
+
program?: number;
|
|
294
|
+
line?: number;
|
|
295
|
+
PO?: string;
|
|
296
|
+
QD?: string;
|
|
297
|
+
RD?: string;
|
|
298
|
+
type?: string;
|
|
299
|
+
desc?: string;
|
|
300
|
+
acl?: string;
|
|
301
|
+
whitelist?: string[];
|
|
302
|
+
}
|
|
303
|
+
export interface UpdateProductRequest {
|
|
304
|
+
name?: string;
|
|
305
|
+
code?: string;
|
|
306
|
+
type?: string;
|
|
307
|
+
line?: number;
|
|
308
|
+
program?: number;
|
|
309
|
+
status?: string;
|
|
310
|
+
desc?: string;
|
|
311
|
+
}
|
|
312
|
+
export interface CreateProjectRequest {
|
|
313
|
+
name: string;
|
|
314
|
+
begin: string;
|
|
315
|
+
end: string;
|
|
316
|
+
products: number[];
|
|
317
|
+
code: string;
|
|
318
|
+
model?: string;
|
|
319
|
+
parent?: number;
|
|
320
|
+
}
|
|
321
|
+
export interface UpdateProjectRequest {
|
|
322
|
+
name?: string;
|
|
323
|
+
code?: string;
|
|
324
|
+
parent?: number;
|
|
325
|
+
PM?: string;
|
|
326
|
+
budget?: number;
|
|
327
|
+
budgetUnit?: string;
|
|
328
|
+
days?: number;
|
|
329
|
+
desc?: string;
|
|
330
|
+
acl?: string;
|
|
331
|
+
whitelist?: string[];
|
|
332
|
+
auth?: string;
|
|
333
|
+
}
|
|
334
|
+
export interface CreateExecutionRequest {
|
|
335
|
+
project: number;
|
|
336
|
+
name: string;
|
|
337
|
+
code: string;
|
|
338
|
+
begin: string;
|
|
339
|
+
end: string;
|
|
340
|
+
days?: number;
|
|
341
|
+
lifetime?: string;
|
|
342
|
+
PO?: string;
|
|
343
|
+
PM?: string;
|
|
344
|
+
QD?: string;
|
|
345
|
+
RD?: string;
|
|
346
|
+
teamMembers?: string[];
|
|
347
|
+
desc?: string;
|
|
348
|
+
acl?: string;
|
|
349
|
+
whitelist?: string[];
|
|
350
|
+
}
|
|
351
|
+
export interface UpdateExecutionRequest {
|
|
352
|
+
project?: number;
|
|
353
|
+
name?: string;
|
|
354
|
+
code?: string;
|
|
355
|
+
begin?: string;
|
|
356
|
+
end?: string;
|
|
357
|
+
days?: number;
|
|
358
|
+
lifetime?: string;
|
|
359
|
+
PO?: string;
|
|
360
|
+
PM?: string;
|
|
361
|
+
QD?: string;
|
|
362
|
+
RD?: string;
|
|
363
|
+
teamMembers?: string[];
|
|
364
|
+
desc?: string;
|
|
365
|
+
acl?: string;
|
|
366
|
+
whitelist?: string[];
|
|
367
|
+
}
|
|
368
|
+
export interface UpdateBugRequest {
|
|
369
|
+
branch?: number;
|
|
370
|
+
module?: number;
|
|
371
|
+
execution?: number;
|
|
372
|
+
title?: string;
|
|
373
|
+
keywords?: string;
|
|
374
|
+
severity?: number;
|
|
375
|
+
pri?: number;
|
|
376
|
+
type?: string;
|
|
377
|
+
os?: string;
|
|
378
|
+
browser?: string;
|
|
379
|
+
steps?: string;
|
|
380
|
+
assignedTo?: string;
|
|
381
|
+
deadline?: string;
|
|
382
|
+
}
|
|
383
|
+
export interface Feedback {
|
|
384
|
+
id: number;
|
|
385
|
+
product: number;
|
|
386
|
+
module: number;
|
|
387
|
+
title: string;
|
|
388
|
+
type: string;
|
|
389
|
+
solution: string;
|
|
390
|
+
desc: string;
|
|
391
|
+
status: string;
|
|
392
|
+
subStatus: string;
|
|
393
|
+
public: number;
|
|
394
|
+
notify: number;
|
|
395
|
+
notifyEmail: string;
|
|
396
|
+
likes: string;
|
|
397
|
+
result: number;
|
|
398
|
+
faq: number;
|
|
399
|
+
openedBy: User | string;
|
|
400
|
+
openedDate: string;
|
|
401
|
+
reviewedBy: string | null;
|
|
402
|
+
reviewedDate: string | null;
|
|
403
|
+
processedBy: string | null;
|
|
404
|
+
processedDate: string | null;
|
|
405
|
+
closedBy: User | string | null;
|
|
406
|
+
closedDate: string | null;
|
|
407
|
+
closedReason: string;
|
|
408
|
+
editedBy: User | string;
|
|
409
|
+
editedDate: string;
|
|
410
|
+
assignedTo: User | string | null;
|
|
411
|
+
assignedDate: string;
|
|
412
|
+
feedbackBy: string;
|
|
413
|
+
mailto: any[];
|
|
414
|
+
deleted: boolean;
|
|
415
|
+
likesCount?: number;
|
|
416
|
+
}
|
|
417
|
+
export interface CreateFeedbackRequest {
|
|
418
|
+
product: number;
|
|
419
|
+
module?: number;
|
|
420
|
+
title: string;
|
|
421
|
+
type?: string;
|
|
422
|
+
desc?: string;
|
|
423
|
+
public?: number;
|
|
424
|
+
notify?: number;
|
|
425
|
+
notifyEmail?: string;
|
|
426
|
+
feedbackBy?: string;
|
|
427
|
+
}
|
|
428
|
+
export interface UpdateFeedbackRequest {
|
|
429
|
+
product?: number;
|
|
430
|
+
module?: number;
|
|
431
|
+
title?: string;
|
|
432
|
+
type?: string;
|
|
433
|
+
desc?: string;
|
|
434
|
+
public?: number;
|
|
435
|
+
notify?: number;
|
|
436
|
+
notifyEmail?: string;
|
|
437
|
+
feedbackBy?: string;
|
|
438
|
+
}
|
|
439
|
+
export interface AssignFeedbackRequest {
|
|
440
|
+
assignedTo?: string;
|
|
441
|
+
comment?: string;
|
|
442
|
+
mailto?: string;
|
|
443
|
+
}
|
|
444
|
+
export interface CloseFeedbackRequest {
|
|
445
|
+
closedReason?: string;
|
|
446
|
+
comment?: string;
|
|
447
|
+
}
|
|
448
|
+
export interface TestCase {
|
|
449
|
+
id: number;
|
|
450
|
+
product: number;
|
|
451
|
+
branch: number;
|
|
452
|
+
module: number;
|
|
453
|
+
story: number;
|
|
454
|
+
storyVersion: number;
|
|
455
|
+
title: string;
|
|
456
|
+
precondition: string;
|
|
457
|
+
keywords: string;
|
|
458
|
+
pri: number;
|
|
459
|
+
type: string;
|
|
460
|
+
stage: string;
|
|
461
|
+
status: string;
|
|
462
|
+
openedBy: User | string;
|
|
463
|
+
openedDate: string;
|
|
464
|
+
fromBug: number;
|
|
465
|
+
fromCaseID: number;
|
|
466
|
+
steps?: TestCaseStep[];
|
|
467
|
+
}
|
|
468
|
+
export interface TestCaseStep {
|
|
469
|
+
id?: number;
|
|
470
|
+
desc: string;
|
|
471
|
+
expect: string;
|
|
472
|
+
}
|
|
473
|
+
export interface CreateTestCaseRequest {
|
|
474
|
+
branch?: number;
|
|
475
|
+
module?: number;
|
|
476
|
+
story?: number;
|
|
477
|
+
title: string;
|
|
478
|
+
type: string;
|
|
479
|
+
stage?: string;
|
|
480
|
+
precondition?: string;
|
|
481
|
+
pri?: number;
|
|
482
|
+
steps: TestCaseStep[];
|
|
483
|
+
keywords?: string;
|
|
484
|
+
}
|
|
485
|
+
export interface UpdateTestCaseRequest {
|
|
486
|
+
branch?: number;
|
|
487
|
+
module?: number;
|
|
488
|
+
story?: number;
|
|
489
|
+
title?: string;
|
|
490
|
+
type?: string;
|
|
491
|
+
stage?: string;
|
|
492
|
+
precondition?: string;
|
|
493
|
+
pri?: number;
|
|
494
|
+
steps?: TestCaseStep[];
|
|
495
|
+
keywords?: string;
|
|
496
|
+
}
|
|
497
|
+
export interface Build {
|
|
498
|
+
id: number;
|
|
499
|
+
project: number;
|
|
500
|
+
product: number;
|
|
501
|
+
branch: number;
|
|
502
|
+
execution: number;
|
|
503
|
+
name: string;
|
|
504
|
+
scmPath: string;
|
|
505
|
+
filePath: string;
|
|
506
|
+
date: string;
|
|
507
|
+
builder: User | string;
|
|
508
|
+
desc: string;
|
|
509
|
+
deleted: boolean;
|
|
510
|
+
}
|
|
511
|
+
export interface CreateBuildRequest {
|
|
512
|
+
execution: number;
|
|
513
|
+
product: number;
|
|
514
|
+
branch?: number;
|
|
515
|
+
name: string;
|
|
516
|
+
builder: string;
|
|
517
|
+
date?: string;
|
|
518
|
+
scmPath?: string;
|
|
519
|
+
filePath?: string;
|
|
520
|
+
desc?: string;
|
|
521
|
+
}
|
|
522
|
+
export interface UpdateBuildRequest {
|
|
523
|
+
name?: string;
|
|
524
|
+
builder?: string;
|
|
525
|
+
date?: string;
|
|
526
|
+
scmPath?: string;
|
|
527
|
+
filePath?: string;
|
|
528
|
+
desc?: string;
|
|
529
|
+
}
|
|
530
|
+
export interface UserDetail {
|
|
531
|
+
id: number;
|
|
532
|
+
type: string;
|
|
533
|
+
dept: number;
|
|
534
|
+
account: string;
|
|
535
|
+
role: string;
|
|
536
|
+
realname: string;
|
|
537
|
+
nickname: string;
|
|
538
|
+
avatar: string;
|
|
539
|
+
birthday: string | null;
|
|
540
|
+
gender: string;
|
|
541
|
+
email: string;
|
|
542
|
+
mobile: string;
|
|
543
|
+
phone: string;
|
|
544
|
+
weixin: string;
|
|
545
|
+
join: string | null;
|
|
546
|
+
deleted: string;
|
|
547
|
+
}
|
|
548
|
+
export interface CreateUserRequest {
|
|
549
|
+
account: string;
|
|
550
|
+
password: string;
|
|
551
|
+
realname?: string;
|
|
552
|
+
visions?: string[];
|
|
553
|
+
}
|
|
554
|
+
export interface UpdateUserRequest {
|
|
555
|
+
dept?: number;
|
|
556
|
+
role?: string;
|
|
557
|
+
mobile?: string;
|
|
558
|
+
realname?: string;
|
|
559
|
+
email?: string;
|
|
560
|
+
phone?: string;
|
|
561
|
+
}
|
|
562
|
+
export interface Ticket {
|
|
563
|
+
id: number;
|
|
564
|
+
product: number;
|
|
565
|
+
module: number;
|
|
566
|
+
title: string;
|
|
567
|
+
type: string;
|
|
568
|
+
desc: string;
|
|
569
|
+
openedBuild: string;
|
|
570
|
+
feedback: number;
|
|
571
|
+
assignedTo: string | null;
|
|
572
|
+
assignedDate: string;
|
|
573
|
+
realStarted: string;
|
|
574
|
+
startedBy: string;
|
|
575
|
+
startedDate: string;
|
|
576
|
+
deadline: string | null;
|
|
577
|
+
pri: number;
|
|
578
|
+
estimate: number;
|
|
579
|
+
left: number;
|
|
580
|
+
status: string;
|
|
581
|
+
openedBy: User;
|
|
582
|
+
openedDate: string;
|
|
583
|
+
activatedCount: number;
|
|
584
|
+
closedBy: string | null;
|
|
585
|
+
closedDate: string | null;
|
|
586
|
+
closedReason: string;
|
|
587
|
+
finishedBy: string | null;
|
|
588
|
+
finishedDate: string | null;
|
|
589
|
+
resolvedBy: string;
|
|
590
|
+
resolvedDate: string;
|
|
591
|
+
resolution: string;
|
|
592
|
+
editedBy: User | string | null;
|
|
593
|
+
editedDate: string | null;
|
|
594
|
+
keywords: string;
|
|
595
|
+
repeatTicket: number;
|
|
596
|
+
mailto: any[];
|
|
597
|
+
deleted: boolean;
|
|
598
|
+
consumed: number;
|
|
599
|
+
}
|
|
600
|
+
export interface CreateTicketRequest {
|
|
601
|
+
product: number;
|
|
602
|
+
module: number;
|
|
603
|
+
title: string;
|
|
604
|
+
type?: string;
|
|
605
|
+
desc?: string;
|
|
606
|
+
}
|
|
607
|
+
export interface UpdateTicketRequest {
|
|
608
|
+
product?: number;
|
|
609
|
+
module?: number;
|
|
610
|
+
title?: string;
|
|
611
|
+
type?: string;
|
|
612
|
+
desc?: string;
|
|
613
|
+
}
|