@osise/api-client 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +82 -0
- package/dist/cjs/api/admin-b2b.js +260 -0
- package/dist/cjs/api/admin-b2b.js.map +1 -0
- package/dist/cjs/api/admin-finance.js +78 -0
- package/dist/cjs/api/admin-finance.js.map +1 -0
- package/dist/cjs/api/admin-payouts.js +54 -0
- package/dist/cjs/api/admin-payouts.js.map +1 -0
- package/dist/cjs/api/admin-qc.js +237 -0
- package/dist/cjs/api/admin-qc.js.map +1 -0
- package/dist/cjs/api/admin.js +280 -24
- package/dist/cjs/api/admin.js.map +1 -1
- package/dist/cjs/api/b2b.js +124 -0
- package/dist/cjs/api/b2b.js.map +1 -0
- package/dist/cjs/api/communication.js +283 -0
- package/dist/cjs/api/communication.js.map +1 -0
- package/dist/cjs/api/index.js +33 -1
- package/dist/cjs/api/index.js.map +1 -1
- package/dist/cjs/api/jobs.js +304 -43
- package/dist/cjs/api/jobs.js.map +1 -1
- package/dist/cjs/api/location.js +91 -0
- package/dist/cjs/api/location.js.map +1 -0
- package/dist/cjs/api/payments.js +129 -0
- package/dist/cjs/api/payments.js.map +1 -0
- package/dist/cjs/api/support.js +148 -0
- package/dist/cjs/api/support.js.map +1 -0
- package/dist/cjs/hooks/index.js +1738 -4
- package/dist/cjs/hooks/index.js.map +1 -1
- package/dist/cjs/index.js +35 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/admin-finance.js +7 -0
- package/dist/cjs/types/admin-finance.js.map +1 -0
- package/dist/cjs/types/admin-invoice.js +7 -0
- package/dist/cjs/types/admin-invoice.js.map +1 -0
- package/dist/cjs/types/admin-payout.js +7 -0
- package/dist/cjs/types/admin-payout.js.map +1 -0
- package/dist/cjs/types/b2b.js +7 -0
- package/dist/cjs/types/b2b.js.map +1 -0
- package/dist/cjs/types/communication.js +90 -0
- package/dist/cjs/types/communication.js.map +1 -0
- package/dist/cjs/types/enums.js +343 -1
- package/dist/cjs/types/enums.js.map +1 -1
- package/dist/cjs/types/index.js +18 -2
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/job.js +1 -0
- package/dist/cjs/types/job.js.map +1 -1
- package/dist/cjs/types/location.js +7 -0
- package/dist/cjs/types/location.js.map +1 -0
- package/dist/cjs/types/payment.js +7 -0
- package/dist/cjs/types/payment.js.map +1 -0
- package/dist/cjs/types/qc.js +8 -0
- package/dist/cjs/types/qc.js.map +1 -0
- package/dist/cjs/types/support.js +7 -0
- package/dist/cjs/types/support.js.map +1 -0
- package/dist/esm/api/admin-b2b.js +255 -0
- package/dist/esm/api/admin-b2b.js.map +1 -0
- package/dist/esm/api/admin-finance.js +74 -0
- package/dist/esm/api/admin-finance.js.map +1 -0
- package/dist/esm/api/admin-payouts.js +50 -0
- package/dist/esm/api/admin-payouts.js.map +1 -0
- package/dist/esm/api/admin-qc.js +233 -0
- package/dist/esm/api/admin-qc.js.map +1 -0
- package/dist/esm/api/admin.js +275 -22
- package/dist/esm/api/admin.js.map +1 -1
- package/dist/esm/api/b2b.js +120 -0
- package/dist/esm/api/b2b.js.map +1 -0
- package/dist/esm/api/communication.js +275 -0
- package/dist/esm/api/communication.js.map +1 -0
- package/dist/esm/api/index.js +10 -1
- package/dist/esm/api/index.js.map +1 -1
- package/dist/esm/api/jobs.js +304 -43
- package/dist/esm/api/jobs.js.map +1 -1
- package/dist/esm/api/location.js +87 -0
- package/dist/esm/api/location.js.map +1 -0
- package/dist/esm/api/payments.js +124 -0
- package/dist/esm/api/payments.js.map +1 -0
- package/dist/esm/api/support.js +143 -0
- package/dist/esm/api/support.js.map +1 -0
- package/dist/esm/hooks/index.js +1552 -3
- package/dist/esm/hooks/index.js.map +1 -1
- package/dist/esm/index.js +36 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/admin-finance.js +6 -0
- package/dist/esm/types/admin-finance.js.map +1 -0
- package/dist/esm/types/admin-invoice.js +6 -0
- package/dist/esm/types/admin-invoice.js.map +1 -0
- package/dist/esm/types/admin-payout.js +6 -0
- package/dist/esm/types/admin-payout.js.map +1 -0
- package/dist/esm/types/b2b.js +6 -0
- package/dist/esm/types/b2b.js.map +1 -0
- package/dist/esm/types/communication.js +87 -0
- package/dist/esm/types/communication.js.map +1 -0
- package/dist/esm/types/enums.js +341 -0
- package/dist/esm/types/enums.js.map +1 -1
- package/dist/esm/types/index.js +18 -2
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/job.js +1 -0
- package/dist/esm/types/job.js.map +1 -1
- package/dist/esm/types/location.js +6 -0
- package/dist/esm/types/location.js.map +1 -0
- package/dist/esm/types/payment.js +6 -0
- package/dist/esm/types/payment.js.map +1 -0
- package/dist/esm/types/qc.js +7 -0
- package/dist/esm/types/qc.js.map +1 -0
- package/dist/esm/types/support.js +6 -0
- package/dist/esm/types/support.js.map +1 -0
- package/dist/types/api/admin-b2b.d.ts +225 -0
- package/dist/types/api/admin-b2b.d.ts.map +1 -0
- package/dist/types/api/admin-finance.d.ts +52 -0
- package/dist/types/api/admin-finance.d.ts.map +1 -0
- package/dist/types/api/admin-payouts.d.ts +37 -0
- package/dist/types/api/admin-payouts.d.ts.map +1 -0
- package/dist/types/api/admin-qc.d.ts +157 -0
- package/dist/types/api/admin-qc.d.ts.map +1 -0
- package/dist/types/api/admin.d.ts +184 -17
- package/dist/types/api/admin.d.ts.map +1 -1
- package/dist/types/api/b2b.d.ts +77 -0
- package/dist/types/api/b2b.d.ts.map +1 -0
- package/dist/types/api/communication.d.ts +201 -0
- package/dist/types/api/communication.d.ts.map +1 -0
- package/dist/types/api/index.d.ts +10 -1
- package/dist/types/api/index.d.ts.map +1 -1
- package/dist/types/api/jobs.d.ts +197 -38
- package/dist/types/api/jobs.d.ts.map +1 -1
- package/dist/types/api/location.d.ts +76 -0
- package/dist/types/api/location.d.ts.map +1 -0
- package/dist/types/api/payments.d.ts +81 -0
- package/dist/types/api/payments.d.ts.map +1 -0
- package/dist/types/api/support.d.ts +101 -0
- package/dist/types/api/support.d.ts.map +1 -0
- package/dist/types/hooks/index.d.ts +965 -6
- package/dist/types/hooks/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +32 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/admin-finance.d.ts +265 -0
- package/dist/types/types/admin-finance.d.ts.map +1 -0
- package/dist/types/types/admin-invoice.d.ts +262 -0
- package/dist/types/types/admin-invoice.d.ts.map +1 -0
- package/dist/types/types/admin-payout.d.ts +180 -0
- package/dist/types/types/admin-payout.d.ts.map +1 -0
- package/dist/types/types/admin.d.ts +1341 -0
- package/dist/types/types/admin.d.ts.map +1 -1
- package/dist/types/types/b2b.d.ts +687 -0
- package/dist/types/types/b2b.d.ts.map +1 -0
- package/dist/types/types/communication.d.ts +670 -0
- package/dist/types/types/communication.d.ts.map +1 -0
- package/dist/types/types/enums.d.ts +311 -0
- package/dist/types/types/enums.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +10 -1
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/types/job.d.ts +576 -55
- package/dist/types/types/job.d.ts.map +1 -1
- package/dist/types/types/location.d.ts +74 -0
- package/dist/types/types/location.d.ts.map +1 -0
- package/dist/types/types/payment.d.ts +281 -0
- package/dist/types/types/payment.d.ts.map +1 -0
- package/dist/types/types/qc.d.ts +589 -0
- package/dist/types/types/qc.d.ts.map +1 -0
- package/dist/types/types/support.d.ts +194 -0
- package/dist/types/types/support.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -223,4 +223,1345 @@ export interface ConsumerAnalyticsDto {
|
|
|
223
223
|
averageJobsPerConsumer: number;
|
|
224
224
|
topSpenders: AdminConsumerListItemDto[];
|
|
225
225
|
}
|
|
226
|
+
/** Analytics filter request */
|
|
227
|
+
export interface AnalyticsFilterDto {
|
|
228
|
+
periodStart?: string;
|
|
229
|
+
periodEnd?: string;
|
|
230
|
+
period?: string;
|
|
231
|
+
categoryId?: string;
|
|
232
|
+
area?: string;
|
|
233
|
+
city?: string;
|
|
234
|
+
state?: string;
|
|
235
|
+
b2bOnly?: boolean;
|
|
236
|
+
companyId?: string;
|
|
237
|
+
granularity?: 'hour' | 'day' | 'week' | 'month';
|
|
238
|
+
includeComparison?: boolean;
|
|
239
|
+
}
|
|
240
|
+
/** Dashboard KPI Response */
|
|
241
|
+
export interface DashboardKpiDto {
|
|
242
|
+
periodStart: string;
|
|
243
|
+
periodEnd: string;
|
|
244
|
+
jobs: DashboardJobKpiDto;
|
|
245
|
+
revenue: DashboardRevenueKpiDto;
|
|
246
|
+
artisans: DashboardArtisanKpiDto;
|
|
247
|
+
customers: DashboardCustomerKpiDto;
|
|
248
|
+
sla: DashboardSlaKpiDto;
|
|
249
|
+
quality: DashboardQualityKpiDto;
|
|
250
|
+
generatedAt: string;
|
|
251
|
+
}
|
|
252
|
+
export interface DashboardJobKpiDto {
|
|
253
|
+
total: number;
|
|
254
|
+
completed: number;
|
|
255
|
+
pending: number;
|
|
256
|
+
inProgress: number;
|
|
257
|
+
cancelled: number;
|
|
258
|
+
completionRate: number;
|
|
259
|
+
changeFromPreviousPeriod: number;
|
|
260
|
+
averageDurationMinutes: number;
|
|
261
|
+
}
|
|
262
|
+
export interface DashboardRevenueKpiDto {
|
|
263
|
+
totalRevenue: number;
|
|
264
|
+
totalCommission: number;
|
|
265
|
+
totalPayouts: number;
|
|
266
|
+
pendingPayouts: number;
|
|
267
|
+
b2bRevenue: number;
|
|
268
|
+
consumerRevenue: number;
|
|
269
|
+
changeFromPreviousPeriod: number;
|
|
270
|
+
averageJobValue: number;
|
|
271
|
+
}
|
|
272
|
+
export interface DashboardArtisanKpiDto {
|
|
273
|
+
totalActive: number;
|
|
274
|
+
availableNow: number;
|
|
275
|
+
onJob: number;
|
|
276
|
+
pendingApplications: number;
|
|
277
|
+
averageRating: number;
|
|
278
|
+
onProbation: number;
|
|
279
|
+
suspended: number;
|
|
280
|
+
}
|
|
281
|
+
export interface DashboardCustomerKpiDto {
|
|
282
|
+
totalConsumers: number;
|
|
283
|
+
newInPeriod: number;
|
|
284
|
+
activeConsumers: number;
|
|
285
|
+
totalB2BCompanies: number;
|
|
286
|
+
activeB2BContracts: number;
|
|
287
|
+
retentionRate: number;
|
|
288
|
+
}
|
|
289
|
+
export interface DashboardSlaKpiDto {
|
|
290
|
+
overallCompliance: number;
|
|
291
|
+
emergencyCompliance: number;
|
|
292
|
+
sameDayCompliance: number;
|
|
293
|
+
scheduledCompliance: number;
|
|
294
|
+
totalBreaches: number;
|
|
295
|
+
averageResponseTimeMinutes: number;
|
|
296
|
+
}
|
|
297
|
+
export interface DashboardQualityKpiDto {
|
|
298
|
+
averageRating: number;
|
|
299
|
+
openComplaints: number;
|
|
300
|
+
resolvedComplaints: number;
|
|
301
|
+
complaintResolutionRate: number;
|
|
302
|
+
pendingCallbacks: number;
|
|
303
|
+
redoJobs: number;
|
|
304
|
+
redoRate: number;
|
|
305
|
+
}
|
|
306
|
+
/** Job Analytics Response */
|
|
307
|
+
export interface JobAnalyticsDto {
|
|
308
|
+
periodStart: string;
|
|
309
|
+
periodEnd: string;
|
|
310
|
+
summary: JobAnalyticsSummaryDto;
|
|
311
|
+
byStatus: JobsByStatusItemDto[];
|
|
312
|
+
byCategory: JobsByCategoryItemDto[];
|
|
313
|
+
byUrgency: JobsByUrgencyItemDto[];
|
|
314
|
+
byArea: JobsByAreaItemDto[];
|
|
315
|
+
byDayOfWeek: JobsByDayItemDto[];
|
|
316
|
+
byHourOfDay: JobsByHourItemDto[];
|
|
317
|
+
timeSeries: JobTimeSeriesItemDto[];
|
|
318
|
+
comparison: JobComparisonDataDto;
|
|
319
|
+
generatedAt: string;
|
|
320
|
+
}
|
|
321
|
+
export interface JobAnalyticsSummaryDto {
|
|
322
|
+
totalJobs: number;
|
|
323
|
+
completedJobs: number;
|
|
324
|
+
cancelledJobs: number;
|
|
325
|
+
disputedJobs: number;
|
|
326
|
+
completionRate: number;
|
|
327
|
+
cancellationRate: number;
|
|
328
|
+
averageDurationMinutes: number;
|
|
329
|
+
averageResponseTimeMinutes: number;
|
|
330
|
+
averageRating: number;
|
|
331
|
+
totalRevenue: number;
|
|
332
|
+
averageJobValue: number;
|
|
333
|
+
}
|
|
334
|
+
export interface JobsByStatusItemDto {
|
|
335
|
+
status: string;
|
|
336
|
+
count: number;
|
|
337
|
+
percentage: number;
|
|
338
|
+
}
|
|
339
|
+
export interface JobsByCategoryItemDto {
|
|
340
|
+
categoryId: string;
|
|
341
|
+
categoryName: string;
|
|
342
|
+
count: number;
|
|
343
|
+
percentage: number;
|
|
344
|
+
revenue: number;
|
|
345
|
+
averageRating: number;
|
|
346
|
+
}
|
|
347
|
+
export interface JobsByUrgencyItemDto {
|
|
348
|
+
urgency: string;
|
|
349
|
+
count: number;
|
|
350
|
+
percentage: number;
|
|
351
|
+
averageResponseTimeMinutes: number;
|
|
352
|
+
}
|
|
353
|
+
export interface JobsByAreaItemDto {
|
|
354
|
+
area: string;
|
|
355
|
+
city: string;
|
|
356
|
+
state: string;
|
|
357
|
+
count: number;
|
|
358
|
+
percentage: number;
|
|
359
|
+
revenue: number;
|
|
360
|
+
}
|
|
361
|
+
export interface JobsByDayItemDto {
|
|
362
|
+
dayOfWeek: number;
|
|
363
|
+
dayName: string;
|
|
364
|
+
count: number;
|
|
365
|
+
percentage: number;
|
|
366
|
+
}
|
|
367
|
+
export interface JobsByHourItemDto {
|
|
368
|
+
hour: number;
|
|
369
|
+
count: number;
|
|
370
|
+
percentage: number;
|
|
371
|
+
}
|
|
372
|
+
export interface JobTimeSeriesItemDto {
|
|
373
|
+
date: string;
|
|
374
|
+
count: number;
|
|
375
|
+
completed: number;
|
|
376
|
+
cancelled: number;
|
|
377
|
+
revenue: number;
|
|
378
|
+
}
|
|
379
|
+
export interface JobComparisonDataDto {
|
|
380
|
+
totalJobsChange: number;
|
|
381
|
+
completedJobsChange: number;
|
|
382
|
+
revenueChange: number;
|
|
383
|
+
averageRatingChange: number;
|
|
384
|
+
cancellationRateChange: number;
|
|
385
|
+
}
|
|
386
|
+
/** Extended Artisan Analytics Response */
|
|
387
|
+
export interface ArtisanAnalyticsDetailDto {
|
|
388
|
+
periodStart: string;
|
|
389
|
+
periodEnd: string;
|
|
390
|
+
summary: ArtisanAnalyticsSummaryDto;
|
|
391
|
+
byStatus: ArtisansByStatusItemDto[];
|
|
392
|
+
byCategory: ArtisansByCategoryItemDto[];
|
|
393
|
+
byArea: ArtisansByAreaItemDto[];
|
|
394
|
+
byRating: ArtisansByRatingItemDto[];
|
|
395
|
+
topPerformers: TopArtisanItemDto[];
|
|
396
|
+
needingAttention: ArtisanAttentionItemDto[];
|
|
397
|
+
applicationPipeline: ApplicationPipelineDataDto;
|
|
398
|
+
timeSeries: ArtisanTimeSeriesItemDto[];
|
|
399
|
+
generatedAt: string;
|
|
400
|
+
}
|
|
401
|
+
export interface ArtisanAnalyticsSummaryDto {
|
|
402
|
+
totalRegistered: number;
|
|
403
|
+
totalActive: number;
|
|
404
|
+
availableNow: number;
|
|
405
|
+
onJob: number;
|
|
406
|
+
onProbation: number;
|
|
407
|
+
suspended: number;
|
|
408
|
+
pendingApplications: number;
|
|
409
|
+
newInPeriod: number;
|
|
410
|
+
leftInPeriod: number;
|
|
411
|
+
averageRating: number;
|
|
412
|
+
averageJobsPerArtisan: number;
|
|
413
|
+
averageEarningsPerArtisan: number;
|
|
414
|
+
utilizationRate: number;
|
|
415
|
+
}
|
|
416
|
+
export interface ArtisansByStatusItemDto {
|
|
417
|
+
status: string;
|
|
418
|
+
count: number;
|
|
419
|
+
percentage: number;
|
|
420
|
+
}
|
|
421
|
+
export interface ArtisansByCategoryItemDto {
|
|
422
|
+
categoryId: string;
|
|
423
|
+
categoryName: string;
|
|
424
|
+
count: number;
|
|
425
|
+
percentage: number;
|
|
426
|
+
averageRating: number;
|
|
427
|
+
totalJobs: number;
|
|
428
|
+
}
|
|
429
|
+
export interface ArtisansByAreaItemDto {
|
|
430
|
+
area: string;
|
|
431
|
+
city: string;
|
|
432
|
+
state: string;
|
|
433
|
+
count: number;
|
|
434
|
+
availableNow: number;
|
|
435
|
+
demandRatio: number;
|
|
436
|
+
}
|
|
437
|
+
export interface ArtisansByRatingItemDto {
|
|
438
|
+
ratingRange: string;
|
|
439
|
+
minRating: number;
|
|
440
|
+
maxRating: number;
|
|
441
|
+
count: number;
|
|
442
|
+
percentage: number;
|
|
443
|
+
}
|
|
444
|
+
export interface TopArtisanItemDto {
|
|
445
|
+
artisanId: string;
|
|
446
|
+
name: string;
|
|
447
|
+
primaryCategory: string;
|
|
448
|
+
jobsCompleted: number;
|
|
449
|
+
rating: number;
|
|
450
|
+
earnings: number;
|
|
451
|
+
rank: number;
|
|
452
|
+
}
|
|
453
|
+
export interface ArtisanAttentionItemDto {
|
|
454
|
+
artisanId: string;
|
|
455
|
+
name: string;
|
|
456
|
+
reason: string;
|
|
457
|
+
severity: string;
|
|
458
|
+
rating?: number;
|
|
459
|
+
complaints: number;
|
|
460
|
+
strikes: number;
|
|
461
|
+
}
|
|
462
|
+
export interface ApplicationPipelineDataDto {
|
|
463
|
+
documentsPending: number;
|
|
464
|
+
documentsReview: number;
|
|
465
|
+
guarantorVerification: number;
|
|
466
|
+
fieldVisitPending: number;
|
|
467
|
+
fieldVisitScheduled: number;
|
|
468
|
+
skillTestPending: number;
|
|
469
|
+
skillTestScheduled: number;
|
|
470
|
+
trainingPending: number;
|
|
471
|
+
trainingScheduled: number;
|
|
472
|
+
finalReview: number;
|
|
473
|
+
averageDaysToComplete: number;
|
|
474
|
+
approvalRate: number;
|
|
475
|
+
}
|
|
476
|
+
export interface ArtisanTimeSeriesItemDto {
|
|
477
|
+
date: string;
|
|
478
|
+
totalActive: number;
|
|
479
|
+
newRegistrations: number;
|
|
480
|
+
activations: number;
|
|
481
|
+
deactivations: number;
|
|
482
|
+
}
|
|
483
|
+
/** Customer Analytics Response */
|
|
484
|
+
export interface CustomerAnalyticsDetailDto {
|
|
485
|
+
periodStart: string;
|
|
486
|
+
periodEnd: string;
|
|
487
|
+
summary: CustomerAnalyticsSummaryDto;
|
|
488
|
+
byType: CustomersByTypeItemDto[];
|
|
489
|
+
byArea: CustomersByAreaItemDto[];
|
|
490
|
+
byJobFrequency: CustomersByFrequencyItemDto[];
|
|
491
|
+
bySpend: CustomersBySpendItemDto[];
|
|
492
|
+
topCustomers: TopCustomerItemDto[];
|
|
493
|
+
b2bAnalytics: B2BCustomerAnalyticsDataDto;
|
|
494
|
+
acquisition: CustomerAcquisitionDataDto;
|
|
495
|
+
retention: CustomerRetentionDataDto;
|
|
496
|
+
timeSeries: CustomerTimeSeriesItemDto[];
|
|
497
|
+
generatedAt: string;
|
|
498
|
+
}
|
|
499
|
+
export interface CustomerAnalyticsSummaryDto {
|
|
500
|
+
totalConsumers: number;
|
|
501
|
+
newInPeriod: number;
|
|
502
|
+
activeConsumers: number;
|
|
503
|
+
churnedInPeriod: number;
|
|
504
|
+
b2bConsumers: number;
|
|
505
|
+
individualConsumers: number;
|
|
506
|
+
averageJobsPerConsumer: number;
|
|
507
|
+
averageSpendPerConsumer: number;
|
|
508
|
+
customerLifetimeValue: number;
|
|
509
|
+
retentionRate: number;
|
|
510
|
+
churnRate: number;
|
|
511
|
+
npsScore?: number;
|
|
512
|
+
}
|
|
513
|
+
export interface CustomersByTypeItemDto {
|
|
514
|
+
type: string;
|
|
515
|
+
count: number;
|
|
516
|
+
percentage: number;
|
|
517
|
+
revenue: number;
|
|
518
|
+
averageSpend: number;
|
|
519
|
+
}
|
|
520
|
+
export interface CustomersByAreaItemDto {
|
|
521
|
+
area: string;
|
|
522
|
+
city: string;
|
|
523
|
+
state: string;
|
|
524
|
+
count: number;
|
|
525
|
+
percentage: number;
|
|
526
|
+
revenue: number;
|
|
527
|
+
}
|
|
528
|
+
export interface CustomersByFrequencyItemDto {
|
|
529
|
+
frequencyRange: string;
|
|
530
|
+
minJobs: number;
|
|
531
|
+
maxJobs?: number;
|
|
532
|
+
count: number;
|
|
533
|
+
percentage: number;
|
|
534
|
+
}
|
|
535
|
+
export interface CustomersBySpendItemDto {
|
|
536
|
+
spendRange: string;
|
|
537
|
+
minSpend: number;
|
|
538
|
+
maxSpend?: number;
|
|
539
|
+
count: number;
|
|
540
|
+
percentage: number;
|
|
541
|
+
totalRevenue: number;
|
|
542
|
+
}
|
|
543
|
+
export interface TopCustomerItemDto {
|
|
544
|
+
consumerId: string;
|
|
545
|
+
name: string;
|
|
546
|
+
type: string;
|
|
547
|
+
companyName?: string;
|
|
548
|
+
totalJobs: number;
|
|
549
|
+
totalSpend: number;
|
|
550
|
+
rank: number;
|
|
551
|
+
}
|
|
552
|
+
export interface B2BCustomerAnalyticsDataDto {
|
|
553
|
+
totalCompanies: number;
|
|
554
|
+
activeContracts: number;
|
|
555
|
+
contractsByType: ContractsByTypeItemDto[];
|
|
556
|
+
totalRevenue: number;
|
|
557
|
+
averageContractValue: number;
|
|
558
|
+
renewalRate: number;
|
|
559
|
+
upForRenewal: number;
|
|
560
|
+
}
|
|
561
|
+
export interface ContractsByTypeItemDto {
|
|
562
|
+
type: string;
|
|
563
|
+
count: number;
|
|
564
|
+
percentage: number;
|
|
565
|
+
revenue: number;
|
|
566
|
+
}
|
|
567
|
+
export interface CustomerAcquisitionDataDto {
|
|
568
|
+
newCustomers: number;
|
|
569
|
+
acquisitionCost: number;
|
|
570
|
+
costPerAcquisition: number;
|
|
571
|
+
conversionRate: number;
|
|
572
|
+
averageDaysToFirstJob: number;
|
|
573
|
+
bySource: AcquisitionBySourceItemDto[];
|
|
574
|
+
}
|
|
575
|
+
export interface AcquisitionBySourceItemDto {
|
|
576
|
+
source: string;
|
|
577
|
+
count: number;
|
|
578
|
+
percentage: number;
|
|
579
|
+
}
|
|
580
|
+
export interface CustomerRetentionDataDto {
|
|
581
|
+
retentionRate: number;
|
|
582
|
+
churnRate: number;
|
|
583
|
+
churnedCustomers: number;
|
|
584
|
+
repeatCustomerRate: number;
|
|
585
|
+
averageLifespanMonths: number;
|
|
586
|
+
atRiskCustomers: number;
|
|
587
|
+
byCohort: RetentionByCohortItemDto[];
|
|
588
|
+
}
|
|
589
|
+
export interface RetentionByCohortItemDto {
|
|
590
|
+
cohortMonth: string;
|
|
591
|
+
initialCustomers: number;
|
|
592
|
+
retainedCustomers: number;
|
|
593
|
+
retentionRate: number;
|
|
594
|
+
}
|
|
595
|
+
export interface CustomerTimeSeriesItemDto {
|
|
596
|
+
date: string;
|
|
597
|
+
totalCustomers: number;
|
|
598
|
+
newRegistrations: number;
|
|
599
|
+
activeCustomers: number;
|
|
600
|
+
churned: number;
|
|
601
|
+
}
|
|
602
|
+
/** Revenue Analytics Response */
|
|
603
|
+
export interface RevenueAnalyticsDto {
|
|
604
|
+
periodStart: string;
|
|
605
|
+
periodEnd: string;
|
|
606
|
+
summary: RevenueAnalyticsSummaryDto;
|
|
607
|
+
byCategory: RevenueByCategoryItemDto[];
|
|
608
|
+
byPaymentMethod: RevenueByPaymentMethodItemDto[];
|
|
609
|
+
byCustomerType: RevenueByCustomerTypeItemDto[];
|
|
610
|
+
byArea: RevenueByAreaItemDto[];
|
|
611
|
+
commission: CommissionAnalyticsDataDto;
|
|
612
|
+
payouts: PayoutAnalyticsDataDto;
|
|
613
|
+
outstanding: OutstandingPaymentsDataDto;
|
|
614
|
+
timeSeries: RevenueTimeSeriesItemDto[];
|
|
615
|
+
comparison: RevenueComparisonDataDto;
|
|
616
|
+
generatedAt: string;
|
|
617
|
+
}
|
|
618
|
+
export interface RevenueAnalyticsSummaryDto {
|
|
619
|
+
totalRevenue: number;
|
|
620
|
+
grossRevenue: number;
|
|
621
|
+
totalRefunds: number;
|
|
622
|
+
netRevenue: number;
|
|
623
|
+
totalCommission: number;
|
|
624
|
+
totalPayouts: number;
|
|
625
|
+
totalTransactions: number;
|
|
626
|
+
averageTransactionValue: number;
|
|
627
|
+
b2bRevenue: number;
|
|
628
|
+
consumerRevenue: number;
|
|
629
|
+
materialsRevenue: number;
|
|
630
|
+
laborRevenue: number;
|
|
631
|
+
serviceFeesRevenue: number;
|
|
632
|
+
tipsRevenue: number;
|
|
633
|
+
}
|
|
634
|
+
export interface RevenueByCategoryItemDto {
|
|
635
|
+
categoryId: string;
|
|
636
|
+
categoryName: string;
|
|
637
|
+
revenue: number;
|
|
638
|
+
percentage: number;
|
|
639
|
+
transactionCount: number;
|
|
640
|
+
averageTransactionValue: number;
|
|
641
|
+
}
|
|
642
|
+
export interface RevenueByPaymentMethodItemDto {
|
|
643
|
+
method: string;
|
|
644
|
+
revenue: number;
|
|
645
|
+
percentage: number;
|
|
646
|
+
transactionCount: number;
|
|
647
|
+
failedTransactions: number;
|
|
648
|
+
successRate: number;
|
|
649
|
+
}
|
|
650
|
+
export interface RevenueByCustomerTypeItemDto {
|
|
651
|
+
type: string;
|
|
652
|
+
revenue: number;
|
|
653
|
+
percentage: number;
|
|
654
|
+
transactionCount: number;
|
|
655
|
+
averageTransactionValue: number;
|
|
656
|
+
}
|
|
657
|
+
export interface RevenueByAreaItemDto {
|
|
658
|
+
area: string;
|
|
659
|
+
city: string;
|
|
660
|
+
state: string;
|
|
661
|
+
revenue: number;
|
|
662
|
+
percentage: number;
|
|
663
|
+
transactionCount: number;
|
|
664
|
+
}
|
|
665
|
+
export interface CommissionAnalyticsDataDto {
|
|
666
|
+
totalCommission: number;
|
|
667
|
+
averageCommissionRate: number;
|
|
668
|
+
byCategory: CommissionByCategoryItemDto[];
|
|
669
|
+
b2bCommission: number;
|
|
670
|
+
consumerCommission: number;
|
|
671
|
+
}
|
|
672
|
+
export interface CommissionByCategoryItemDto {
|
|
673
|
+
categoryName: string;
|
|
674
|
+
commission: number;
|
|
675
|
+
percentage: number;
|
|
676
|
+
}
|
|
677
|
+
export interface PayoutAnalyticsDataDto {
|
|
678
|
+
totalProcessed: number;
|
|
679
|
+
pendingAmount: number;
|
|
680
|
+
pendingCount: number;
|
|
681
|
+
failedAmount: number;
|
|
682
|
+
failedCount: number;
|
|
683
|
+
averagePayoutAmount: number;
|
|
684
|
+
averageDaysToPayout: number;
|
|
685
|
+
}
|
|
686
|
+
export interface OutstandingPaymentsDataDto {
|
|
687
|
+
totalOutstanding: number;
|
|
688
|
+
outstandingCount: number;
|
|
689
|
+
overdueAmount: number;
|
|
690
|
+
overdueCount: number;
|
|
691
|
+
aging: OutstandingAgingItemDto[];
|
|
692
|
+
}
|
|
693
|
+
export interface OutstandingAgingItemDto {
|
|
694
|
+
bucket: string;
|
|
695
|
+
amount: number;
|
|
696
|
+
count: number;
|
|
697
|
+
percentage: number;
|
|
698
|
+
}
|
|
699
|
+
export interface RevenueTimeSeriesItemDto {
|
|
700
|
+
date: string;
|
|
701
|
+
revenue: number;
|
|
702
|
+
commission: number;
|
|
703
|
+
payouts: number;
|
|
704
|
+
transactionCount: number;
|
|
705
|
+
}
|
|
706
|
+
export interface RevenueComparisonDataDto {
|
|
707
|
+
revenueChange: number;
|
|
708
|
+
commissionChange: number;
|
|
709
|
+
transactionCountChange: number;
|
|
710
|
+
averageTransactionValueChange: number;
|
|
711
|
+
b2bRevenueChange: number;
|
|
712
|
+
consumerRevenueChange: number;
|
|
713
|
+
}
|
|
714
|
+
/** SLA Analytics Response */
|
|
715
|
+
export interface SlaAnalyticsDto {
|
|
716
|
+
periodStart: string;
|
|
717
|
+
periodEnd: string;
|
|
718
|
+
summary: SlaAnalyticsSummaryDto;
|
|
719
|
+
byUrgency: SlaByUrgencyItemDto[];
|
|
720
|
+
byCategory: SlaByCategoryItemDto[];
|
|
721
|
+
byArea: SlaByAreaItemDto[];
|
|
722
|
+
b2bCompliance: SlaB2BComplianceItemDto[];
|
|
723
|
+
breachAnalysis: SlaBreachAnalysisDataDto;
|
|
724
|
+
responseTime: ResponseTimeAnalyticsDataDto;
|
|
725
|
+
timeSeries: SlaTimeSeriesItemDto[];
|
|
726
|
+
comparison: SlaComparisonDataDto;
|
|
727
|
+
generatedAt: string;
|
|
728
|
+
}
|
|
729
|
+
export interface SlaAnalyticsSummaryDto {
|
|
730
|
+
overallCompliance: number;
|
|
731
|
+
emergencyCompliance: number;
|
|
732
|
+
sameDayCompliance: number;
|
|
733
|
+
scheduledCompliance: number;
|
|
734
|
+
totalJobsMeasured: number;
|
|
735
|
+
jobsMeetingSla: number;
|
|
736
|
+
totalBreaches: number;
|
|
737
|
+
averageResponseTimeMinutes: number;
|
|
738
|
+
averageAssignmentTimeMinutes: number;
|
|
739
|
+
averageArrivalTimeMinutes: number;
|
|
740
|
+
}
|
|
741
|
+
export interface SlaByUrgencyItemDto {
|
|
742
|
+
urgency: string;
|
|
743
|
+
targetMinutes: number;
|
|
744
|
+
totalJobs: number;
|
|
745
|
+
metSla: number;
|
|
746
|
+
breaches: number;
|
|
747
|
+
compliance: number;
|
|
748
|
+
averageResponseTimeMinutes: number;
|
|
749
|
+
}
|
|
750
|
+
export interface SlaByCategoryItemDto {
|
|
751
|
+
categoryId: string;
|
|
752
|
+
categoryName: string;
|
|
753
|
+
totalJobs: number;
|
|
754
|
+
compliance: number;
|
|
755
|
+
breaches: number;
|
|
756
|
+
averageResponseTimeMinutes: number;
|
|
757
|
+
}
|
|
758
|
+
export interface SlaByAreaItemDto {
|
|
759
|
+
area: string;
|
|
760
|
+
city: string;
|
|
761
|
+
state: string;
|
|
762
|
+
totalJobs: number;
|
|
763
|
+
compliance: number;
|
|
764
|
+
breaches: number;
|
|
765
|
+
averageResponseTimeMinutes: number;
|
|
766
|
+
}
|
|
767
|
+
export interface SlaB2BComplianceItemDto {
|
|
768
|
+
companyId: string;
|
|
769
|
+
companyName: string;
|
|
770
|
+
contractType: string;
|
|
771
|
+
emergencySlaHours: number;
|
|
772
|
+
totalJobs: number;
|
|
773
|
+
overallCompliance: number;
|
|
774
|
+
emergencyCompliance: number;
|
|
775
|
+
routineCompliance: number;
|
|
776
|
+
totalBreaches: number;
|
|
777
|
+
}
|
|
778
|
+
export interface SlaBreachAnalysisDataDto {
|
|
779
|
+
totalBreaches: number;
|
|
780
|
+
byReason: BreachByReasonItemDto[];
|
|
781
|
+
byTimeOfDay: BreachByTimeItemDto[];
|
|
782
|
+
byDayOfWeek: BreachByDayItemDto[];
|
|
783
|
+
repeatBreachArtisans: RepeatBreachArtisanItemDto[];
|
|
784
|
+
}
|
|
785
|
+
export interface BreachByReasonItemDto {
|
|
786
|
+
reason: string;
|
|
787
|
+
count: number;
|
|
788
|
+
percentage: number;
|
|
789
|
+
}
|
|
790
|
+
export interface BreachByTimeItemDto {
|
|
791
|
+
hour: number;
|
|
792
|
+
count: number;
|
|
793
|
+
percentage: number;
|
|
794
|
+
}
|
|
795
|
+
export interface BreachByDayItemDto {
|
|
796
|
+
dayOfWeek: number;
|
|
797
|
+
dayName: string;
|
|
798
|
+
count: number;
|
|
799
|
+
percentage: number;
|
|
800
|
+
}
|
|
801
|
+
export interface RepeatBreachArtisanItemDto {
|
|
802
|
+
artisanId: string;
|
|
803
|
+
name: string;
|
|
804
|
+
breachCount: number;
|
|
805
|
+
totalJobs: number;
|
|
806
|
+
breachRate: number;
|
|
807
|
+
}
|
|
808
|
+
export interface ResponseTimeAnalyticsDataDto {
|
|
809
|
+
averageOverall: number;
|
|
810
|
+
median: number;
|
|
811
|
+
p90: number;
|
|
812
|
+
p95: number;
|
|
813
|
+
distribution: ResponseTimeDistributionItemDto[];
|
|
814
|
+
}
|
|
815
|
+
export interface ResponseTimeDistributionItemDto {
|
|
816
|
+
bucket: string;
|
|
817
|
+
count: number;
|
|
818
|
+
percentage: number;
|
|
819
|
+
}
|
|
820
|
+
export interface SlaTimeSeriesItemDto {
|
|
821
|
+
date: string;
|
|
822
|
+
overallCompliance: number;
|
|
823
|
+
totalJobs: number;
|
|
824
|
+
breaches: number;
|
|
825
|
+
averageResponseTimeMinutes: number;
|
|
826
|
+
}
|
|
827
|
+
export interface SlaComparisonDataDto {
|
|
828
|
+
overallComplianceChange: number;
|
|
829
|
+
emergencyComplianceChange: number;
|
|
830
|
+
breachCountChange: number;
|
|
831
|
+
averageResponseTimeChange: number;
|
|
832
|
+
}
|
|
833
|
+
/** Complaint Analytics Response */
|
|
834
|
+
export interface ComplaintAnalyticsDto {
|
|
835
|
+
periodStart: string;
|
|
836
|
+
periodEnd: string;
|
|
837
|
+
summary: ComplaintAnalyticsSummaryDto;
|
|
838
|
+
byType: ComplaintsByTypeItemDto[];
|
|
839
|
+
byStatus: ComplaintsByStatusItemDto[];
|
|
840
|
+
byPriority: ComplaintsByPriorityItemDto[];
|
|
841
|
+
byCategory: ComplaintsByCategoryItemDto[];
|
|
842
|
+
byResolution: ComplaintsByResolutionItemDto[];
|
|
843
|
+
resolutionPerformance: ResolutionPerformanceDataDto;
|
|
844
|
+
artisansWithMostComplaints: ArtisanComplaintItemDto[];
|
|
845
|
+
escalation: EscalationAnalyticsDataDto;
|
|
846
|
+
financialImpact: ComplaintFinancialImpactDataDto;
|
|
847
|
+
timeSeries: ComplaintTimeSeriesItemDto[];
|
|
848
|
+
comparison: ComplaintComparisonDataDto;
|
|
849
|
+
generatedAt: string;
|
|
850
|
+
}
|
|
851
|
+
export interface ComplaintAnalyticsSummaryDto {
|
|
852
|
+
totalComplaints: number;
|
|
853
|
+
openComplaints: number;
|
|
854
|
+
resolvedComplaints: number;
|
|
855
|
+
escalatedComplaints: number;
|
|
856
|
+
resolutionRate: number;
|
|
857
|
+
averageResolutionTimeHours: number;
|
|
858
|
+
complaintRate: number;
|
|
859
|
+
postResolutionSatisfaction?: number;
|
|
860
|
+
firstContactResolutionRate: number;
|
|
861
|
+
}
|
|
862
|
+
export interface ComplaintsByTypeItemDto {
|
|
863
|
+
type: string;
|
|
864
|
+
count: number;
|
|
865
|
+
percentage: number;
|
|
866
|
+
averageResolutionTimeHours: number;
|
|
867
|
+
}
|
|
868
|
+
export interface ComplaintsByStatusItemDto {
|
|
869
|
+
status: string;
|
|
870
|
+
count: number;
|
|
871
|
+
percentage: number;
|
|
872
|
+
}
|
|
873
|
+
export interface ComplaintsByPriorityItemDto {
|
|
874
|
+
priority: string;
|
|
875
|
+
count: number;
|
|
876
|
+
percentage: number;
|
|
877
|
+
averageResolutionTimeHours: number;
|
|
878
|
+
}
|
|
879
|
+
export interface ComplaintsByCategoryItemDto {
|
|
880
|
+
categoryId: string;
|
|
881
|
+
categoryName: string;
|
|
882
|
+
count: number;
|
|
883
|
+
percentage: number;
|
|
884
|
+
complaintRate: number;
|
|
885
|
+
}
|
|
886
|
+
export interface ComplaintsByResolutionItemDto {
|
|
887
|
+
resolutionType: string;
|
|
888
|
+
count: number;
|
|
889
|
+
percentage: number;
|
|
890
|
+
totalCost: number;
|
|
891
|
+
}
|
|
892
|
+
export interface ResolutionPerformanceDataDto {
|
|
893
|
+
averageResolutionTimeHours: number;
|
|
894
|
+
medianResolutionTimeHours: number;
|
|
895
|
+
firstContactResolutionRate: number;
|
|
896
|
+
byPriority: ResolutionTimeByPriorityItemDto[];
|
|
897
|
+
byAssignee: ResolutionByAssigneeItemDto[];
|
|
898
|
+
}
|
|
899
|
+
export interface ResolutionTimeByPriorityItemDto {
|
|
900
|
+
priority: string;
|
|
901
|
+
targetHours: number;
|
|
902
|
+
averageActualHours: number;
|
|
903
|
+
withinTargetRate: number;
|
|
904
|
+
}
|
|
905
|
+
export interface ResolutionByAssigneeItemDto {
|
|
906
|
+
assigneeId: string;
|
|
907
|
+
assigneeName: string;
|
|
908
|
+
totalHandled: number;
|
|
909
|
+
resolved: number;
|
|
910
|
+
averageResolutionTimeHours: number;
|
|
911
|
+
customerSatisfaction?: number;
|
|
912
|
+
}
|
|
913
|
+
export interface ArtisanComplaintItemDto {
|
|
914
|
+
artisanId: string;
|
|
915
|
+
name: string;
|
|
916
|
+
complaintCount: number;
|
|
917
|
+
totalJobs: number;
|
|
918
|
+
complaintRate: number;
|
|
919
|
+
mostCommonType: string;
|
|
920
|
+
}
|
|
921
|
+
export interface EscalationAnalyticsDataDto {
|
|
922
|
+
totalEscalations: number;
|
|
923
|
+
escalationRate: number;
|
|
924
|
+
byLevel: EscalationByLevelItemDto[];
|
|
925
|
+
averageTimeToEscalationHours: number;
|
|
926
|
+
postEscalationResolutionRate: number;
|
|
927
|
+
}
|
|
928
|
+
export interface EscalationByLevelItemDto {
|
|
929
|
+
level: number;
|
|
930
|
+
count: number;
|
|
931
|
+
percentage: number;
|
|
932
|
+
}
|
|
933
|
+
export interface ComplaintFinancialImpactDataDto {
|
|
934
|
+
totalRefunds: number;
|
|
935
|
+
refundCount: number;
|
|
936
|
+
totalRedoCosts: number;
|
|
937
|
+
redoCount: number;
|
|
938
|
+
totalCompensation: number;
|
|
939
|
+
totalImpact: number;
|
|
940
|
+
averageRefundAmount: number;
|
|
941
|
+
}
|
|
942
|
+
export interface ComplaintTimeSeriesItemDto {
|
|
943
|
+
date: string;
|
|
944
|
+
newComplaints: number;
|
|
945
|
+
resolved: number;
|
|
946
|
+
openAtEndOfDay: number;
|
|
947
|
+
escalated: number;
|
|
948
|
+
}
|
|
949
|
+
export interface ComplaintComparisonDataDto {
|
|
950
|
+
totalComplaintsChange: number;
|
|
951
|
+
resolutionRateChange: number;
|
|
952
|
+
averageResolutionTimeChange: number;
|
|
953
|
+
escalationRateChange: number;
|
|
954
|
+
financialImpactChange: number;
|
|
955
|
+
}
|
|
956
|
+
/** Report generation request */
|
|
957
|
+
export interface ReportGenerationRequestDto {
|
|
958
|
+
periodStart: string;
|
|
959
|
+
periodEnd: string;
|
|
960
|
+
granularity?: string;
|
|
961
|
+
includeComparison?: boolean;
|
|
962
|
+
filters?: ReportFiltersDto;
|
|
963
|
+
exportFormat?: string;
|
|
964
|
+
}
|
|
965
|
+
export interface ReportFiltersDto {
|
|
966
|
+
categoryIds?: string[];
|
|
967
|
+
areas?: string[];
|
|
968
|
+
cities?: string[];
|
|
969
|
+
states?: string[];
|
|
970
|
+
artisanIds?: string[];
|
|
971
|
+
companyIds?: string[];
|
|
972
|
+
b2bOnly?: boolean;
|
|
973
|
+
consumerOnly?: boolean;
|
|
974
|
+
urgencyLevels?: string[];
|
|
975
|
+
paymentMethods?: string[];
|
|
976
|
+
}
|
|
977
|
+
/** Report generation response */
|
|
978
|
+
export interface ReportGenerationResponseDto {
|
|
979
|
+
id: string;
|
|
980
|
+
reportType: string;
|
|
981
|
+
title: string;
|
|
982
|
+
periodStart: string;
|
|
983
|
+
periodEnd: string;
|
|
984
|
+
status: string;
|
|
985
|
+
generatedAt?: string;
|
|
986
|
+
downloadUrl?: string;
|
|
987
|
+
exportFormat?: string;
|
|
988
|
+
fileSizeBytes?: number;
|
|
989
|
+
expiresAt?: string;
|
|
990
|
+
filters?: AppliedFiltersDto;
|
|
991
|
+
metadata: ReportMetadataDto;
|
|
992
|
+
}
|
|
993
|
+
export interface AppliedFiltersDto {
|
|
994
|
+
categories?: string[];
|
|
995
|
+
areas?: string[];
|
|
996
|
+
cities?: string[];
|
|
997
|
+
states?: string[];
|
|
998
|
+
b2bOnly?: boolean;
|
|
999
|
+
companies?: string[];
|
|
1000
|
+
granularity?: string;
|
|
1001
|
+
}
|
|
1002
|
+
export interface ReportMetadataDto {
|
|
1003
|
+
totalRecords: number;
|
|
1004
|
+
dataPoints: number;
|
|
1005
|
+
generationTimeMs: number;
|
|
1006
|
+
version: string;
|
|
1007
|
+
}
|
|
1008
|
+
/** Report list request */
|
|
1009
|
+
export interface ReportListRequestDto {
|
|
1010
|
+
page?: number;
|
|
1011
|
+
pageSize?: number;
|
|
1012
|
+
reportType?: string;
|
|
1013
|
+
status?: string;
|
|
1014
|
+
generatedById?: string;
|
|
1015
|
+
dateFrom?: string;
|
|
1016
|
+
dateTo?: string;
|
|
1017
|
+
searchTerm?: string;
|
|
1018
|
+
}
|
|
1019
|
+
/** Report list response */
|
|
1020
|
+
export interface ReportListResponseDto {
|
|
1021
|
+
items: ReportListItemDto[];
|
|
1022
|
+
totalCount: number;
|
|
1023
|
+
page: number;
|
|
1024
|
+
pageSize: number;
|
|
1025
|
+
totalPages: number;
|
|
1026
|
+
}
|
|
1027
|
+
export interface ReportListItemDto {
|
|
1028
|
+
id: string;
|
|
1029
|
+
reportType: string;
|
|
1030
|
+
title: string;
|
|
1031
|
+
periodStart: string;
|
|
1032
|
+
periodEnd: string;
|
|
1033
|
+
status: string;
|
|
1034
|
+
generatedAt?: string;
|
|
1035
|
+
generatedBy: string;
|
|
1036
|
+
exportFormat?: string;
|
|
1037
|
+
downloadAvailable: boolean;
|
|
1038
|
+
}
|
|
1039
|
+
/** Report detail response */
|
|
1040
|
+
export interface ReportDetailResponseDto {
|
|
1041
|
+
id: string;
|
|
1042
|
+
reportType: string;
|
|
1043
|
+
title: string;
|
|
1044
|
+
periodStart: string;
|
|
1045
|
+
periodEnd: string;
|
|
1046
|
+
status: string;
|
|
1047
|
+
generatedAt?: string;
|
|
1048
|
+
generatedBy?: string;
|
|
1049
|
+
downloadUrl?: string;
|
|
1050
|
+
exportFormat?: string;
|
|
1051
|
+
fileSizeBytes?: number;
|
|
1052
|
+
expiresAt?: string;
|
|
1053
|
+
filters?: AppliedFiltersDto;
|
|
1054
|
+
metadata: ReportMetadataDto;
|
|
1055
|
+
errorMessage?: string;
|
|
1056
|
+
createdAt: string;
|
|
1057
|
+
updatedAt?: string;
|
|
1058
|
+
}
|
|
1059
|
+
/** Report export request */
|
|
1060
|
+
export interface ReportExportRequestDto {
|
|
1061
|
+
format: string;
|
|
1062
|
+
includeCharts?: boolean;
|
|
1063
|
+
}
|
|
1064
|
+
/** Report export response */
|
|
1065
|
+
export interface ReportExportResponseDto {
|
|
1066
|
+
id: string;
|
|
1067
|
+
downloadUrl: string;
|
|
1068
|
+
fileName: string;
|
|
1069
|
+
fileSizeBytes: number;
|
|
1070
|
+
contentType: string;
|
|
1071
|
+
expiresAt: string;
|
|
1072
|
+
}
|
|
1073
|
+
/** Scheduled report list request */
|
|
1074
|
+
export interface ScheduledReportListRequestDto {
|
|
1075
|
+
page?: number;
|
|
1076
|
+
pageSize?: number;
|
|
1077
|
+
reportType?: string;
|
|
1078
|
+
isActive?: boolean;
|
|
1079
|
+
createdById?: string;
|
|
1080
|
+
}
|
|
1081
|
+
/** Scheduled report list response */
|
|
1082
|
+
export interface ScheduledReportListResponseDto {
|
|
1083
|
+
items: ScheduledReportListItemDto[];
|
|
1084
|
+
totalCount: number;
|
|
1085
|
+
page: number;
|
|
1086
|
+
pageSize: number;
|
|
1087
|
+
totalPages: number;
|
|
1088
|
+
}
|
|
1089
|
+
export interface ScheduledReportListItemDto {
|
|
1090
|
+
id: string;
|
|
1091
|
+
name: string;
|
|
1092
|
+
reportType: string;
|
|
1093
|
+
frequency: string;
|
|
1094
|
+
nextRunAt: string;
|
|
1095
|
+
lastRunAt?: string;
|
|
1096
|
+
lastRunStatus?: string;
|
|
1097
|
+
isActive: boolean;
|
|
1098
|
+
createdAt: string;
|
|
1099
|
+
}
|
|
1100
|
+
/** Scheduled report detail response */
|
|
1101
|
+
export interface ScheduledReportDetailResponseDto {
|
|
1102
|
+
id: string;
|
|
1103
|
+
name: string;
|
|
1104
|
+
reportType: string;
|
|
1105
|
+
frequency: string;
|
|
1106
|
+
dayOfWeek?: number;
|
|
1107
|
+
dayOfMonth?: number;
|
|
1108
|
+
sendTime: string;
|
|
1109
|
+
recipients: string[];
|
|
1110
|
+
format: string;
|
|
1111
|
+
filters?: ReportFiltersDto;
|
|
1112
|
+
nextRunAt: string;
|
|
1113
|
+
lastRunAt?: string;
|
|
1114
|
+
lastRunStatus?: string;
|
|
1115
|
+
isActive: boolean;
|
|
1116
|
+
createdAt: string;
|
|
1117
|
+
createdBy: string;
|
|
1118
|
+
updatedAt?: string;
|
|
1119
|
+
}
|
|
1120
|
+
/** Create scheduled report request */
|
|
1121
|
+
export interface CreateScheduledReportDto {
|
|
1122
|
+
name: string;
|
|
1123
|
+
reportType: string;
|
|
1124
|
+
frequency: string;
|
|
1125
|
+
dayOfWeek?: number;
|
|
1126
|
+
dayOfMonth?: number;
|
|
1127
|
+
sendTime: string;
|
|
1128
|
+
recipients: string[];
|
|
1129
|
+
format: string;
|
|
1130
|
+
filters?: ReportFiltersDto;
|
|
1131
|
+
isActive?: boolean;
|
|
1132
|
+
}
|
|
1133
|
+
/** Update scheduled report request */
|
|
1134
|
+
export interface UpdateScheduledReportDto {
|
|
1135
|
+
name?: string;
|
|
1136
|
+
frequency?: string;
|
|
1137
|
+
dayOfWeek?: number;
|
|
1138
|
+
dayOfMonth?: number;
|
|
1139
|
+
sendTime?: string;
|
|
1140
|
+
recipients?: string[];
|
|
1141
|
+
format?: string;
|
|
1142
|
+
filters?: ReportFiltersDto;
|
|
1143
|
+
isActive?: boolean;
|
|
1144
|
+
}
|
|
1145
|
+
/** Available report types response */
|
|
1146
|
+
export interface AvailableReportTypesResponseDto {
|
|
1147
|
+
reportTypes: ReportTypeInfoDto[];
|
|
1148
|
+
}
|
|
1149
|
+
export interface ReportTypeInfoDto {
|
|
1150
|
+
key: string;
|
|
1151
|
+
displayName: string;
|
|
1152
|
+
description: string;
|
|
1153
|
+
category: string;
|
|
1154
|
+
supportedFormats: string[];
|
|
1155
|
+
availableFilters: string[];
|
|
1156
|
+
supportsScheduling: boolean;
|
|
1157
|
+
}
|
|
1158
|
+
/** Admin user list request */
|
|
1159
|
+
export interface AdminUserListRequestDto {
|
|
1160
|
+
page?: number;
|
|
1161
|
+
pageSize?: number;
|
|
1162
|
+
roleId?: string;
|
|
1163
|
+
isActive?: boolean;
|
|
1164
|
+
searchTerm?: string;
|
|
1165
|
+
}
|
|
1166
|
+
/** Admin user list response */
|
|
1167
|
+
export interface AdminUserListResponseDto {
|
|
1168
|
+
items: AdminUserListItemDto[];
|
|
1169
|
+
totalCount: number;
|
|
1170
|
+
page: number;
|
|
1171
|
+
pageSize: number;
|
|
1172
|
+
totalPages: number;
|
|
1173
|
+
}
|
|
1174
|
+
export interface AdminUserListItemDto {
|
|
1175
|
+
id: string;
|
|
1176
|
+
firstName: string;
|
|
1177
|
+
lastName: string;
|
|
1178
|
+
email: string;
|
|
1179
|
+
phoneNumber: string;
|
|
1180
|
+
roleName: string;
|
|
1181
|
+
roleId: string;
|
|
1182
|
+
isActive: boolean;
|
|
1183
|
+
lastLoginAt?: string;
|
|
1184
|
+
createdAt: string;
|
|
1185
|
+
}
|
|
1186
|
+
/** Admin user detail response */
|
|
1187
|
+
export interface AdminUserDetailResponseDto {
|
|
1188
|
+
id: string;
|
|
1189
|
+
firstName: string;
|
|
1190
|
+
lastName: string;
|
|
1191
|
+
middleName?: string;
|
|
1192
|
+
email: string;
|
|
1193
|
+
phoneNumber: string;
|
|
1194
|
+
profileImageUrl?: string;
|
|
1195
|
+
roleId: string;
|
|
1196
|
+
roleName: string;
|
|
1197
|
+
isActive: boolean;
|
|
1198
|
+
isPhoneVerified: boolean;
|
|
1199
|
+
lastLoginAt?: string;
|
|
1200
|
+
lastLoginIp?: string;
|
|
1201
|
+
createdAt: string;
|
|
1202
|
+
updatedAt?: string;
|
|
1203
|
+
}
|
|
1204
|
+
/** Create admin user request */
|
|
1205
|
+
export interface CreateAdminUserDto {
|
|
1206
|
+
firstName: string;
|
|
1207
|
+
lastName: string;
|
|
1208
|
+
middleName?: string;
|
|
1209
|
+
email: string;
|
|
1210
|
+
phoneNumber: string;
|
|
1211
|
+
roleId: string;
|
|
1212
|
+
temporaryPassword?: string;
|
|
1213
|
+
}
|
|
1214
|
+
/** Update admin user request */
|
|
1215
|
+
export interface UpdateAdminUserDto {
|
|
1216
|
+
firstName?: string;
|
|
1217
|
+
lastName?: string;
|
|
1218
|
+
middleName?: string;
|
|
1219
|
+
email?: string;
|
|
1220
|
+
phoneNumber?: string;
|
|
1221
|
+
profileImageUrl?: string;
|
|
1222
|
+
isActive?: boolean;
|
|
1223
|
+
}
|
|
1224
|
+
/** Deactivate admin user request */
|
|
1225
|
+
export interface DeactivateAdminUserDto {
|
|
1226
|
+
reason?: string;
|
|
1227
|
+
}
|
|
1228
|
+
/** Update admin roles request */
|
|
1229
|
+
export interface UpdateAdminRolesDto {
|
|
1230
|
+
roleId: string;
|
|
1231
|
+
}
|
|
1232
|
+
/** Service area list request */
|
|
1233
|
+
export interface ServiceAreaListRequestDto {
|
|
1234
|
+
page?: number;
|
|
1235
|
+
pageSize?: number;
|
|
1236
|
+
state?: string;
|
|
1237
|
+
city?: string;
|
|
1238
|
+
isActive?: boolean;
|
|
1239
|
+
searchTerm?: string;
|
|
1240
|
+
}
|
|
1241
|
+
/** Service area list response */
|
|
1242
|
+
export interface ServiceAreaListResponseDto {
|
|
1243
|
+
items: ServiceAreaListItemDto[];
|
|
1244
|
+
totalCount: number;
|
|
1245
|
+
page: number;
|
|
1246
|
+
pageSize: number;
|
|
1247
|
+
totalPages: number;
|
|
1248
|
+
}
|
|
1249
|
+
export interface ServiceAreaListItemDto {
|
|
1250
|
+
id: string;
|
|
1251
|
+
name: string;
|
|
1252
|
+
state: string;
|
|
1253
|
+
city: string;
|
|
1254
|
+
lga?: string;
|
|
1255
|
+
isActive: boolean;
|
|
1256
|
+
artisanCount: number;
|
|
1257
|
+
jobCount: number;
|
|
1258
|
+
createdAt: string;
|
|
1259
|
+
}
|
|
1260
|
+
/** Service area detail response */
|
|
1261
|
+
export interface ServiceAreaDetailResponseDto {
|
|
1262
|
+
id: string;
|
|
1263
|
+
name: string;
|
|
1264
|
+
state: string;
|
|
1265
|
+
city: string;
|
|
1266
|
+
lga?: string;
|
|
1267
|
+
latitude?: number;
|
|
1268
|
+
longitude?: number;
|
|
1269
|
+
radiusKm?: number;
|
|
1270
|
+
isActive: boolean;
|
|
1271
|
+
artisanCount: number;
|
|
1272
|
+
jobCount: number;
|
|
1273
|
+
createdAt: string;
|
|
1274
|
+
updatedAt?: string;
|
|
1275
|
+
}
|
|
1276
|
+
/** Create service area request */
|
|
1277
|
+
export interface CreateServiceAreaDto {
|
|
1278
|
+
name: string;
|
|
1279
|
+
state: string;
|
|
1280
|
+
city: string;
|
|
1281
|
+
lga?: string;
|
|
1282
|
+
latitude?: number;
|
|
1283
|
+
longitude?: number;
|
|
1284
|
+
radiusKm?: number;
|
|
1285
|
+
isActive?: boolean;
|
|
1286
|
+
}
|
|
1287
|
+
/** Update service area request */
|
|
1288
|
+
export interface UpdateServiceAreaDto {
|
|
1289
|
+
name?: string;
|
|
1290
|
+
state?: string;
|
|
1291
|
+
city?: string;
|
|
1292
|
+
lga?: string;
|
|
1293
|
+
latitude?: number;
|
|
1294
|
+
longitude?: number;
|
|
1295
|
+
radiusKm?: number;
|
|
1296
|
+
isActive?: boolean;
|
|
1297
|
+
}
|
|
1298
|
+
/** Pricing configuration response */
|
|
1299
|
+
export interface PricingConfigResponseDto {
|
|
1300
|
+
serviceFeePercentage: number;
|
|
1301
|
+
minimumServiceFee: number;
|
|
1302
|
+
emergencyMultiplier: number;
|
|
1303
|
+
sameDayMultiplier: number;
|
|
1304
|
+
scheduledMultiplier: number;
|
|
1305
|
+
b2bDiscountPercentage: number;
|
|
1306
|
+
categoryPricing: CategoryPricingItemDto[];
|
|
1307
|
+
lastUpdatedAt: string;
|
|
1308
|
+
lastUpdatedBy?: string;
|
|
1309
|
+
}
|
|
1310
|
+
export interface CategoryPricingItemDto {
|
|
1311
|
+
categoryId: string;
|
|
1312
|
+
categoryName: string;
|
|
1313
|
+
basePrice: number;
|
|
1314
|
+
emergencyMultiplier: number;
|
|
1315
|
+
minimumCharge: number;
|
|
1316
|
+
}
|
|
1317
|
+
/** Update pricing configuration request */
|
|
1318
|
+
export interface UpdatePricingConfigDto {
|
|
1319
|
+
serviceFeePercentage?: number;
|
|
1320
|
+
minimumServiceFee?: number;
|
|
1321
|
+
emergencyMultiplier?: number;
|
|
1322
|
+
sameDayMultiplier?: number;
|
|
1323
|
+
scheduledMultiplier?: number;
|
|
1324
|
+
b2bDiscountPercentage?: number;
|
|
1325
|
+
categoryPricing?: UpdateCategoryPricingItemDto[];
|
|
1326
|
+
}
|
|
1327
|
+
export interface UpdateCategoryPricingItemDto {
|
|
1328
|
+
categoryId: string;
|
|
1329
|
+
basePrice?: number;
|
|
1330
|
+
emergencyMultiplier?: number;
|
|
1331
|
+
minimumCharge?: number;
|
|
1332
|
+
}
|
|
1333
|
+
/** Commission configuration response */
|
|
1334
|
+
export interface CommissionConfigResponseDto {
|
|
1335
|
+
defaultCommissionPercentage: number;
|
|
1336
|
+
b2bCommissionPercentage: number;
|
|
1337
|
+
consumerCommissionPercentage: number;
|
|
1338
|
+
categoryCommissions: CategoryCommissionItemDto[];
|
|
1339
|
+
tierCommissions: TierCommissionItemDto[];
|
|
1340
|
+
lastUpdatedAt: string;
|
|
1341
|
+
lastUpdatedBy?: string;
|
|
1342
|
+
}
|
|
1343
|
+
export interface CategoryCommissionItemDto {
|
|
1344
|
+
categoryId: string;
|
|
1345
|
+
categoryName: string;
|
|
1346
|
+
commissionPercentage: number;
|
|
1347
|
+
}
|
|
1348
|
+
export interface TierCommissionItemDto {
|
|
1349
|
+
tierName: string;
|
|
1350
|
+
minJobs: number;
|
|
1351
|
+
maxJobs?: number;
|
|
1352
|
+
commissionPercentage: number;
|
|
1353
|
+
}
|
|
1354
|
+
/** Update commission configuration request */
|
|
1355
|
+
export interface UpdateCommissionConfigDto {
|
|
1356
|
+
defaultCommissionPercentage?: number;
|
|
1357
|
+
b2bCommissionPercentage?: number;
|
|
1358
|
+
consumerCommissionPercentage?: number;
|
|
1359
|
+
categoryCommissions?: UpdateCategoryCommissionItemDto[];
|
|
1360
|
+
tierCommissions?: UpdateTierCommissionItemDto[];
|
|
1361
|
+
}
|
|
1362
|
+
export interface UpdateCategoryCommissionItemDto {
|
|
1363
|
+
categoryId: string;
|
|
1364
|
+
commissionPercentage: number;
|
|
1365
|
+
}
|
|
1366
|
+
export interface UpdateTierCommissionItemDto {
|
|
1367
|
+
tierName: string;
|
|
1368
|
+
minJobs: number;
|
|
1369
|
+
maxJobs?: number;
|
|
1370
|
+
commissionPercentage: number;
|
|
1371
|
+
}
|
|
1372
|
+
/** System settings response */
|
|
1373
|
+
export interface SystemSettingsResponseDto {
|
|
1374
|
+
general: GeneralSettingsDataDto;
|
|
1375
|
+
jobs: JobSettingsDataDto;
|
|
1376
|
+
notifications: NotificationSettingsDataDto;
|
|
1377
|
+
security: SecuritySettingsDataDto;
|
|
1378
|
+
lastUpdatedAt: string;
|
|
1379
|
+
lastUpdatedBy?: string;
|
|
1380
|
+
}
|
|
1381
|
+
export interface GeneralSettingsDataDto {
|
|
1382
|
+
platformName: string;
|
|
1383
|
+
supportEmail: string;
|
|
1384
|
+
supportPhone: string;
|
|
1385
|
+
defaultCurrency: string;
|
|
1386
|
+
defaultTimezone: string;
|
|
1387
|
+
defaultLanguage: string;
|
|
1388
|
+
maintenanceMode: boolean;
|
|
1389
|
+
maintenanceMessage?: string;
|
|
1390
|
+
}
|
|
1391
|
+
export interface JobSettingsDataDto {
|
|
1392
|
+
maxJobDurationHours: number;
|
|
1393
|
+
maxQuoteValidityHours: number;
|
|
1394
|
+
jobAutoCloseHours: number;
|
|
1395
|
+
emergencySlaMinutes: number;
|
|
1396
|
+
sameDaySlaMinutes: number;
|
|
1397
|
+
scheduledSlaMinutes: number;
|
|
1398
|
+
requireQuoteApproval: boolean;
|
|
1399
|
+
allowCashPayment: boolean;
|
|
1400
|
+
allowTips: boolean;
|
|
1401
|
+
}
|
|
1402
|
+
export interface NotificationSettingsDataDto {
|
|
1403
|
+
enableSms: boolean;
|
|
1404
|
+
enableEmail: boolean;
|
|
1405
|
+
enablePush: boolean;
|
|
1406
|
+
enableInApp: boolean;
|
|
1407
|
+
reminderBeforeJobMinutes: number;
|
|
1408
|
+
reminderBeforeQuoteExpiryHours: number;
|
|
1409
|
+
}
|
|
1410
|
+
export interface SecuritySettingsDataDto {
|
|
1411
|
+
otpExpiryMinutes: number;
|
|
1412
|
+
maxOtpAttempts: number;
|
|
1413
|
+
sessionTimeoutMinutes: number;
|
|
1414
|
+
maxConcurrentSessions: number;
|
|
1415
|
+
requirePhoneVerification: boolean;
|
|
1416
|
+
requireEmailVerification: boolean;
|
|
1417
|
+
passwordMinLength: number;
|
|
1418
|
+
passwordRequireSpecialChars: boolean;
|
|
1419
|
+
}
|
|
1420
|
+
/** Update system settings request */
|
|
1421
|
+
export interface UpdateSystemSettingsDto {
|
|
1422
|
+
general?: UpdateGeneralSettingsDataDto;
|
|
1423
|
+
jobs?: UpdateJobSettingsDataDto;
|
|
1424
|
+
notifications?: UpdateNotificationSettingsDataDto;
|
|
1425
|
+
security?: UpdateSecuritySettingsDataDto;
|
|
1426
|
+
}
|
|
1427
|
+
export interface UpdateGeneralSettingsDataDto {
|
|
1428
|
+
platformName?: string;
|
|
1429
|
+
supportEmail?: string;
|
|
1430
|
+
supportPhone?: string;
|
|
1431
|
+
defaultCurrency?: string;
|
|
1432
|
+
defaultTimezone?: string;
|
|
1433
|
+
defaultLanguage?: string;
|
|
1434
|
+
maintenanceMode?: boolean;
|
|
1435
|
+
maintenanceMessage?: string;
|
|
1436
|
+
}
|
|
1437
|
+
export interface UpdateJobSettingsDataDto {
|
|
1438
|
+
maxJobDurationHours?: number;
|
|
1439
|
+
maxQuoteValidityHours?: number;
|
|
1440
|
+
jobAutoCloseHours?: number;
|
|
1441
|
+
emergencySlaMinutes?: number;
|
|
1442
|
+
sameDaySlaMinutes?: number;
|
|
1443
|
+
scheduledSlaMinutes?: number;
|
|
1444
|
+
requireQuoteApproval?: boolean;
|
|
1445
|
+
allowCashPayment?: boolean;
|
|
1446
|
+
allowTips?: boolean;
|
|
1447
|
+
}
|
|
1448
|
+
export interface UpdateNotificationSettingsDataDto {
|
|
1449
|
+
enableSms?: boolean;
|
|
1450
|
+
enableEmail?: boolean;
|
|
1451
|
+
enablePush?: boolean;
|
|
1452
|
+
enableInApp?: boolean;
|
|
1453
|
+
reminderBeforeJobMinutes?: number;
|
|
1454
|
+
reminderBeforeQuoteExpiryHours?: number;
|
|
1455
|
+
}
|
|
1456
|
+
export interface UpdateSecuritySettingsDataDto {
|
|
1457
|
+
otpExpiryMinutes?: number;
|
|
1458
|
+
maxOtpAttempts?: number;
|
|
1459
|
+
sessionTimeoutMinutes?: number;
|
|
1460
|
+
maxConcurrentSessions?: number;
|
|
1461
|
+
requirePhoneVerification?: boolean;
|
|
1462
|
+
requireEmailVerification?: boolean;
|
|
1463
|
+
passwordMinLength?: number;
|
|
1464
|
+
passwordRequireSpecialChars?: boolean;
|
|
1465
|
+
}
|
|
1466
|
+
/** Activity log list request */
|
|
1467
|
+
export interface ActivityLogListRequestDto {
|
|
1468
|
+
page?: number;
|
|
1469
|
+
pageSize?: number;
|
|
1470
|
+
userId?: string;
|
|
1471
|
+
action?: string;
|
|
1472
|
+
entityType?: string;
|
|
1473
|
+
entityId?: string;
|
|
1474
|
+
dateFrom?: string;
|
|
1475
|
+
dateTo?: string;
|
|
1476
|
+
searchTerm?: string;
|
|
1477
|
+
}
|
|
1478
|
+
/** Activity log list response */
|
|
1479
|
+
export interface ActivityLogListResponseDto {
|
|
1480
|
+
items: ActivityLogListItemDto[];
|
|
1481
|
+
totalCount: number;
|
|
1482
|
+
page: number;
|
|
1483
|
+
pageSize: number;
|
|
1484
|
+
totalPages: number;
|
|
1485
|
+
}
|
|
1486
|
+
export interface ActivityLogListItemDto {
|
|
1487
|
+
id: string;
|
|
1488
|
+
action: string;
|
|
1489
|
+
entityType?: string;
|
|
1490
|
+
entityId?: string;
|
|
1491
|
+
userId?: string;
|
|
1492
|
+
userName?: string;
|
|
1493
|
+
ipAddress?: string;
|
|
1494
|
+
userAgent?: string;
|
|
1495
|
+
timestamp: string;
|
|
1496
|
+
}
|
|
1497
|
+
/** Activity log detail response */
|
|
1498
|
+
export interface ActivityLogDetailResponseDto {
|
|
1499
|
+
id: string;
|
|
1500
|
+
action: string;
|
|
1501
|
+
description?: string;
|
|
1502
|
+
entityType?: string;
|
|
1503
|
+
entityId?: string;
|
|
1504
|
+
userId?: string;
|
|
1505
|
+
userName?: string;
|
|
1506
|
+
userEmail?: string;
|
|
1507
|
+
ipAddress?: string;
|
|
1508
|
+
userAgent?: string;
|
|
1509
|
+
oldValues?: string;
|
|
1510
|
+
newValues?: string;
|
|
1511
|
+
additionalData?: string;
|
|
1512
|
+
timestamp: string;
|
|
1513
|
+
}
|
|
1514
|
+
/** Error log list request */
|
|
1515
|
+
export interface ErrorLogListRequestDto {
|
|
1516
|
+
page?: number;
|
|
1517
|
+
pageSize?: number;
|
|
1518
|
+
level?: string;
|
|
1519
|
+
source?: string;
|
|
1520
|
+
dateFrom?: string;
|
|
1521
|
+
dateTo?: string;
|
|
1522
|
+
searchTerm?: string;
|
|
1523
|
+
}
|
|
1524
|
+
/** Error log list response */
|
|
1525
|
+
export interface ErrorLogListResponseDto {
|
|
1526
|
+
items: ErrorLogListItemDto[];
|
|
1527
|
+
totalCount: number;
|
|
1528
|
+
page: number;
|
|
1529
|
+
pageSize: number;
|
|
1530
|
+
totalPages: number;
|
|
1531
|
+
}
|
|
1532
|
+
export interface ErrorLogListItemDto {
|
|
1533
|
+
id: string;
|
|
1534
|
+
level: string;
|
|
1535
|
+
message: string;
|
|
1536
|
+
source?: string;
|
|
1537
|
+
exceptionType?: string;
|
|
1538
|
+
timestamp: string;
|
|
1539
|
+
occurrenceCount: number;
|
|
1540
|
+
}
|
|
1541
|
+
export interface AdminServiceCategoryDto {
|
|
1542
|
+
id: string;
|
|
1543
|
+
name: string;
|
|
1544
|
+
description: string;
|
|
1545
|
+
iconUrl?: string;
|
|
1546
|
+
isActive: boolean;
|
|
1547
|
+
displayOrder: number;
|
|
1548
|
+
totalArtisans: number;
|
|
1549
|
+
activeArtisans: number;
|
|
1550
|
+
totalJobs: number;
|
|
1551
|
+
createdAt: string;
|
|
1552
|
+
updatedAt: string;
|
|
1553
|
+
}
|
|
1554
|
+
export interface CreateServiceCategoryDto {
|
|
1555
|
+
name: string;
|
|
1556
|
+
description: string;
|
|
1557
|
+
iconUrl?: string;
|
|
1558
|
+
displayOrder?: number;
|
|
1559
|
+
}
|
|
1560
|
+
export interface UpdateServiceCategoryDto {
|
|
1561
|
+
name?: string;
|
|
1562
|
+
description?: string;
|
|
1563
|
+
iconUrl?: string;
|
|
1564
|
+
displayOrder?: number;
|
|
1565
|
+
isActive?: boolean;
|
|
1566
|
+
}
|
|
226
1567
|
//# sourceMappingURL=admin.d.ts.map
|