Difference between revisions of "Scripts/ControlliCDR"

From Wiquipedia
Jump to navigation Jump to search
(Created page with "== Level 2 == Lo script seguente genera comandi cURL e query per il processamento di ricariche che erano state erroneamente marcate come "fantasma". Esso dipende dalla presen...")
 
Line 1: Line 1:
== Level 2 ==
+
== Script per il processamento di CDR non correttamente processati ==
  
 
Lo script seguente genera comandi cURL e query per il processamento di ricariche che erano state erroneamente marcate come "fantasma".
 
Lo script seguente genera comandi cURL e query per il processamento di ricariche che erano state erroneamente marcate come "fantasma".

Revision as of 16:05, 4 May 2021

Script per il processamento di CDR non correttamente processati

Lo script seguente genera comandi cURL e query per il processamento di ricariche che erano state erroneamente marcate come "fantasma". Esso dipende dalla presenza di 3 file:

  • cdr.json: file JSON contenente tutti i CDR che hanno generato errore. E' possibile generarlo con un comando bash sull'output dei log di BigQuery contenente solo le righe contenenti la stringa "CDR:". L'output del comando qui sotto deve poi essere modificato cancellando la virgola finale nell'ultima riga e aggiungendo le parentesi quadre '[' e ']' in modo da renderlo un JSON valido.
  $ cat logs.txt  | sed 's/[^{]*\({.*}\)/\1,/g'
  • sessionid_ricariche_aperte.json: un elenco (array JSON) dei session_id delle ricariche aperte.
  • ricariche_da_chiudere.json: array JSON delle ricariche da chiudere ricavato dall'elenco nel file sessionid_ricariche_aperte.json con la query generata alla riga 37 (da decommentare).

Alla riga 53 (da decommentare) genera una query per recuperare i dati dei voucher degli utenti a cui fanno riferimento le ricariche da chiudere. La cosa può essere utile per verificare se per gli utenti verrà generato o no un debito.

 1 const fs = require('fs');
 2 
 3 function parseFile(filename) {
 4   const rawData = fs.readFileSync(filename);
 5   return JSON.parse(rawData);
 6 }
 7 
 8 const cdrs = parseFile('cdr.json');
 9 
10 const uniqueObjects = cdrs.reduce((arr, e) => {
11   const objString = JSON.stringify(e);
12   if (!arr.includes(objString)) {
13     arr.push(objString);
14   }
15   return arr;
16 }, []).map((e) => {
17   return JSON.parse(e);
18 });
19 
20 const sessionIds = parseFile('sessionid_ricariche_aperte.json');
21 
22 const notProcessedCdrs = uniqueObjects.filter((e) => {
23   return sessionIds.includes(e.session_id);
24 });
25 
26 console.log('Inizio cURL --------\n\n\n');
27 notProcessedCdrs.map((e) => {
28   console.log(`curl --location --request POST 'https://api.readytopark.it/v1/webhooks/charge-detail-record' --header 'Content-Type: application/json' --data-raw '${JSON.stringify(e)}'`);
29   console.log('echo');
30 });
31 console.log('Fine cURL --------\n\n\n');
32 
33 const sessionIdList = notProcessedCdrs.map((e) => {
34   return `'${e.session_id}'`;
35 });
36 
37 //console.log(`db.charges.find({sessionId: {$in: [${sessionIdList}]}}, {sessionId: 1, userId: 1, status: 1})`);
38 
39 const closeableCharges = parseFile('ricariche_da_chiudere.json');
40 const userIds = closeableCharges.map((e) => {
41   let userIdWithNoGhost = e.userId.replace('GHOST_', '');
42   console.log(`db.charges.updateOne({sessionId: '${e.sessionId}'}, {$set: {userId: '${userIdWithNoGhost}'}});`);
43   return `'${userIdWithNoGhost}'`;
44 });
45 
46 const uniqueUserIds = userIds.reduce((arr, e) => {
47   if (!arr.includes(e)) {
48     arr.push(e);
49   }
50   return arr;
51 }, []);
52 
53 //console.log(`db.vouchers.find({user_id: {$in: [${userIds}]}, residual_amount: {$gt: 0}, expiration_date: {$gt: new Date()}}, {user_id:1, residual_amount: 1, expiration_date: 1})`);