@explorins/pers-shared 2.1.79 → 2.1.81

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 (75) hide show
  1. package/dist/cjs/shared-lib/dto/analytics/base-analytics.dto.d.ts +38 -0
  2. package/dist/cjs/shared-lib/dto/analytics/base-analytics.dto.d.ts.map +1 -0
  3. package/dist/cjs/shared-lib/dto/analytics/base-analytics.dto.js +53 -0
  4. package/dist/cjs/shared-lib/dto/analytics/base-analytics.dto.js.map +1 -0
  5. package/dist/cjs/shared-lib/dto/{campaign → analytics}/campaign-claim-analytics.dto.d.ts +2 -2
  6. package/dist/cjs/shared-lib/dto/analytics/campaign-claim-analytics.dto.d.ts.map +1 -0
  7. package/dist/cjs/shared-lib/dto/{campaign → analytics}/campaign-claim-analytics.dto.js +16 -16
  8. package/dist/cjs/shared-lib/dto/analytics/campaign-claim-analytics.dto.js.map +1 -0
  9. package/dist/{esm/shared-lib/dto/transaction → cjs/shared-lib/dto/analytics}/transaction-analytics.request.dto.d.ts +6 -3
  10. package/dist/cjs/shared-lib/dto/analytics/transaction-analytics.request.dto.d.ts.map +1 -0
  11. package/dist/cjs/shared-lib/dto/{transaction → analytics}/transaction-analytics.request.dto.js +10 -7
  12. package/dist/cjs/shared-lib/dto/analytics/transaction-analytics.request.dto.js.map +1 -0
  13. package/dist/cjs/shared-lib/dto/{user-analytics.dto.d.ts → analytics/user-analytics.dto.d.ts} +17 -4
  14. package/dist/cjs/shared-lib/dto/analytics/user-analytics.dto.d.ts.map +1 -0
  15. package/dist/cjs/shared-lib/dto/analytics/user-analytics.dto.js +224 -0
  16. package/dist/cjs/shared-lib/dto/analytics/user-analytics.dto.js.map +1 -0
  17. package/dist/cjs/shared-lib/dto/campaign/campaign-claim-analytics-request.dto.d.ts +5 -2
  18. package/dist/cjs/shared-lib/dto/campaign/campaign-claim-analytics-request.dto.d.ts.map +1 -1
  19. package/dist/cjs/shared-lib/dto/campaign/campaign-claim-analytics-request.dto.js +9 -6
  20. package/dist/cjs/shared-lib/dto/campaign/campaign-claim-analytics-request.dto.js.map +1 -1
  21. package/dist/cjs/shared-lib/dto/index.d.ts +3 -2
  22. package/dist/cjs/shared-lib/dto/index.d.ts.map +1 -1
  23. package/dist/cjs/shared-lib/dto/index.js +3 -2
  24. package/dist/cjs/shared-lib/dto/index.js.map +1 -1
  25. package/dist/cjs/shared-lib/dto/transaction/index.d.ts +1 -1
  26. package/dist/cjs/shared-lib/dto/transaction/index.d.ts.map +1 -1
  27. package/dist/cjs/shared-lib/dto/transaction/index.js +1 -1
  28. package/dist/cjs/shared-lib/dto/transaction/index.js.map +1 -1
  29. package/dist/cjs/shared-lib/interfaces/transaction-analytics-request.interface.d.ts +1 -1
  30. package/dist/cjs/shared-lib/interfaces/transaction-analytics-request.interface.d.ts.map +1 -1
  31. package/dist/esm/shared-lib/dto/analytics/base-analytics.dto.d.ts +38 -0
  32. package/dist/esm/shared-lib/dto/analytics/base-analytics.dto.d.ts.map +1 -0
  33. package/dist/esm/shared-lib/dto/analytics/base-analytics.dto.js +43 -0
  34. package/dist/esm/shared-lib/dto/analytics/base-analytics.dto.js.map +1 -0
  35. package/dist/esm/shared-lib/dto/{campaign → analytics}/campaign-claim-analytics.dto.d.ts +2 -2
  36. package/dist/esm/shared-lib/dto/analytics/campaign-claim-analytics.dto.d.ts.map +1 -0
  37. package/dist/esm/shared-lib/dto/{campaign → analytics}/campaign-claim-analytics.dto.js +16 -16
  38. package/dist/esm/shared-lib/dto/analytics/campaign-claim-analytics.dto.js.map +1 -0
  39. package/dist/{cjs/shared-lib/dto/transaction → esm/shared-lib/dto/analytics}/transaction-analytics.request.dto.d.ts +6 -3
  40. package/dist/esm/shared-lib/dto/analytics/transaction-analytics.request.dto.d.ts.map +1 -0
  41. package/dist/esm/shared-lib/dto/{transaction → analytics}/transaction-analytics.request.dto.js +10 -7
  42. package/dist/esm/shared-lib/dto/analytics/transaction-analytics.request.dto.js.map +1 -0
  43. package/dist/esm/shared-lib/dto/{user-analytics.dto.d.ts → analytics/user-analytics.dto.d.ts} +17 -4
  44. package/dist/esm/shared-lib/dto/analytics/user-analytics.dto.d.ts.map +1 -0
  45. package/dist/esm/shared-lib/dto/analytics/user-analytics.dto.js +197 -0
  46. package/dist/esm/shared-lib/dto/analytics/user-analytics.dto.js.map +1 -0
  47. package/dist/esm/shared-lib/dto/campaign/campaign-claim-analytics-request.dto.d.ts +5 -2
  48. package/dist/esm/shared-lib/dto/campaign/campaign-claim-analytics-request.dto.d.ts.map +1 -1
  49. package/dist/esm/shared-lib/dto/campaign/campaign-claim-analytics-request.dto.js +9 -6
  50. package/dist/esm/shared-lib/dto/campaign/campaign-claim-analytics-request.dto.js.map +1 -1
  51. package/dist/esm/shared-lib/dto/index.d.ts +3 -2
  52. package/dist/esm/shared-lib/dto/index.d.ts.map +1 -1
  53. package/dist/esm/shared-lib/dto/index.js +3 -2
  54. package/dist/esm/shared-lib/dto/index.js.map +1 -1
  55. package/dist/esm/shared-lib/dto/transaction/index.d.ts +1 -1
  56. package/dist/esm/shared-lib/dto/transaction/index.d.ts.map +1 -1
  57. package/dist/esm/shared-lib/dto/transaction/index.js +1 -1
  58. package/dist/esm/shared-lib/dto/transaction/index.js.map +1 -1
  59. package/dist/esm/shared-lib/interfaces/transaction-analytics-request.interface.d.ts +1 -1
  60. package/dist/esm/shared-lib/interfaces/transaction-analytics-request.interface.d.ts.map +1 -1
  61. package/package.json +1 -1
  62. package/dist/cjs/shared-lib/dto/campaign/campaign-claim-analytics.dto.d.ts.map +0 -1
  63. package/dist/cjs/shared-lib/dto/campaign/campaign-claim-analytics.dto.js.map +0 -1
  64. package/dist/cjs/shared-lib/dto/transaction/transaction-analytics.request.dto.d.ts.map +0 -1
  65. package/dist/cjs/shared-lib/dto/transaction/transaction-analytics.request.dto.js.map +0 -1
  66. package/dist/cjs/shared-lib/dto/user-analytics.dto.d.ts.map +0 -1
  67. package/dist/cjs/shared-lib/dto/user-analytics.dto.js +0 -170
  68. package/dist/cjs/shared-lib/dto/user-analytics.dto.js.map +0 -1
  69. package/dist/esm/shared-lib/dto/campaign/campaign-claim-analytics.dto.d.ts.map +0 -1
  70. package/dist/esm/shared-lib/dto/campaign/campaign-claim-analytics.dto.js.map +0 -1
  71. package/dist/esm/shared-lib/dto/transaction/transaction-analytics.request.dto.d.ts.map +0 -1
  72. package/dist/esm/shared-lib/dto/transaction/transaction-analytics.request.dto.js.map +0 -1
  73. package/dist/esm/shared-lib/dto/user-analytics.dto.d.ts.map +0 -1
  74. package/dist/esm/shared-lib/dto/user-analytics.dto.js +0 -148
  75. package/dist/esm/shared-lib/dto/user-analytics.dto.js.map +0 -1
@@ -0,0 +1,38 @@
1
+ /**
2
+ * BASE ANALYTICS REQUEST
3
+ *
4
+ * Common date range filtering for all analytics endpoints.
5
+ * Extend this for consistent API patterns across analytics.
6
+ */
7
+ export declare abstract class BaseAnalyticsRequestDTO {
8
+ startDate?: Date;
9
+ endDate?: Date;
10
+ }
11
+ /**
12
+ * BASE ANALYTICS RESPONSE METADATA
13
+ *
14
+ * Common metadata structure for all analytics responses.
15
+ * Shows applied filters for transparency.
16
+ *
17
+ * Note: Execution time removed - client can measure total request time using performance.now()
18
+ * which includes network latency and is more relevant for UX monitoring.
19
+ */
20
+ export interface BaseAnalyticsMetadata {
21
+ /**
22
+ * Applied date range filter (only present if startDate or endDate was provided in request)
23
+ */
24
+ dateRange?: {
25
+ startDate: Date;
26
+ endDate: Date;
27
+ };
28
+ }
29
+ /**
30
+ * BASE ANALYTICS RESPONSE
31
+ *
32
+ * Common response structure for analytics endpoints.
33
+ * All analytics responses should include metadata with timing and filter info.
34
+ */
35
+ export declare abstract class BaseAnalyticsResponseDTO {
36
+ abstract metadata: BaseAnalyticsMetadata;
37
+ }
38
+ //# sourceMappingURL=base-analytics.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-analytics.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/analytics/base-analytics.dto.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,8BAAsB,uBAAuB;IAO3C,SAAS,CAAC,EAAE,IAAI,CAAC;IAQjB,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,SAAS,EAAE,IAAI,CAAC;QAChB,OAAO,EAAE,IAAI,CAAC;KACf,CAAC;CACH;AAED;;;;;GAKG;AACH,8BAAsB,wBAAwB;IAC5C,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;CAC1C"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.BaseAnalyticsResponseDTO = exports.BaseAnalyticsRequestDTO = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_validator_1 = require("class-validator");
15
+ /**
16
+ * BASE ANALYTICS REQUEST
17
+ *
18
+ * Common date range filtering for all analytics endpoints.
19
+ * Extend this for consistent API patterns across analytics.
20
+ */
21
+ class BaseAnalyticsRequestDTO {
22
+ startDate;
23
+ endDate;
24
+ }
25
+ exports.BaseAnalyticsRequestDTO = BaseAnalyticsRequestDTO;
26
+ __decorate([
27
+ (0, swagger_1.ApiPropertyOptional)({
28
+ description: 'Start date for filtering (ISO 8601 format). Filters records with createdAt >= startDate.',
29
+ example: '2024-01-01T00:00:00.000Z'
30
+ }),
31
+ (0, class_validator_1.IsOptional)(),
32
+ (0, class_validator_1.IsDateString)(),
33
+ __metadata("design:type", Date)
34
+ ], BaseAnalyticsRequestDTO.prototype, "startDate", void 0);
35
+ __decorate([
36
+ (0, swagger_1.ApiPropertyOptional)({
37
+ description: 'End date for filtering (ISO 8601 format). Filters records with createdAt <= endDate.',
38
+ example: '2024-12-31T23:59:59.999Z'
39
+ }),
40
+ (0, class_validator_1.IsOptional)(),
41
+ (0, class_validator_1.IsDateString)(),
42
+ __metadata("design:type", Date)
43
+ ], BaseAnalyticsRequestDTO.prototype, "endDate", void 0);
44
+ /**
45
+ * BASE ANALYTICS RESPONSE
46
+ *
47
+ * Common response structure for analytics endpoints.
48
+ * All analytics responses should include metadata with timing and filter info.
49
+ */
50
+ class BaseAnalyticsResponseDTO {
51
+ }
52
+ exports.BaseAnalyticsResponseDTO = BaseAnalyticsResponseDTO;
53
+ //# sourceMappingURL=base-analytics.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-analytics.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/analytics/base-analytics.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAsD;AACtD,qDAA2D;AAE3D;;;;;GAKG;AACH,MAAsB,uBAAuB;IAO3C,SAAS,CAAQ;IAQjB,OAAO,CAAQ;CAChB;AAhBD,0DAgBC;AATC;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,0FAA0F;QACvG,OAAO,EAAE,0BAA0B;KACpC,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,8BAAY,GAAE;8BACH,IAAI;0DAAC;AAQjB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,sFAAsF;QACnG,OAAO,EAAE,0BAA0B;KACpC,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,8BAAY,GAAE;8BACL,IAAI;wDAAC;AAsBjB;;;;;GAKG;AACH,MAAsB,wBAAwB;CAE7C;AAFD,4DAEC"}
@@ -1,8 +1,8 @@
1
1
  import { ProcessRecordStatus } from "../../enum";
2
2
  import { UserDTO } from "../user.dto";
3
- import { CampaignDTO } from "./campaign.dto";
3
+ import { CampaignDTO } from "../campaign/campaign.dto";
4
4
  import { BusinessDTO } from "../business/business.dto";
5
- import { TriggerSourceDTO } from "./trigger-source.dto";
5
+ import { TriggerSourceDTO } from "../campaign/trigger-source.dto";
6
6
  /**
7
7
  * Campaign Claim Analytics DTO
8
8
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign-claim-analytics.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/analytics/campaign-claim-analytics.dto.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE;;;;;;;;;;;;;GAaG;AACH,qBAAa,yBAAyB;IAKpC,EAAE,EAAE,MAAM,CAAM;IAMhB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAQ;IAQ9B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAQ7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAQ;IAQjC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAQ;IAQjC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAQ;IAOtC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAQ;IAO5B,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAQ;IAOpC,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAO9B,aAAa,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAOxC,MAAM,EAAE,mBAAmB,CAA+B;IAQ1D,eAAe,EAAE,MAAM,GAAG,IAAI,CAAQ;IAQtC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAQ/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAOhC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB"}
@@ -13,9 +13,9 @@ exports.CampaignClaimAnalyticsDTO = void 0;
13
13
  const swagger_1 = require("@nestjs/swagger");
14
14
  const enum_1 = require("../../enum");
15
15
  const user_dto_1 = require("../user.dto");
16
- const campaign_dto_1 = require("./campaign.dto");
16
+ const campaign_dto_1 = require("../campaign/campaign.dto");
17
17
  const business_dto_1 = require("../business/business.dto");
18
- const trigger_source_dto_1 = require("./trigger-source.dto");
18
+ const trigger_source_dto_1 = require("../campaign/trigger-source.dto");
19
19
  /**
20
20
  * Campaign Claim Analytics DTO
21
21
  *
@@ -50,21 +50,21 @@ class CampaignClaimAnalyticsDTO {
50
50
  exports.CampaignClaimAnalyticsDTO = CampaignClaimAnalyticsDTO;
51
51
  __decorate([
52
52
  (0, swagger_1.ApiProperty)({
53
- description: 'Unique claim ID',
53
+ description: 'Unique claim ID (UUID) - primary identifier for this claim record',
54
54
  example: 'claim-uuid-123'
55
55
  }),
56
56
  __metadata("design:type", String)
57
57
  ], CampaignClaimAnalyticsDTO.prototype, "id", void 0);
58
58
  __decorate([
59
59
  (0, swagger_1.ApiProperty)({
60
- description: 'Timestamp when claim was created',
60
+ description: 'Timestamp when claim was created (ISO 8601 format). Used for time-based analytics and filtering.',
61
61
  type: Date
62
62
  }),
63
63
  __metadata("design:type", Object)
64
64
  ], CampaignClaimAnalyticsDTO.prototype, "createdAt", void 0);
65
65
  __decorate([
66
66
  (0, swagger_1.ApiPropertyOptional)({
67
- description: 'User ID - foreign key for groupBy operations',
67
+ description: 'User ID (UUID) who made the claim - foreign key reference. Use for user-based grouping and aggregations.',
68
68
  type: String,
69
69
  nullable: true,
70
70
  example: 'user-uuid-123'
@@ -73,7 +73,7 @@ __decorate([
73
73
  ], CampaignClaimAnalyticsDTO.prototype, "userId", void 0);
74
74
  __decorate([
75
75
  (0, swagger_1.ApiPropertyOptional)({
76
- description: 'Campaign ID - foreign key for groupBy operations',
76
+ description: 'Campaign ID (UUID) that was claimed - foreign key reference. Use for campaign performance analytics and grouping.',
77
77
  type: String,
78
78
  nullable: true,
79
79
  example: 'campaign-uuid-456'
@@ -82,7 +82,7 @@ __decorate([
82
82
  ], CampaignClaimAnalyticsDTO.prototype, "campaignId", void 0);
83
83
  __decorate([
84
84
  (0, swagger_1.ApiPropertyOptional)({
85
- description: 'Business ID - foreign key for groupBy operations',
85
+ description: 'Business ID (UUID) associated with the claim - foreign key reference. Use for business-level analytics and grouping.',
86
86
  type: String,
87
87
  nullable: true,
88
88
  example: 'business-uuid-789'
@@ -91,7 +91,7 @@ __decorate([
91
91
  ], CampaignClaimAnalyticsDTO.prototype, "businessId", void 0);
92
92
  __decorate([
93
93
  (0, swagger_1.ApiPropertyOptional)({
94
- description: 'Trigger Source ID - foreign key for groupBy operations',
94
+ description: 'Trigger Source ID (UUID) - the specific trigger (QR code, geofence, etc.) that initiated the claim. Use for trigger effectiveness analytics.',
95
95
  type: String,
96
96
  nullable: true,
97
97
  example: 'trigger-uuid-101'
@@ -100,7 +100,7 @@ __decorate([
100
100
  ], CampaignClaimAnalyticsDTO.prototype, "triggerSourceId", void 0);
101
101
  __decorate([
102
102
  (0, swagger_1.ApiPropertyOptional)({
103
- description: 'User who claimed the campaign (full object for analytics)',
103
+ description: 'Full user object (enriched data) - includes email, wallet address, public profile. Only populated when "include=user" query parameter is provided. NULL if not requested to optimize response size.',
104
104
  type: () => user_dto_1.UserDTO,
105
105
  nullable: true
106
106
  }),
@@ -108,7 +108,7 @@ __decorate([
108
108
  ], CampaignClaimAnalyticsDTO.prototype, "user", void 0);
109
109
  __decorate([
110
110
  (0, swagger_1.ApiPropertyOptional)({
111
- description: 'Campaign that was claimed (full object for analytics)',
111
+ description: 'Full campaign object (enriched data) - includes name, description, token rewards. Only populated when "include=campaign" query parameter is provided. NULL if not requested to optimize response size.',
112
112
  type: () => campaign_dto_1.CampaignDTO,
113
113
  nullable: true
114
114
  }),
@@ -116,7 +116,7 @@ __decorate([
116
116
  ], CampaignClaimAnalyticsDTO.prototype, "campaign", void 0);
117
117
  __decorate([
118
118
  (0, swagger_1.ApiPropertyOptional)({
119
- description: 'Business associated with claim (full object for analytics)',
119
+ description: 'Full business object (enriched data) - includes business name, location, logo. Only populated when "include=business" query parameter is provided. NULL if not requested to optimize response size.',
120
120
  type: () => business_dto_1.BusinessDTO,
121
121
  nullable: true
122
122
  }),
@@ -124,7 +124,7 @@ __decorate([
124
124
  ], CampaignClaimAnalyticsDTO.prototype, "business", void 0);
125
125
  __decorate([
126
126
  (0, swagger_1.ApiPropertyOptional)({
127
- description: 'Trigger source used for claim (full object for analytics)',
127
+ description: 'Full trigger source object (enriched data) - includes trigger type, location, configuration. Only populated when "include=triggerSource" query parameter is provided. NULL if not requested to optimize response size.',
128
128
  type: () => trigger_source_dto_1.TriggerSourceDTO,
129
129
  nullable: true
130
130
  }),
@@ -132,7 +132,7 @@ __decorate([
132
132
  ], CampaignClaimAnalyticsDTO.prototype, "triggerSource", void 0);
133
133
  __decorate([
134
134
  (0, swagger_1.ApiProperty)({
135
- description: 'Processing status of the claim',
135
+ description: 'Processing status of the claim lifecycle: PENDING (created, awaiting blockchain), PROCESSING (blockchain transaction in progress), COMPLETED (tokens delivered successfully), FAILED (error occurred). Filter by COMPLETED for successful claims in analytics.',
136
136
  enum: enum_1.ProcessRecordStatus,
137
137
  example: enum_1.ProcessRecordStatus.COMPLETED
138
138
  }),
@@ -140,7 +140,7 @@ __decorate([
140
140
  ], CampaignClaimAnalyticsDTO.prototype, "status", void 0);
141
141
  __decorate([
142
142
  (0, swagger_1.ApiPropertyOptional)({
143
- description: 'Country code of user at time of claim',
143
+ description: 'ISO 3166-1 alpha-2 country code of the user at time of claim (derived from IP geolocation). Used for geographic analytics and compliance reporting.',
144
144
  type: String,
145
145
  nullable: true,
146
146
  example: 'US'
@@ -149,7 +149,7 @@ __decorate([
149
149
  ], CampaignClaimAnalyticsDTO.prototype, "userCountryCode", void 0);
150
150
  __decorate([
151
151
  (0, swagger_1.ApiPropertyOptional)({
152
- description: 'Latitude coordinate of claim location',
152
+ description: 'Latitude coordinate (decimal degrees) of claim location. Combined with longitude for geospatial analytics, heatmaps, and location-based insights. NULL if location not available.',
153
153
  type: Number,
154
154
  nullable: true,
155
155
  example: 47.6062
@@ -158,7 +158,7 @@ __decorate([
158
158
  ], CampaignClaimAnalyticsDTO.prototype, "latitude", void 0);
159
159
  __decorate([
160
160
  (0, swagger_1.ApiPropertyOptional)({
161
- description: 'Longitude coordinate of claim location',
161
+ description: 'Longitude coordinate (decimal degrees) of claim location. Combined with latitude for geospatial analytics, heatmaps, and location-based insights. NULL if location not available.',
162
162
  type: Number,
163
163
  nullable: true,
164
164
  example: -122.3321
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign-claim-analytics.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/analytics/campaign-claim-analytics.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAmE;AACnE,qCAAiD;AACjD,0CAAsC;AACtC,2DAAuD;AACvD,2DAAuD;AACvD,uEAAkE;AAElE;;;;;;;;;;;;;GAaG;AACH,MAAa,yBAAyB;IAKpC,EAAE,GAAW,EAAE,CAAC;IAMhB,SAAS,GAAgB,IAAI,CAAC;IAQ9B,MAAM,GAAkB,IAAI,CAAC;IAQ7B,UAAU,GAAkB,IAAI,CAAC;IAQjC,UAAU,GAAkB,IAAI,CAAC;IAQjC,eAAe,GAAkB,IAAI,CAAC;IAOtC,IAAI,GAAmB,IAAI,CAAC;IAO5B,QAAQ,GAAuB,IAAI,CAAC;IAOpC,QAAQ,CAAsB;IAO9B,aAAa,CAA2B;IAOxC,MAAM,GAAwB,0BAAmB,CAAC,OAAO,CAAC;IAQ1D,eAAe,GAAkB,IAAI,CAAC;IAQtC,QAAQ,GAAkB,IAAI,CAAC;IAQ/B,SAAS,GAAkB,IAAI,CAAC;IAOhC,OAAO,CAAiB;CACzB;AA9GD,8DA8GC;AAzGC;IAJC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,mEAAmE;QAChF,OAAO,EAAE,gBAAgB;KAC1B,CAAC;;qDACc;AAMhB;IAJC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,kGAAkG;QAC/G,IAAI,EAAE,IAAI;KACX,CAAC;;4DAC4B;AAQ9B;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,0GAA0G;QACvH,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,eAAe;KACzB,CAAC;;yDAC2B;AAQ7B;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,mHAAmH;QAChI,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,mBAAmB;KAC7B,CAAC;;6DAC+B;AAQjC;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,sHAAsH;QACnI,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,mBAAmB;KAC7B,CAAC;;6DAC+B;AAQjC;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,8IAA8I;QAC3J,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,kBAAkB;KAC5B,CAAC;;kEACoC;AAOtC;IALC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,qMAAqM;QAClN,IAAI,EAAE,GAAG,EAAE,CAAC,kBAAO;QACnB,QAAQ,EAAE,IAAI;KACf,CAAC;;uDAC0B;AAO5B;IALC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,wMAAwM;QACrN,IAAI,EAAE,GAAG,EAAE,CAAC,0BAAW;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;;2DACkC;AAOpC;IALC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,qMAAqM;QAClN,IAAI,EAAE,GAAG,EAAE,CAAC,0BAAW;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;;2DAC4B;AAO9B;IALC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,wNAAwN;QACrO,IAAI,EAAE,GAAG,EAAE,CAAC,qCAAgB;QAC5B,QAAQ,EAAE,IAAI;KACf,CAAC;;gEACsC;AAOxC;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,gQAAgQ;QAC7Q,IAAI,EAAE,0BAAmB;QACzB,OAAO,EAAE,0BAAmB,CAAC,SAAS;KACvC,CAAC;;yDACwD;AAQ1D;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,qJAAqJ;QAClK,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,IAAI;KACd,CAAC;;kEACoC;AAQtC;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,mLAAmL;QAChM,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,OAAO;KACjB,CAAC;;2DAC6B;AAQ/B;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,mLAAmL;QAChM,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,CAAC,QAAQ;KACnB,CAAC;;4DAC8B;AAOhC;IALC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,oCAAoC;QACjD,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACf,CAAC;;0DACsB"}
@@ -1,7 +1,7 @@
1
- import { TransactionDTO } from './transaction.dto';
1
+ import { TransactionDTO } from '../transaction/transaction.dto';
2
2
  import { SortOrder } from '../../enum';
3
3
  import { AnalyticsGroupByType, AnalyticsMetricType, AnalyticsResultItem } from '../../types/analytics.type';
4
- import { GroupByExpressionDTO } from '../analytics/group-by-expression.dto';
4
+ import { GroupByExpressionDTO } from './group-by-expression.dto';
5
5
  declare const TransactionAnalyticsFiltersDTO_base: import("@nestjs/common").Type<Partial<Omit<TransactionDTO, "createdAt" | "updatedAt">>>;
6
6
  /**
7
7
  * Type-safe filters for transaction analytics
@@ -36,7 +36,10 @@ export declare class TransactionAnalyticsResponseDTO {
36
36
  results: TransactionAnalyticsResultItem[];
37
37
  totalGroups: number;
38
38
  metadata: {
39
- executionTime: string;
39
+ dateRange?: {
40
+ startDate: Date;
41
+ endDate: Date;
42
+ };
40
43
  };
41
44
  }
42
45
  export type TransactionAnalyticsResultItem = AnalyticsResultItem & {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-analytics.request.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/analytics/transaction-analytics.request.dto.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAoB,MAAM,YAAY,CAAC;AACzD,OAAO,EAA0B,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACpI,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;;AAEjE;;;;GAIG;AACH,qBAAa,8BAA+B,SAAQ,mCAEnD;CAAG;AAEJ;;;GAGG;AACH,qBAAa,8BAA8B;IAkBzC,OAAO,CAAC,EAAE,8BAA8B,CAAC;IAUzC,OAAO,CAAC,EAAE,+BAA+B,EAAE,CAAC;IAkB5C,kBAAkB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAW5C,OAAO,EAAE,mBAAmB,EAAE,CAAa;IAU3C,MAAM,CAAC,EAAE,mBAAmB,GAAG,+BAA+B,GAAG,MAAM,CAAW;IASlF,SAAS,CAAC,EAAE,SAAS,CAAkB;IAcvC,KAAK,CAAC,EAAE,MAAM,CAAM;IASpB,SAAS,CAAC,EAAE,IAAI,CAAC;IAQjB,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,+BAA+B,GACzC,oBAAoB,GAClB,MAAM,IAAI,CAAC,cAAc,EACrB,WAAW,GAAG,WAAW,GACzB,IAAI,GACJ,iBAAiB,CACpB,CAAC;AAEN;;GAEG;AACH,qBAAa,+BAA+B;IAU1C,OAAO,EAAE,8BAA8B,EAAE,CAAM;IAM/C,WAAW,EAAE,MAAM,CAAK;IAWxB,QAAQ,EAAE;QACR,SAAS,CAAC,EAAE;YACV,SAAS,EAAE,IAAI,CAAC;YAChB,OAAO,EAAE,IAAI,CAAC;SACf,CAAC;KACH,CAAM;CACR;AAED,MAAM,MAAM,8BAA8B,GAAG,mBAAmB,GAAG;KAEhE,CAAC,IAAI,MAAM,IAAI,CAAC,cAAc,EAC3B,IAAI,GACJ,WAAW,GAAG,WAAW,GACzB,iBAAiB,CACpB,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;CACvB,CAAC"}
@@ -13,10 +13,10 @@ exports.TransactionAnalyticsResponseDTO = exports.TransactionAnalyticsRequestDTO
13
13
  const class_validator_1 = require("class-validator");
14
14
  const class_transformer_1 = require("class-transformer");
15
15
  const swagger_1 = require("@nestjs/swagger");
16
- const transaction_dto_1 = require("./transaction.dto");
16
+ const transaction_dto_1 = require("../transaction/transaction.dto");
17
17
  const enum_1 = require("../../enum");
18
18
  const analytics_type_1 = require("../../types/analytics.type");
19
- const group_by_expression_dto_1 = require("../analytics/group-by-expression.dto");
19
+ const group_by_expression_dto_1 = require("./group-by-expression.dto");
20
20
  /**
21
21
  * Type-safe filters for transaction analytics
22
22
  * All fields optional via PartialType
@@ -163,9 +163,7 @@ __decorate([
163
163
  class TransactionAnalyticsResponseDTO {
164
164
  results = [];
165
165
  totalGroups = 0;
166
- metadata = {
167
- executionTime: '0ms'
168
- };
166
+ metadata = {};
169
167
  }
170
168
  exports.TransactionAnalyticsResponseDTO = TransactionAnalyticsResponseDTO;
171
169
  __decorate([
@@ -189,8 +187,13 @@ __decorate([
189
187
  ], TransactionAnalyticsResponseDTO.prototype, "totalGroups", void 0);
190
188
  __decorate([
191
189
  (0, swagger_1.ApiProperty)({
192
- description: 'Query execution metadata',
193
- example: { executionTime: '45ms' }
190
+ description: 'Query metadata showing applied filters',
191
+ example: {
192
+ dateRange: {
193
+ startDate: '2024-01-01T00:00:00.000Z',
194
+ endDate: '2024-12-31T23:59:59.999Z'
195
+ }
196
+ }
194
197
  }),
195
198
  __metadata("design:type", Object)
196
199
  ], TransactionAnalyticsResponseDTO.prototype, "metadata", void 0);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-analytics.request.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/analytics/transaction-analytics.request.dto.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,24 @@
1
+ /**
2
+ * USER ANALYTICS FILTERS DTO
3
+ *
4
+ * Filters to scope user analytics aggregations.
5
+ * Determines which users/activity to include in calculations.
6
+ */
7
+ export declare class UserAnalyticsFiltersDTO {
8
+ businessId?: string;
9
+ }
1
10
  /**
2
11
  * USER ANALYTICS REQUEST DTO
3
12
  *
4
- * Filters for user analytics queries.
5
- * Supports date range filtering and business-specific analytics.
13
+ * Request structure for user engagement analytics.
14
+ * Supports date range filtering and business-specific scoping.
15
+ *
16
+ * Pattern matches TransactionAnalyticsRequestDTO and CampaignClaimAnalyticsRequestDTO for consistency.
6
17
  */
7
18
  export declare class UserAnalyticsRequestDTO {
19
+ filters?: UserAnalyticsFiltersDTO;
8
20
  startDate?: Date;
9
21
  endDate?: Date;
10
- businessId?: string;
11
22
  }
12
23
  /**
13
24
  * USER ANALYTICS RESPONSE DTO
@@ -26,6 +37,9 @@ export declare class UserAnalyticsResponseDTO {
26
37
  totalTransactionVolume: number;
27
38
  averageClaimsPerUser: number;
28
39
  averageRedemptionsPerUser: number;
40
+ averageTransactionsPerActiveUser: number;
41
+ averageClaimsPerActiveUser: number;
42
+ averageRedemptionsPerActiveUser: number;
29
43
  engagementRate: number;
30
44
  periodBreakdown?: {
31
45
  date: string;
@@ -33,7 +47,6 @@ export declare class UserAnalyticsResponseDTO {
33
47
  newUsers: number;
34
48
  }[];
35
49
  metadata: {
36
- executionTimeMs: number;
37
50
  dateRange?: {
38
51
  startDate: Date;
39
52
  endDate: Date;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-analytics.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/analytics/user-analytics.dto.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,qBAAa,uBAAuB;IASlC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,qBAAa,uBAAuB;IAWlC,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAQlC,SAAS,CAAC,EAAE,IAAI,CAAC;IAQjB,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,qBAAa,wBAAwB;IAKnC,UAAU,EAAE,MAAM,CAAK;IAMvB,WAAW,EAAE,MAAM,CAAK;IAMxB,QAAQ,EAAE,MAAM,CAAK;IAMrB,0BAA0B,EAAE,MAAM,CAAK;IAMvC,wBAAwB,EAAE,MAAM,CAAK;IAMrC,sBAAsB,EAAE,MAAM,CAAK;IAMnC,oBAAoB,EAAE,MAAM,CAAK;IAMjC,yBAAyB,EAAE,MAAM,CAAK;IAMtC,gCAAgC,EAAE,MAAM,CAAK;IAM7C,0BAA0B,EAAE,MAAM,CAAK;IAMvC,+BAA+B,EAAE,MAAM,CAAK;IAO5C,cAAc,EAAE,MAAM,CAAK;IAc3B,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,EAAE,CAAC;IAgBJ,QAAQ,EAAE;QACR,SAAS,CAAC,EAAE;YACV,SAAS,EAAE,IAAI,CAAC;YAChB,OAAO,EAAE,IAAI,CAAC;SACf,CAAC;KACH,CAAM;CACR"}
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UserAnalyticsResponseDTO = exports.UserAnalyticsRequestDTO = exports.UserAnalyticsFiltersDTO = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_validator_1 = require("class-validator");
15
+ const class_transformer_1 = require("class-transformer");
16
+ /**
17
+ * USER ANALYTICS FILTERS DTO
18
+ *
19
+ * Filters to scope user analytics aggregations.
20
+ * Determines which users/activity to include in calculations.
21
+ */
22
+ class UserAnalyticsFiltersDTO {
23
+ businessId;
24
+ }
25
+ exports.UserAnalyticsFiltersDTO = UserAnalyticsFiltersDTO;
26
+ __decorate([
27
+ (0, swagger_1.ApiPropertyOptional)({
28
+ description: 'Filter analytics to specific business (filters transactions, claims, redemptions by businessId)',
29
+ type: String,
30
+ format: 'uuid',
31
+ example: 'biz-uuid-123'
32
+ }),
33
+ (0, class_validator_1.IsOptional)(),
34
+ (0, class_validator_1.IsString)(),
35
+ __metadata("design:type", String)
36
+ ], UserAnalyticsFiltersDTO.prototype, "businessId", void 0);
37
+ /**
38
+ * USER ANALYTICS REQUEST DTO
39
+ *
40
+ * Request structure for user engagement analytics.
41
+ * Supports date range filtering and business-specific scoping.
42
+ *
43
+ * Pattern matches TransactionAnalyticsRequestDTO and CampaignClaimAnalyticsRequestDTO for consistency.
44
+ */
45
+ class UserAnalyticsRequestDTO {
46
+ filters;
47
+ startDate;
48
+ endDate;
49
+ }
50
+ exports.UserAnalyticsRequestDTO = UserAnalyticsRequestDTO;
51
+ __decorate([
52
+ (0, swagger_1.ApiPropertyOptional)({
53
+ description: 'Filters to scope which users/activity to include in analytics',
54
+ type: UserAnalyticsFiltersDTO,
55
+ example: {
56
+ businessId: 'biz-uuid-123'
57
+ }
58
+ }),
59
+ (0, class_validator_1.IsOptional)(),
60
+ (0, class_validator_1.ValidateNested)(),
61
+ (0, class_transformer_1.Type)(() => UserAnalyticsFiltersDTO),
62
+ __metadata("design:type", UserAnalyticsFiltersDTO)
63
+ ], UserAnalyticsRequestDTO.prototype, "filters", void 0);
64
+ __decorate([
65
+ (0, swagger_1.ApiPropertyOptional)({
66
+ description: 'Start date for filtering activity and new users (ISO 8601 format). Filters transactions, claims, redemptions, and user creation dates.',
67
+ example: '2024-01-01T00:00:00Z'
68
+ }),
69
+ (0, class_validator_1.IsOptional)(),
70
+ (0, class_validator_1.IsDateString)(),
71
+ __metadata("design:type", Date)
72
+ ], UserAnalyticsRequestDTO.prototype, "startDate", void 0);
73
+ __decorate([
74
+ (0, swagger_1.ApiPropertyOptional)({
75
+ description: 'End date for filtering activity and new users (ISO 8601 format). Filters transactions, claims, redemptions, and user creation dates.',
76
+ example: '2024-12-31T23:59:59Z'
77
+ }),
78
+ (0, class_validator_1.IsOptional)(),
79
+ (0, class_validator_1.IsDateString)(),
80
+ __metadata("design:type", Date)
81
+ ], UserAnalyticsRequestDTO.prototype, "endDate", void 0);
82
+ /**
83
+ * USER ANALYTICS RESPONSE DTO
84
+ *
85
+ * Aggregated user statistics and metrics.
86
+ * Uses ONLY database-stored data (user, transaction, campaign_user_claim tables).
87
+ *
88
+ * NOTE: Does NOT include blockchain balance data (fetched on-demand via Web3, not stored in DB).
89
+ */
90
+ class UserAnalyticsResponseDTO {
91
+ totalUsers = 0;
92
+ activeUsers = 0;
93
+ newUsers = 0;
94
+ averageTransactionsPerUser = 0;
95
+ averageTransactionAmount = 0;
96
+ totalTransactionVolume = 0;
97
+ averageClaimsPerUser = 0;
98
+ averageRedemptionsPerUser = 0;
99
+ averageTransactionsPerActiveUser = 0;
100
+ averageClaimsPerActiveUser = 0;
101
+ averageRedemptionsPerActiveUser = 0;
102
+ engagementRate = 0;
103
+ periodBreakdown;
104
+ metadata = {};
105
+ }
106
+ exports.UserAnalyticsResponseDTO = UserAnalyticsResponseDTO;
107
+ __decorate([
108
+ (0, swagger_1.ApiProperty)({
109
+ description: 'Total number of registered users (all-time, no date filter applied). Includes all non-deleted users regardless of activity.',
110
+ example: 10523
111
+ }),
112
+ __metadata("design:type", Number)
113
+ ], UserAnalyticsResponseDTO.prototype, "totalUsers", void 0);
114
+ __decorate([
115
+ (0, swagger_1.ApiProperty)({
116
+ description: 'Number of active users - users with ≥1 successful transaction (status=succeeded), completed claim (status=COMPLETED), or completed redemption (status=COMPLETED) within the specified date range. If no date range provided, counts users with any activity ever.',
117
+ example: 3241
118
+ }),
119
+ __metadata("design:type", Number)
120
+ ], UserAnalyticsResponseDTO.prototype, "activeUsers", void 0);
121
+ __decorate([
122
+ (0, swagger_1.ApiProperty)({
123
+ description: 'Number of new users created within the specified date range (filtered by user.createdAt). If no date range provided, equals totalUsers.',
124
+ example: 156
125
+ }),
126
+ __metadata("design:type", Number)
127
+ ], UserAnalyticsResponseDTO.prototype, "newUsers", void 0);
128
+ __decorate([
129
+ (0, swagger_1.ApiProperty)({
130
+ description: 'Average transactions per user across entire user base (total successful transactions in date range ÷ total users). Only counts transactions with status=succeeded, excludes REDEMPTION_SPEND and REDEMPTION_RECEIVE types to prevent double-counting.',
131
+ example: 12.5
132
+ }),
133
+ __metadata("design:type", Number)
134
+ ], UserAnalyticsResponseDTO.prototype, "averageTransactionsPerUser", void 0);
135
+ __decorate([
136
+ (0, swagger_1.ApiProperty)({
137
+ description: 'Average amount per transaction (total transaction volume ÷ transaction count). Only includes successful transactions (status=succeeded) in date range.',
138
+ example: 45.67
139
+ }),
140
+ __metadata("design:type", Number)
141
+ ], UserAnalyticsResponseDTO.prototype, "averageTransactionAmount", void 0);
142
+ __decorate([
143
+ (0, swagger_1.ApiProperty)({
144
+ description: 'Total transaction volume - sum of all successful transaction amounts (status=succeeded) in date range. Excludes REDEMPTION_SPEND and REDEMPTION_RECEIVE types.',
145
+ example: 56789.12
146
+ }),
147
+ __metadata("design:type", Number)
148
+ ], UserAnalyticsResponseDTO.prototype, "totalTransactionVolume", void 0);
149
+ __decorate([
150
+ (0, swagger_1.ApiProperty)({
151
+ description: 'Average claims per user across entire user base (total completed claims in date range ÷ total users). Only counts claims with status=COMPLETED.',
152
+ example: 3.2
153
+ }),
154
+ __metadata("design:type", Number)
155
+ ], UserAnalyticsResponseDTO.prototype, "averageClaimsPerUser", void 0);
156
+ __decorate([
157
+ (0, swagger_1.ApiProperty)({
158
+ description: 'Average redemptions per user across entire user base (total completed redemptions in date range ÷ total users). Only counts redemptions with status=COMPLETED.',
159
+ example: 1.8
160
+ }),
161
+ __metadata("design:type", Number)
162
+ ], UserAnalyticsResponseDTO.prototype, "averageRedemptionsPerUser", void 0);
163
+ __decorate([
164
+ (0, swagger_1.ApiProperty)({
165
+ description: 'Average transactions per active user (total successful transactions in date range ÷ active users in date range). Provides more accurate engagement metric than averageTransactionsPerUser by excluding inactive users.',
166
+ example: 15.3
167
+ }),
168
+ __metadata("design:type", Number)
169
+ ], UserAnalyticsResponseDTO.prototype, "averageTransactionsPerActiveUser", void 0);
170
+ __decorate([
171
+ (0, swagger_1.ApiProperty)({
172
+ description: 'Average claims per active user (total completed claims in date range ÷ active users in date range). Shows claim activity concentrated among engaged users.',
173
+ example: 4.7
174
+ }),
175
+ __metadata("design:type", Number)
176
+ ], UserAnalyticsResponseDTO.prototype, "averageClaimsPerActiveUser", void 0);
177
+ __decorate([
178
+ (0, swagger_1.ApiProperty)({
179
+ description: 'Average redemptions per active user (total completed redemptions in date range ÷ active users in date range). Shows redemption activity concentrated among engaged users.',
180
+ example: 2.1
181
+ }),
182
+ __metadata("design:type", Number)
183
+ ], UserAnalyticsResponseDTO.prototype, "averageRedemptionsPerActiveUser", void 0);
184
+ __decorate([
185
+ (0, swagger_1.ApiProperty)({
186
+ description: 'User engagement rate as percentage (activeUsers ÷ totalUsers × 100). Indicates what percentage of all registered users had activity in the date range.',
187
+ example: 30.79,
188
+ type: 'number'
189
+ }),
190
+ __metadata("design:type", Number)
191
+ ], UserAnalyticsResponseDTO.prototype, "engagementRate", void 0);
192
+ __decorate([
193
+ (0, swagger_1.ApiPropertyOptional)({
194
+ description: 'Breakdown by time period (if requested)',
195
+ type: 'array',
196
+ items: {
197
+ type: 'object',
198
+ properties: {
199
+ date: { type: 'string', example: '2024-01-01' },
200
+ activeUsers: { type: 'number', example: 245 },
201
+ newUsers: { type: 'number', example: 12 }
202
+ }
203
+ }
204
+ }),
205
+ __metadata("design:type", Array)
206
+ ], UserAnalyticsResponseDTO.prototype, "periodBreakdown", void 0);
207
+ __decorate([
208
+ (0, swagger_1.ApiProperty)({
209
+ description: 'Query metadata showing applied filters',
210
+ type: 'object',
211
+ properties: {
212
+ dateRange: {
213
+ type: 'object',
214
+ properties: {
215
+ startDate: { type: 'string', format: 'date-time' },
216
+ endDate: { type: 'string', format: 'date-time' }
217
+ },
218
+ description: 'Applied date range filter (only present if startDate or endDate was provided)'
219
+ }
220
+ }
221
+ }),
222
+ __metadata("design:type", Object)
223
+ ], UserAnalyticsResponseDTO.prototype, "metadata", void 0);
224
+ //# sourceMappingURL=user-analytics.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-analytics.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/analytics/user-analytics.dto.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { CampaignClaimAnalyticsDTO } from './campaign-claim-analytics.dto';
1
+ import { CampaignClaimAnalyticsDTO } from '../analytics/campaign-claim-analytics.dto';
2
2
  import { SortOrder } from '../../enum';
3
3
  import { AnalyticsGroupByType, AnalyticsMetricType, AnalyticsResultItem } from '../../types/analytics.type';
4
4
  import { GroupByExpressionDTO } from '../analytics/group-by-expression.dto';
@@ -57,7 +57,10 @@ export declare class CampaignClaimAnalyticsResponseDTO {
57
57
  results: CampaignClaimAnalyticsResultItem[];
58
58
  totalGroups: number;
59
59
  metadata: {
60
- executionTime: string;
60
+ dateRange?: {
61
+ startDate: Date;
62
+ endDate: Date;
63
+ };
61
64
  };
62
65
  }
63
66
  export type CampaignClaimAnalyticsResultItem = AnalyticsResultItem & {