enc_U2FsdGVkX19kLf5sjcDqT/e/Ba0m88ldIml2wGMwO27fQ4VxxN126oxbiqImEisPfFDz/WY20Af8mQKg2tVTxg==_enc
enc_U2FsdGVkX1/ciIGIRVQlhDJHEMpnCu+V2d6mFG1aZrSEzY9dRXMSRKexhjKxseFa_enc
enc_U2FsdGVkX1+81H3RPS6pjvZp3pvjBQNCakdkfpLeGzM=_enc
- (13, 8) solde après transaction (utilise un champ personnalisé)
enc_U2FsdGVkX1+FxmiBrpv1XSoNNIQPnKoAsIxowWsQ0AosUdIiPzA0uCgc5de0BkmR_enc
- (6) Données “non match noms” entre nom titulaire et virement reçu -> ajouté à la transaction lorsque ingérée
- (4) présence de ticket avec un certains status et tag -> nouveau computed field
- (2, 20, 13, 6) Utilisation du niveau de risque du customer (global ou pour une selection de règles) -> nouveau computed field
- (2, 3, 13) Volume (entrant, sortant, tout, mais aussi par couples A->B, et par moyen de paiement) moyen, somme, nombre, fréquence sur N jours, on peut mettre N à 1, 3, 5, 7, 15, 30, 45, 60, 90, 120, 180, 270, 365, all, stocker une liste [in, to_abc, card, 1225] mise en cache
- (18) Alerte ouverte sur une institution (ajout external_id sur les instututions ?)
enc_U2FsdGVkX1+II+V8+Zud88b0/OK5QuHZMhot2FDMyVI=_enc
- (19, 16, 14, 7, 18) Matrice de regexes utilisées comme whitelist, blacklist et autre
- (20) Opérations entre variables ex. 45 + date > today
enc_U2FsdGVkX18Au4CN3Kh3XA7LgxjHBpi5o4fcZSo8uRE=_enc
- ❌ (20) Modification de valeurs internes suite à l’évaluation d’une règle (ex. première transaction post 45 jours faite)
enc_U2FsdGVkX19OMMmWuVXTvgsJVuKJFl+CTi3bbOg2/uYEZDaDWeQSSHB7cJcXN6qb_enc
enc_U2FsdGVkX18aPzpD0oicunqMNmK2jogNB9cDaPTE8Acai7+r5E14n7VMTOlkbRYil4wjdvZZlUkRIaH0aihMmoP/awKVRbDGptQDgdOJJuQ=_enc
- key: edge
- type: in, out, both
- period of time: 30, 60, 90, all (4 fields)
- aggregation: sum, max, min, count
- key: node
- type: in, out, both
-
period of time: 1, 3, 7, 15, 30, 45, 60, 90, 180, 365, all (12 fields)
- 1 to 7 days and “all”: updated in realtime (cache transactions, up to 1M transactions total in memory ~ 10mb * replication as transaction has multiple participants)
- 15 to 365 days: updated daily (cron process to read db and compute the values)
- aggregation: sum, max, min, count
180 doubles fields ~ 2kb per node/edge Operations when receiving a transactions, we must be under 200ms:
- Perform authentication (stateless ok)
- Run a compare names
- Run the rules themselves
- Get currencies values (-> on redis)
- Get list of rules to execute (-> could be on redis with a fallback to db)
- Get matrices (-> could be on redis with a fallback to db)
- Save transaction (send it to a queue)
- Get up to 4 customers with all data available (heavy json and can’t be on redis, high perf key-value db ? RocksDb ?)
- Get rolling values
- Computation is slow, big dataset -> cannot be on redis, both high-perf key-value and timeseries to compute mising values ? -> Timeseries will be too slow too probably
enc_U2FsdGVkX19xBwAx6o0df9pyMHtZd69mGaC069PiiWg=_enc
- 900mb RAM for 11M transactions over 100 000 customers
- Format [timestamp, amount, …10 random ints] et temps d’importation 60s environ
- Ex of retrieving a customer transactions (~20K transactions): Number of elements for customer customer_uuid122: 19808 Time redis: 25 ms Time json: 36 ms Sum, avg, max, min, standard déviation for customer customer_uuid122: 99345.02429868079 5.0153990457734645 9.99943153101794 0.0006231945074009 2.8921330350568666 Time: 55 ms