tango-app-api-analysis-traffic 3.8.24 → 3.8.26

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tango-app-api-analysis-traffic",
3
- "version": "3.8.24",
3
+ "version": "3.8.26",
4
4
  "description": "Traffic Analysis",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -39,7 +39,7 @@ export const cardsFunnelV1 = async ( req, res ) => {
39
39
  reqestData.featureConfigs = getClientData.featureConfigs;
40
40
  reqestData.currency = getClientData.paymentInvoice?.currencyType || 'INR';
41
41
  reqestData.revenue = getClientData.averageTransactionValue || '0';
42
- let LamdaURL = 'https://55mojecvuvtphucgsalx5jtyki0untzp.lambda-url.ap-south-1.on.aws/';
42
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).cardsFunnel;
43
43
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
44
44
  if ( resultData ) {
45
45
  if ( resultData.status_code == '200' ) {
@@ -64,7 +64,7 @@ export const cardsGraphsV1 = async ( req, res ) => {
64
64
  return res.sendError( 'Invalid Client Id', 400 );
65
65
  }
66
66
  reqestData.featureConfigs = getClientData.featureConfigs;
67
- let LamdaURL = 'https://xvsz4gd4erdlmvhv33hhyot3ui0xzitq.lambda-url.ap-south-1.on.aws/';
67
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).cardsGraphs;
68
68
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
69
69
  if ( resultData ) {
70
70
  if ( resultData.status_code == '200' ) {
@@ -89,7 +89,7 @@ export const recapVideoV1 = async ( req, res ) => {
89
89
  return res.sendError( 'Invalid Client Id', 400 );
90
90
  }
91
91
  reqestData.featureConfigs = getClientData.featureConfigs;
92
- let LamdaURL = 'https://u7xzph4jkl72sbefz2xx5rjw540rocck.lambda-url.ap-south-1.on.aws/';
92
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).recapVideo;
93
93
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
94
94
  if ( resultData ) {
95
95
  if ( resultData.status_code == '200' ) {
@@ -115,7 +115,7 @@ export const densityDwellV1 = async ( req, res ) => {
115
115
  return res.sendError( 'Invalid Client Id', 400 );
116
116
  }
117
117
  reqestData.featureConfigs = getClientData.featureConfigs;
118
- let LamdaURL = 'https://wh2d4dkgsao5kbwpjxbmchcjja0cxjhv.lambda-url.ap-south-1.on.aws/';
118
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).densityDwellV1;
119
119
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
120
120
  if ( resultData ) {
121
121
  if ( resultData.status_code == '200' ) {
@@ -142,7 +142,7 @@ export const overallCardsV1 = async ( req, res ) => {
142
142
  reqestData.featureConfigs = getClientData.featureConfigs;
143
143
  reqestData.currency = getClientData.paymentInvoice?.currencyType || 'inr';
144
144
  reqestData.revenue = getClientData.averageTransactionValue || '0';
145
- let LamdaURL = 'https://dugu3ghkgalnpaydf2wdjp37240pzcmy.lambda-url.ap-south-1.on.aws/';
145
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).overallCardsV1;
146
146
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
147
147
  if ( resultData ) {
148
148
  if ( resultData.status_code == '200' ) {
@@ -167,7 +167,7 @@ export const overallChartV1 = async ( req, res ) => {
167
167
  return res.sendError( 'Invalid Client Id', 400 );
168
168
  }
169
169
  reqestData.featureConfigs = getClientData.featureConfigs;
170
- let LamdaURL = 'https://wtcllrsyec4iwkx6sg7xi2b7se0seawx.lambda-url.ap-south-1.on.aws/';
170
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).overallChartV1;
171
171
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
172
172
  if ( resultData ) {
173
173
  if ( resultData.status_code == '200' ) {
@@ -192,7 +192,7 @@ export const singleStoreChartV1 = async ( req, res ) => {
192
192
  return res.sendError( 'Invalid Client Id', 400 );
193
193
  }
194
194
  reqestData.featureConfigs = getClientData.featureConfigs;
195
- let LamdaURL = 'https://j2mqa4qhmku3e7htuptsjvpumi0qkhkf.lambda-url.ap-south-1.on.aws/';
195
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).singleStoreChart;
196
196
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
197
197
  if ( resultData ) {
198
198
  if ( resultData.status_code == '200' ) {
@@ -217,7 +217,7 @@ export const demographicChartV1 = async ( req, res ) => {
217
217
  return res.sendError( 'Invalid Client Id', 400 );
218
218
  }
219
219
  reqestData.featureConfigs = getClientData.featureConfigs;
220
- let LamdaURL = 'https://7mslk3sde3m663mrgmwlc4rfou0alphk.lambda-url.ap-south-1.on.aws/';
220
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).demographicChartV1;
221
221
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
222
222
  if ( resultData ) {
223
223
  if ( resultData.status_code == '200' ) {
@@ -242,7 +242,7 @@ export const buyerChartV1 = async ( req, res ) => {
242
242
  return res.sendError( 'Invalid Client Id', 400 );
243
243
  }
244
244
  reqestData.featureConfigs = getClientData.featureConfigs;
245
- let LamdaURL = 'https://2i76wug6swytd7fej3d2fvd2xa0ujxhz.lambda-url.ap-south-1.on.aws/';
245
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).buyerChartV1;
246
246
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
247
247
  if ( resultData ) {
248
248
  if ( resultData.status_code == '200' ) {
@@ -268,9 +268,7 @@ export const footfallDirectoryFoldersV1 = async ( req, res ) => {
268
268
  return res.sendError( 'Invalid Client Id', 400 );
269
269
  }
270
270
  reqestData.featureConfigs = getClientData.featureConfigs;
271
- // Lambda URL resolved dynamically from secret manager (OPENSEARCH config) so test/prod can differ
272
- const openSearch = JSON.parse( process.env.OPENSEARCH );
273
- let LamdaURL = openSearch.revopFootfallDirectory;
271
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).footfallDirectory;
274
272
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
275
273
  if ( resultData ) {
276
274
  if ( resultData.status_code == '200' ) {
@@ -295,9 +293,7 @@ export const footfallDirectoryV1 = async ( req, res ) => {
295
293
  return res.sendError( 'Invalid Client Id', 400 );
296
294
  }
297
295
  reqestData.featureConfigs = getClientData.featureConfigs;
298
- // Lambda URL resolved dynamically from secret manager (OPENSEARCH config) so test/prod can differ
299
- const openSearch = JSON.parse( process.env.OPENSEARCH );
300
- let LamdaURL = openSearch.revopFootfallDirectory;
296
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).footfallDirectory;
301
297
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
302
298
  if ( resultData ) {
303
299
  if ( resultData.status_code == '200' ) {
@@ -322,7 +318,7 @@ export const storeOperationV1 = async ( req, res ) => {
322
318
  return res.sendError( 'Invalid Client Id', 400 );
323
319
  }
324
320
  reqestData.featureConfigs = getClientData.featureConfigs;
325
- let LamdaURL = 'https://mezoc2jy25t73v6eit57s3px6i0hxkwk.lambda-url.ap-south-1.on.aws/';
321
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).storeOperationV1;
326
322
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
327
323
  if ( resultData ) {
328
324
  if ( resultData.status_code == '200' ) {
@@ -347,7 +343,7 @@ export const zoneDwellTimeSplitV1 = async ( req, res ) => {
347
343
  return res.sendError( 'Invalid Client Id', 400 );
348
344
  }
349
345
  reqestData.featureConfigs = getClientData.featureConfigs;
350
- let LamdaURL = 'https://7tfzazsi6lcejnjdzijv7bwg7y0yxhdx.lambda-url.ap-south-1.on.aws/';
346
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).zoneDwellTimeSplitV1;
351
347
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
352
348
  if ( resultData ) {
353
349
  if ( resultData.status_code == '200' ) {
@@ -974,7 +974,7 @@ export async function revoptaggingcount( req, res ) {
974
974
  };
975
975
 
976
976
 
977
- let LamdaURL = 'https://esbkkluar26heq7xeasu4rpw540emgno.lambda-url.ap-south-1.on.aws/';
977
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).footfallCards;
978
978
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
979
979
  if ( resultData ) {
980
980
  if ( resultData.status_code == '200' ) {
@@ -1276,9 +1276,22 @@ export async function storeProcessedData( req, res ) {
1276
1276
  const hit = footfallDirRes?.body?.hits?.hits?.[0];
1277
1277
  receivedfootfall = hit._source.footfallCount;
1278
1278
  ticketStatus = hit?._source?.status;
1279
+ // For accuracy-issue statuses, decide the final status based on the client's
1280
+ // footfallDirectoryConfigs.tangoApproved flag from the client collection.
1281
+ const accuracyIssueStatuses = [ 'Open - Accuracy Issue', 'Closed - Accuracy Issue' ];
1282
+ if ( accuracyIssueStatuses.includes( ticketStatus ) ) {
1283
+ const clientId = `${storeId}`.split( '-' )[0];
1284
+ const clientConfig = await clientService.findOne( { clientId: clientId }, { 'footfallDirectoryConfigs.tangoApproved': 1 } );
1285
+ // If config exists and tangoApproved is true, keep the existing status;
1286
+ // otherwise treat it as 'Closed'.
1287
+ if ( clientConfig?.footfallDirectoryConfigs?.tangoApproved !== true ) {
1288
+ ticketStatus = 'Closed';
1289
+ }
1290
+ }
1279
1291
  } catch ( err ) {
1280
1292
  logger.warn( { message: 'Could not get ticket status from footfallDirectory', error: err } );
1281
1293
  }
1294
+
1282
1295
  // Check if request status ("raised") should be enabled or disabled by querying MongoDB config
1283
1296
  // We'll assume findOnerevopConfig can fetch the record with status for this storeId and dateString
1284
1297
  let raisedStatusEnabled = 'reset'; // default: enabled
@@ -46,7 +46,7 @@ export const cardsFunnelV1 = async ( req, res ) => {
46
46
  reqestData.featureConfigs = getClientData.featureConfigs;
47
47
  reqestData.currency = getClientData.paymentInvoice?.currencyType || 'inr';
48
48
  reqestData.revenue = getClientData.averageTransactionValue || '0';
49
- let LamdaURL = 'https://55mojecvuvtphucgsalx5jtyki0untzp.lambda-url.ap-south-1.on.aws/';
49
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).cardsFunnel;
50
50
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
51
51
  if ( resultData ) {
52
52
  if ( resultData.status_code == '200' ) {
@@ -73,7 +73,7 @@ export const funnelV1 = async ( req, res ) => {
73
73
  reqestData.featureConfigs = getClientData.featureConfigs;
74
74
  reqestData.currency = getClientData.paymentInvoice?.currencyType || 'inr';
75
75
  reqestData.revenue = getClientData.averageTransactionValue || '0';
76
- let LamdaURL = 'https://k3mv4jr6w7er4tn3ku2kkdgdha0ovyog.lambda-url.ap-south-1.on.aws/';
76
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).funnelV1;
77
77
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
78
78
  if ( resultData ) {
79
79
  if ( resultData.status_code == '200' ) {
@@ -98,7 +98,7 @@ export const cardsGraphsV1 = async ( req, res ) => {
98
98
  return res.sendError( 'Invalid Client Id', 400 );
99
99
  }
100
100
  reqestData.featureConfigs = getClientData.featureConfigs;
101
- let LamdaURL = 'https://xvsz4gd4erdlmvhv33hhyot3ui0xzitq.lambda-url.ap-south-1.on.aws/';
101
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).cardsGraphs;
102
102
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
103
103
  if ( resultData ) {
104
104
  if ( resultData.status_code == '200' ) {
@@ -123,7 +123,7 @@ export const recapVideoV1 = async ( req, res ) => {
123
123
  return res.sendError( 'Invalid Client Id', 400 );
124
124
  }
125
125
  reqestData.featureConfigs = getClientData.featureConfigs;
126
- let LamdaURL = 'https://u7xzph4jkl72sbefz2xx5rjw540rocck.lambda-url.ap-south-1.on.aws/';
126
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).recapVideo;
127
127
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
128
128
  if ( resultData ) {
129
129
  if ( resultData.status_code == '200' ) {
@@ -149,7 +149,7 @@ export const densityDwellV1 = async ( req, res ) => {
149
149
  return res.sendError( 'Invalid Client Id', 400 );
150
150
  }
151
151
  reqestData.featureConfigs = getClientData.featureConfigs;
152
- let LamdaURL = 'https://wh2d4dkgsao5kbwpjxbmchcjja0cxjhv.lambda-url.ap-south-1.on.aws/';
152
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).densityDwellV1;
153
153
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
154
154
  if ( resultData ) {
155
155
  if ( resultData.status_code == '200' ) {
@@ -176,7 +176,7 @@ export const overallCardsV1 = async ( req, res ) => {
176
176
  reqestData.featureConfigs = getClientData.featureConfigs;
177
177
  reqestData.currency = getClientData.paymentInvoice?.currencyType || 'inr';
178
178
  reqestData.revenue = getClientData.averageTransactionValue || '0';
179
- let LamdaURL = 'https://dugu3ghkgalnpaydf2wdjp37240pzcmy.lambda-url.ap-south-1.on.aws/';
179
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).overallCardsV1;
180
180
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
181
181
  if ( resultData ) {
182
182
  if ( resultData.status_code == '200' ) {
@@ -202,7 +202,7 @@ export const overallHourlyChartV1 = async ( req, res ) => {
202
202
  return res.sendError( 'Invalid Client Id', 400 );
203
203
  }
204
204
  reqestData.featureConfigs = getClientData.featureConfigs;
205
- let LamdaURL = 'https://p3xcs56mkjj4sfugvsibhyto3i0gdbda.lambda-url.ap-south-1.on.aws/';
205
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).overallHourlyChartV1;
206
206
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
207
207
  if ( resultData ) {
208
208
  if ( resultData.status_code == '200' ) {
@@ -227,7 +227,7 @@ export const overallChartV1 = async ( req, res ) => {
227
227
  return res.sendError( 'Invalid Client Id', 400 );
228
228
  }
229
229
  reqestData.featureConfigs = getClientData.featureConfigs;
230
- let LamdaURL = 'https://wtcllrsyec4iwkx6sg7xi2b7se0seawx.lambda-url.ap-south-1.on.aws/';
230
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).overallChartV1;
231
231
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
232
232
  if ( resultData ) {
233
233
  if ( resultData.status_code == '200' ) {
@@ -252,7 +252,7 @@ export const singleStoreChartV1 = async ( req, res ) => {
252
252
  return res.sendError( 'Invalid Client Id', 400 );
253
253
  }
254
254
  reqestData.featureConfigs = getClientData.featureConfigs;
255
- let LamdaURL = 'https://j2mqa4qhmku3e7htuptsjvpumi0qkhkf.lambda-url.ap-south-1.on.aws/';
255
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).singleStoreChart;
256
256
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
257
257
  if ( resultData ) {
258
258
  if ( resultData.status_code == '200' ) {
@@ -277,7 +277,7 @@ export const demographicChartV1 = async ( req, res ) => {
277
277
  return res.sendError( 'Invalid Client Id', 400 );
278
278
  }
279
279
  reqestData.featureConfigs = getClientData.featureConfigs;
280
- let LamdaURL = 'https://7mslk3sde3m663mrgmwlc4rfou0alphk.lambda-url.ap-south-1.on.aws/';
280
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).demographicChartV1;
281
281
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
282
282
  if ( resultData ) {
283
283
  if ( resultData.status_code == '200' ) {
@@ -302,7 +302,7 @@ export const buyerChartV1 = async ( req, res ) => {
302
302
  return res.sendError( 'Invalid Client Id', 400 );
303
303
  }
304
304
  reqestData.featureConfigs = getClientData.featureConfigs;
305
- let LamdaURL = 'https://2i76wug6swytd7fej3d2fvd2xa0ujxhz.lambda-url.ap-south-1.on.aws/';
305
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).buyerChartV1;
306
306
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
307
307
  if ( resultData ) {
308
308
  if ( resultData.status_code == '200' ) {
@@ -328,9 +328,7 @@ export const footfallDirectoryFoldersV1 = async ( req, res ) => {
328
328
  return res.sendError( 'Invalid Client Id', 400 );
329
329
  }
330
330
  reqestData.featureConfigs = getClientData.featureConfigs;
331
- // Lambda URL resolved dynamically from secret manager (OPENSEARCH config) so test/prod can differ
332
- const openSearch = JSON.parse( process.env.OPENSEARCH );
333
- let LamdaURL = openSearch.revopFootfallDirectory;
331
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).footfallDirectory;
334
332
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
335
333
  if ( resultData ) {
336
334
  if ( resultData.status_code == '200' ) {
@@ -355,9 +353,7 @@ export const footfallDirectoryV1 = async ( req, res ) => {
355
353
  return res.sendError( 'Invalid Client Id', 400 );
356
354
  }
357
355
  reqestData.featureConfigs = getClientData.featureConfigs;
358
- // Lambda URL resolved dynamically from secret manager (OPENSEARCH config) so test/prod can differ
359
- const openSearch = JSON.parse( process.env.OPENSEARCH );
360
- let LamdaURL = openSearch.revopFootfallDirectory;
356
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).footfallDirectory;
361
357
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
362
358
  if ( resultData ) {
363
359
  if ( resultData.status_code == '200' ) {
@@ -382,7 +378,7 @@ export const summaryTableV1 = async ( req, res ) => {
382
378
  return res.sendError( 'Invalid Client Id', 400 );
383
379
  }
384
380
  reqestData.featureConfigs = getClientData.featureConfigs;
385
- let LamdaURL = 'https://fpmvquqpi7xw6hpaalxa5oa6pi0cvbql.lambda-url.ap-south-1.on.aws/';
381
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).summaryTableV1;
386
382
  let resultData;
387
383
  if ( reqestData.export ) {
388
384
  let limit = 10000;
@@ -462,7 +458,7 @@ export const footfallTrendV1 = async ( req, res ) => {
462
458
  return res.sendError( 'Invalid Client Id', 400 );
463
459
  }
464
460
  reqestData.featureConfigs = getClientData.featureConfigs;
465
- let LamdaURL = 'https://l5uacls7kfyham5d7pd3i6c6pq0pflem.lambda-url.ap-south-1.on.aws/';
461
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).footfallTrendV1;
466
462
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
467
463
  if ( resultData ) {
468
464
  if ( resultData.status_code == '200' ) {
@@ -487,7 +483,7 @@ export const storeOperationV1 = async ( req, res ) => {
487
483
  return res.sendError( 'Invalid Client Id', 400 );
488
484
  }
489
485
  reqestData.featureConfigs = getClientData.featureConfigs;
490
- let LamdaURL = 'https://mezoc2jy25t73v6eit57s3px6i0hxkwk.lambda-url.ap-south-1.on.aws/';
486
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).storeOperationV1;
491
487
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
492
488
  if ( resultData ) {
493
489
  if ( resultData.status_code == '200' ) {
@@ -512,7 +508,7 @@ export const performanceMatrixV1 = async ( req, res ) => {
512
508
  return res.sendError( 'Invalid Client Id', 400 );
513
509
  }
514
510
  reqestData.featureConfigs = getClientData.featureConfigs;
515
- let LamdaURL = 'https://5l3pjpivqpyboludmbridailpu0axrov.lambda-url.ap-south-1.on.aws/';
511
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).performanceMatrixV1;
516
512
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
517
513
  if ( resultData ) {
518
514
  if ( resultData.status_code == '200' ) {
@@ -561,7 +557,7 @@ export const zoneDwellTimeSplitV1 = async ( req, res ) => {
561
557
  return res.sendError( 'Invalid Client Id', 400 );
562
558
  }
563
559
  reqestData.featureConfigs = getClientData.featureConfigs;
564
- let LamdaURL = 'https://7tfzazsi6lcejnjdzijv7bwg7y0yxhdx.lambda-url.ap-south-1.on.aws/';
560
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).zoneDwellTimeSplitV1;
565
561
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
566
562
  if ( resultData ) {
567
563
  if ( resultData.status_code == '200' ) {
@@ -1943,7 +1939,7 @@ export const getStoreMapData = async ( req, res ) => {
1943
1939
  'openTime': '',
1944
1940
  'closeTime': '',
1945
1941
  };
1946
- let hourlyLamdaURL = 'https://ksxkjnhwwzvrgp7ngttw2ribsy0twqip.lambda-url.ap-south-1.on.aws/';
1942
+ let hourlyLamdaURL = JSON.parse( process.env.LAMBDAURL ).storeMapHourly;
1947
1943
  let hourlyResultData = await LamdaServiceCall( hourlyLamdaURL, reqestData );
1948
1944
  if ( hourlyResultData && hourlyResultData.hourData.length > 0 ) {
1949
1945
  hourlyData.hourlyFootfall = hourlyResultData.hourData[0].hourlyFootfall;
@@ -1952,7 +1948,7 @@ export const getStoreMapData = async ( req, res ) => {
1952
1948
  }
1953
1949
  let fromDate = new Date( dayjs( reqestData.fromDate ).subtract( 30, 'days' ) );
1954
1950
  reqestData.fromDate = dayjs( fromDate ).format( 'YYYY-MM-DD' );
1955
- let footfallLamdaURL = 'https://3ircml3r6dm7fbiif3ti2wwdee0zqhyb.lambda-url.ap-south-1.on.aws/';
1951
+ let footfallLamdaURL = JSON.parse( process.env.LAMBDAURL ).storeMapFootfallV1;
1956
1952
  let footfallResultData = await LamdaServiceCall( footfallLamdaURL, reqestData );
1957
1953
  if ( footfallResultData && footfallResultData.avgData && footfallResultData.avgData.length > 0 ) {
1958
1954
  avgData.avgFootfall = footfallResultData.avgData[0].avgFootfall;
@@ -47,7 +47,7 @@ export const cardsFunnelV3 = async ( req, res ) => {
47
47
  reqestData.featureConfigs = getClientData.featureConfigs;
48
48
  reqestData.currency = getClientData.paymentInvoice?.currencyType || 'inr';
49
49
  reqestData.revenue = getClientData.averageTransactionValue || '0';
50
- let LamdaURL = 'https://55mojecvuvtphucgsalx5jtyki0untzp.lambda-url.ap-south-1.on.aws/';
50
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).cardsFunnel;
51
51
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
52
52
  if ( resultData ) {
53
53
  if ( resultData.status_code == '200' ) {
@@ -73,7 +73,7 @@ export const footfallCardsV3 = async ( req, res ) => {
73
73
  reqestData.featureConfigs = getClientData.featureConfigs;
74
74
  reqestData.currency = getClientData.paymentInvoice?.currencyType || 'inr';
75
75
  reqestData.revenue = getClientData.averageTransactionValue || '0';
76
- let LamdaURL = 'https://esbkkluar26heq7xeasu4rpw540emgno.lambda-url.ap-south-1.on.aws/';
76
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).footfallCards;
77
77
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
78
78
  if ( resultData ) {
79
79
  if ( resultData.status_code == '200' ) {
@@ -100,7 +100,7 @@ export const conversionCardsV3 = async ( req, res ) => {
100
100
  reqestData.featureConfigs = getClientData.featureConfigs;
101
101
  reqestData.currency = getClientData.paymentInvoice?.currencyType || 'inr';
102
102
  reqestData.revenue = getClientData.averageTransactionValue || '0';
103
- let LamdaURL = 'https://shi4an3zee5kvaiqfgslwjrupq0srglf.lambda-url.ap-south-1.on.aws/';
103
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).conversionCards;
104
104
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
105
105
  if ( resultData ) {
106
106
  if ( resultData.status_code == '200' ) {
@@ -127,7 +127,7 @@ export const bouncedCardsV3 = async ( req, res ) => {
127
127
  reqestData.featureConfigs = getClientData.featureConfigs;
128
128
  reqestData.currency = getClientData.paymentInvoice?.currencyType || 'inr';
129
129
  reqestData.revenue = getClientData.averageTransactionValue || '0';
130
- let LamdaURL = 'https://erl72d2pdhzm6nbqjxz6e4clfq0crscz.lambda-url.ap-south-1.on.aws/';
130
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).bouncedCards;
131
131
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
132
132
  if ( resultData ) {
133
133
  if ( resultData.status_code == '200' ) {
@@ -154,7 +154,7 @@ export const engagersCardsV3 = async ( req, res ) => {
154
154
  reqestData.featureConfigs = getClientData.featureConfigs;
155
155
  reqestData.currency = getClientData.paymentInvoice?.currencyType || 'inr';
156
156
  reqestData.revenue = getClientData.averageTransactionValue || '0';
157
- let LamdaURL = 'https://3tlnlx2dt6bmizq6pvtsqn3bdi0rexxd.lambda-url.ap-south-1.on.aws/';
157
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).engagersCards;
158
158
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
159
159
  if ( resultData ) {
160
160
  if ( resultData.status_code == '200' ) {
@@ -183,7 +183,7 @@ export const missedOpportunityCardsV3 = async ( req, res ) => {
183
183
  reqestData.revenue = getClientData.averageTransactionValue || '0';
184
184
 
185
185
  reqestData.currency = '$';
186
- const LamdaURL = 'https://jalzliwbr73k4qqxqtucrvhucu0cwlek.lambda-url.ap-south-1.on.aws/';
186
+ const LamdaURL = JSON.parse( process.env.LAMBDAURL ).missedOpportunityCards;
187
187
  if ( reqestData.country && reqestData.country.length > 1 ) {
188
188
  let storeList=[
189
189
  { $match: {
@@ -700,7 +700,7 @@ export const potentialBuyersCardsV3 = async ( req, res ) => {
700
700
  reqestData.featureConfigs = getClientData.featureConfigs;
701
701
  reqestData.currency = getClientData.paymentInvoice?.currencyType || 'inr';
702
702
  reqestData.revenue = getClientData.averageTransactionValue || '0';
703
- let LamdaURL = 'https://msaihofnk3esvzem6gex2tgnky0exize.lambda-url.ap-south-1.on.aws/';
703
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).potentialBuyersCards;
704
704
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
705
705
  if ( resultData ) {
706
706
  if ( resultData.status_code == '200' ) {
@@ -727,7 +727,7 @@ export const potentialBuyersDistributionCardsV3 = async ( req, res ) => {
727
727
  reqestData.featureConfigs = getClientData.featureConfigs;
728
728
  reqestData.currency = getClientData.paymentInvoice?.currencyType || 'inr';
729
729
  reqestData.revenue = getClientData.averageTransactionValue || '0';
730
- let LamdaURL = 'https://a42c5clrhcre5ploce6vpri6a40wjzya.lambda-url.ap-south-1.on.aws/';
730
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).potentialBuyersDistributionCards;
731
731
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
732
732
  if ( resultData ) {
733
733
  if ( resultData.status_code == '200' ) {
@@ -754,7 +754,7 @@ export const funnelV3 = async ( req, res ) => {
754
754
  reqestData.featureConfigs = getClientData.featureConfigs;
755
755
  reqestData.currency = getClientData.paymentInvoice?.currencyType || 'inr';
756
756
  reqestData.revenue = getClientData.averageTransactionValue || '0';
757
- let LamdaURL = 'https://oeewcchsgznkfr5qwgjtdj4vhu0amilj.lambda-url.ap-south-1.on.aws/';
757
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).funnelV3;
758
758
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
759
759
  if ( resultData ) {
760
760
  if ( resultData.status_code == '200' ) {
@@ -779,7 +779,7 @@ export const cardsGraphsV3 = async ( req, res ) => {
779
779
  return res.sendError( 'Invalid Client Id', 400 );
780
780
  }
781
781
  reqestData.featureConfigs = getClientData.featureConfigs;
782
- let LamdaURL = 'https://xvsz4gd4erdlmvhv33hhyot3ui0xzitq.lambda-url.ap-south-1.on.aws/';
782
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).cardsGraphs;
783
783
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
784
784
  if ( resultData ) {
785
785
  if ( resultData.status_code == '200' ) {
@@ -804,7 +804,7 @@ export const recapVideoV3 = async ( req, res ) => {
804
804
  return res.sendError( 'Invalid Client Id', 400 );
805
805
  }
806
806
  reqestData.featureConfigs = getClientData.featureConfigs;
807
- let LamdaURL = 'https://u7xzph4jkl72sbefz2xx5rjw540rocck.lambda-url.ap-south-1.on.aws/';
807
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).recapVideo;
808
808
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
809
809
  if ( resultData ) {
810
810
  if ( resultData.status_code == '200' ) {
@@ -830,7 +830,7 @@ export const densityDwellV3 = async ( req, res ) => {
830
830
  return res.sendError( 'Invalid Client Id', 400 );
831
831
  }
832
832
  reqestData.featureConfigs = getClientData.featureConfigs;
833
- let LamdaURL = 'https://ngpc433lad5wm7ympgbvaspjz40syfvx.lambda-url.ap-south-1.on.aws/';
833
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).densityDwellV3;
834
834
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
835
835
  if ( resultData ) {
836
836
  if ( resultData.status_code == '200' ) {
@@ -856,7 +856,7 @@ export const trafficDensityDwellV3 = async ( req, res ) => {
856
856
  return res.sendError( 'Invalid Client Id', 400 );
857
857
  }
858
858
  reqestData.featureConfigs = getClientData.featureConfigs;
859
- let LamdaURL = 'https://k4rgegdcvf2hjpey4v5igrlcaq0dcadd.lambda-url.ap-south-1.on.aws/';
859
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).trafficDensityDwell;
860
860
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
861
861
  if ( resultData ) {
862
862
  if ( resultData.status_code == '200' ) {
@@ -886,7 +886,7 @@ export const overallCardsV3 = async ( req, res ) => {
886
886
  reqestData.currency = '$';
887
887
 
888
888
 
889
- let LamdaURL = 'https://s3wltaeo66nbj7udu5qraqqqvu0dhqao.lambda-url.ap-south-1.on.aws/';
889
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).overallCardsV3;
890
890
 
891
891
  if ( reqestData.processType == 'missedOpportunity' ) {
892
892
  if ( reqestData.country && reqestData.country.length > 1 ) {
@@ -1245,7 +1245,7 @@ export const overallHourlyChartV3 = async ( req, res ) => {
1245
1245
  return res.sendError( 'Invalid Client Id', 400 );
1246
1246
  }
1247
1247
  reqestData.featureConfigs = getClientData.featureConfigs;
1248
- let LamdaURL = 'https://okpiyyhjvzbopvufnburhf3ase0hjfnl.lambda-url.ap-south-1.on.aws/';
1248
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).overallHourlyChartV3;
1249
1249
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
1250
1250
  if ( resultData ) {
1251
1251
  if ( resultData.status_code == '200' ) {
@@ -1270,7 +1270,7 @@ export const overallChartV3 = async ( req, res ) => {
1270
1270
  return res.sendError( 'Invalid Client Id', 400 );
1271
1271
  }
1272
1272
  reqestData.featureConfigs = getClientData.featureConfigs;
1273
- let LamdaURL = 'https://eboa7d5kzefml2srjo567sbxoe0bzmog.lambda-url.ap-south-1.on.aws/';
1273
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).overallChartV3;
1274
1274
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
1275
1275
  if ( resultData ) {
1276
1276
  if ( resultData.status_code == '200' ) {
@@ -1295,7 +1295,7 @@ export const singleStoreChartV3 = async ( req, res ) => {
1295
1295
  return res.sendError( 'Invalid Client Id', 400 );
1296
1296
  }
1297
1297
  reqestData.featureConfigs = getClientData.featureConfigs;
1298
- let LamdaURL = 'https://j2mqa4qhmku3e7htuptsjvpumi0qkhkf.lambda-url.ap-south-1.on.aws/';
1298
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).singleStoreChart;
1299
1299
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
1300
1300
  if ( resultData ) {
1301
1301
  if ( resultData.status_code == '200' ) {
@@ -1320,7 +1320,7 @@ export const demographicChartV3 = async ( req, res ) => {
1320
1320
  return res.sendError( 'Invalid Client Id', 400 );
1321
1321
  }
1322
1322
  reqestData.featureConfigs = getClientData.featureConfigs;
1323
- let LamdaURL = 'https://nxn2syqb7f2dnyglsrmm6my2tq0anzut.lambda-url.ap-south-1.on.aws/';
1323
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).demographicChartV3;
1324
1324
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
1325
1325
  if ( resultData ) {
1326
1326
  if ( resultData.status_code == '200' ) {
@@ -1345,7 +1345,7 @@ export const buyerChartV3 = async ( req, res ) => {
1345
1345
  return res.sendError( 'Invalid Client Id', 400 );
1346
1346
  }
1347
1347
  reqestData.featureConfigs = getClientData.featureConfigs;
1348
- let LamdaURL = 'https://pxb5cgr7t46yopqbsibr7h4sae0misme.lambda-url.ap-south-1.on.aws/';
1348
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).buyerChartV3;
1349
1349
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
1350
1350
  if ( resultData ) {
1351
1351
  if ( resultData.status_code == '200' ) {
@@ -1371,9 +1371,7 @@ export const footfallDirectoryFoldersV3 = async ( req, res ) => {
1371
1371
  return res.sendError( 'Invalid Client Id', 400 );
1372
1372
  }
1373
1373
  reqestData.featureConfigs = getClientData.featureConfigs;
1374
- // Lambda URL resolved dynamically from secret manager (OPENSEARCH config) so test/prod can differ
1375
- const openSearch = JSON.parse( process.env.OPENSEARCH );
1376
- let LamdaURL = openSearch.revopFootfallDirectory;
1374
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).footfallDirectory;
1377
1375
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
1378
1376
  if ( resultData ) {
1379
1377
  if ( resultData.status_code == '200' ) {
@@ -1398,9 +1396,7 @@ export const footfallDirectoryV3 = async ( req, res ) => {
1398
1396
  return res.sendError( 'Invalid Client Id', 400 );
1399
1397
  }
1400
1398
  reqestData.featureConfigs = getClientData.featureConfigs;
1401
- // Lambda URL resolved dynamically from secret manager (OPENSEARCH config) so test/prod can differ
1402
- const openSearch = JSON.parse( process.env.OPENSEARCH );
1403
- let LamdaURL = openSearch.revopFootfallDirectory;
1399
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).footfallDirectory;
1404
1400
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
1405
1401
  if ( resultData ) {
1406
1402
  if ( resultData.status_code == '200' ) {
@@ -1437,20 +1433,22 @@ export const summaryTableV3 = async ( req, res ) => {
1437
1433
  if ( !getClientData ) {
1438
1434
  return res.sendError( 'Invalid Client Id', 400 );
1439
1435
  }
1440
- // Footfall-only view defaults to the client-level config. Store 455-26
1441
- // (client 455) is an exception: when it is the only selected store it must
1442
- // show the full columns, so force the footfall-only view off for it.
1436
+ // Footfall-only view defaults to the client-level config. Traffic-project
1437
+ // stores (client 455) are an exception: when every selected store is a
1438
+ // traffic store they must show the full columns, so force the
1439
+ // footfall-only view off for them.
1440
+ const trafficStores = [ '455-26', '455-38', '455-10', '455-39', '455-88', '455-2' ];
1443
1441
  let isFootfallView = getClientData?.featureConfigs?.isFootfallView;
1444
1442
  if (
1445
1443
  reqestData.clientId === '455' &&
1446
1444
  Array.isArray( reqestData.storeId ) &&
1447
- reqestData.storeId.length === 1 &&
1448
- reqestData.storeId[0] === '455-26'
1445
+ reqestData.storeId.length > 0 &&
1446
+ reqestData.storeId.every( ( storeId ) => trafficStores.includes( storeId ) )
1449
1447
  ) {
1450
1448
  isFootfallView = false;
1451
1449
  }
1452
1450
  reqestData.featureConfigs = getClientData.featureConfigs;
1453
- let LamdaURL = 'https://ewen2vlmxmhieea4elztlbjuey0ddqee.lambda-url.ap-south-1.on.aws/';
1451
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).summaryTableV3;
1454
1452
  let resultData;
1455
1453
 
1456
1454
  if ( reqestData.export ) {
@@ -1619,7 +1617,7 @@ export const footfallTrendV3 = async ( req, res ) => {
1619
1617
  return res.sendError( 'Invalid Client Id', 400 );
1620
1618
  }
1621
1619
  reqestData.featureConfigs = getClientData.featureConfigs;
1622
- let LamdaURL = 'https://x6sjlqwaqd64kyioxhwrwfesbm0jjitx.lambda-url.ap-south-1.on.aws/';
1620
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).footfallTrendV3;
1623
1621
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
1624
1622
  if ( resultData ) {
1625
1623
  if ( resultData.status_code == '200' ) {
@@ -1644,7 +1642,7 @@ export const storeOperationV3 = async ( req, res ) => {
1644
1642
  return res.sendError( 'Invalid Client Id', 400 );
1645
1643
  }
1646
1644
  reqestData.featureConfigs = getClientData.featureConfigs;
1647
- let LamdaURL = 'https://zaia7oxlhcl3zy3hzj6u232khu0uxenh.lambda-url.ap-south-1.on.aws/';
1645
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).storeOperationV3;
1648
1646
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
1649
1647
  if ( resultData ) {
1650
1648
  if ( resultData.status_code == '200' ) {
@@ -1669,7 +1667,7 @@ export const performanceMatrixV3 = async ( req, res ) => {
1669
1667
  return res.sendError( 'Invalid Client Id', 400 );
1670
1668
  }
1671
1669
  reqestData.featureConfigs = getClientData.featureConfigs;
1672
- let LamdaURL = 'https://lphw4gkzybkimpph33ealbaree0fqibw.lambda-url.ap-south-1.on.aws/';
1670
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).performanceMatrixV3;
1673
1671
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
1674
1672
  if ( resultData ) {
1675
1673
  if ( resultData.status_code == '200' ) {
@@ -1755,7 +1753,7 @@ export const zoneDwellTimeSplitV3 = async ( req, res ) => {
1755
1753
  return res.sendError( 'Invalid Client Id', 400 );
1756
1754
  }
1757
1755
  reqestData.featureConfigs = getClientData.featureConfigs;
1758
- let LamdaURL = 'https://t3qlfgi6c7b4rkcozqq3ityn7a0wcsaq.lambda-url.ap-south-1.on.aws/';
1756
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).zoneDwellTimeSplitV3;
1759
1757
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
1760
1758
  if ( resultData ) {
1761
1759
  if ( resultData.status_code == '200' ) {
@@ -3074,7 +3072,7 @@ export const getStoreMapDataV3 = async ( req, res ) => {
3074
3072
  'openTime': '',
3075
3073
  'closeTime': '',
3076
3074
  };
3077
- let hourlyLamdaURL = 'https://ksxkjnhwwzvrgp7ngttw2ribsy0twqip.lambda-url.ap-south-1.on.aws/';
3075
+ let hourlyLamdaURL = JSON.parse( process.env.LAMBDAURL ).storeMapHourly;
3078
3076
  let hourlyResultData = await LamdaServiceCall( hourlyLamdaURL, reqestData );
3079
3077
  if ( hourlyResultData && hourlyResultData?.hourData?.length>0 ) {
3080
3078
  hourlyData.hourlyFootfall = hourlyResultData.hourData?.[0]?.hourlyFootfall;
@@ -3083,7 +3081,7 @@ export const getStoreMapDataV3 = async ( req, res ) => {
3083
3081
  }
3084
3082
  let fromDate = new Date( dayjs( reqestData.fromDate ).subtract( 30, 'days' ) );
3085
3083
  reqestData.fromDate = dayjs( fromDate ).format( 'YYYY-MM-DD' );
3086
- let footfallLamdaURL = 'https://z3pzvj23qgvqkfixbwvdp2hlw40nexbf.lambda-url.ap-south-1.on.aws/';
3084
+ let footfallLamdaURL = JSON.parse( process.env.LAMBDAURL ).storeMapFootfallV3;
3087
3085
  let footfallResultData = await LamdaServiceCall( footfallLamdaURL, reqestData );
3088
3086
  if ( footfallResultData && footfallResultData?.avgData&&footfallResultData?.avgData?.length>0 ) {
3089
3087
  avgData.avgFootfall = footfallResultData.avgData?.[0]?.avgFootfall;
@@ -3108,7 +3106,7 @@ export const managerTrafficDensityExport = async ( req, res ) => {
3108
3106
  return res.sendError( 'Invalid Client Id', 400 );
3109
3107
  }
3110
3108
  reqestData.featureConfigs = getClientData.featureConfigs;
3111
- let LamdaURL = 'https://bkmqop3brhzloib2bik3hn7xey0uadas.lambda-url.ap-south-1.on.aws/';
3109
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).managerTrafficDensityExport;
3112
3110
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
3113
3111
  let resultDataValue = resultData.data;
3114
3112
  if ( resultData ) {
@@ -3153,7 +3151,7 @@ export const getStoreListv2 = async ( req, res ) => {
3153
3151
  return res.sendError( 'Invalid Client Id', 400 );
3154
3152
  }
3155
3153
  reqestData.featureConfigs = getClientData.featureConfigs;
3156
- let LamdaURL = 'https://nmnnlq3ie65bljcvxauhxmsrpa0edhfa.lambda-url.ap-south-1.on.aws/';
3154
+ let LamdaURL = JSON.parse( process.env.LAMBDAURL ).getStoreList;
3157
3155
  let resultData = await LamdaServiceCall( LamdaURL, reqestData );
3158
3156
  if ( resultData ) {
3159
3157
  if ( resultData.status_code == '200' ) {