Bueeeeno se;ores!!! Pues ya esta todo hecho!!! A falta de pulir algunas de las cosas ya tengo el proceso que capta todas las transacciones de los bancos que tengo en este momento (Revolut y Caixa, pronto voy a a;adir el Santander), que felicidad joder. Toda la mierda que he hecho desde el principio como el plugin para gradle para las dependencias, mejorar ocean y el workspace (aunque luego me fui DEMASIADO por las ramas y empece a aprender Rust), toda la investigacion sobre los providers, Tink etc... ha dado por fin su fruto.
Tengo un container de docker con una JVM que rula 2 tareas cada 3 horas:
- BankingDataFetcherProcess: Llama a Tink con todos los bancos configurados y usa los credenciales que obtiene el otro proceso. Esto se hace cada 3 horas. Con cada transaccion llama al BankerService que es el que se encarga de almacenar las cosas en la base de datos. Y tambien maneja el no insertar transacciones que ya esten en la base de datos!
- OpenBankingCredentialsProcess: Se encarga de actualizar los credenciales que va a usar el Fetcher, cada 3 horas. Los credenciales que te dan tienen una duracion de 24 horas, asi que tendria que fallar 8 veces para quedarme sin credenciales (espero que esto no pase lmao)
Como prueba, aunque los logs siguen siendo una mierda:
2020-10-18 18:41:44.897 [DefaultQuartzScheduler_Worker-2] INFO io.ktor.client.HttpClient - BODY Content-Type: application/json
2020-10-18 18:41:44.897 [DefaultQuartzScheduler_Worker-2] INFO io.ktor.client.HttpClient - BODY START
2020-10-18 18:41:45.088 [DefaultQuartzScheduler_Worker-1] INFO io.ktor.client.HttpClient - RESPONSE: 200 OK
2020-10-18 18:41:45.090 [DefaultQuartzScheduler_Worker-1] INFO io.ktor.client.HttpClient - METHOD: HttpMethod(value=POST)
2020-10-18 18:41:45.090 [DefaultQuartzScheduler_Worker-1] INFO io.ktor.client.HttpClient - FROM: https://api.tink.com/api/v1/oauth/token
2020-10-18 18:41:45.091 [DefaultQuartzScheduler_Worker-1] INFO io.ktor.client.HttpClient - COMMON HEADERS
2020-10-18 18:41:45.091 [DefaultQuartzScheduler_Worker-1] INFO io.ktor.client.HttpClient - -> date: Sun, 18 Oct 2020 18:41:45 GMT
2020-10-18 18:41:45.091 [DefaultQuartzScheduler_Worker-1] INFO io.ktor.client.HttpClient - -> content-type: application/json
...
Sending transaction 0a2fe138d8f241c28f4e8dda4xxxxxxxx
Sending transaction 09c48535da2a4afdb6058333xxxxxxxx
Sending transaction 0663f04f8c854fa7a3e69857xxxxxxxx
Sending transaction 01253daf2a574f709e96f4ecxxxxxxxxx
2020-10-18 18:42:30.263 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG o.quartz.core.QuartzSchedulerThread - batch acquisition of 0 triggers
select bank, date from banker.transactions
Caixa,2020-04-30
Caixa,2020-05-01
Revolut,2020-05-01
Revolut,2020-05-03
Revolut,2020-05-07
Quedan 3 cositas por pulir:
- Logs, he de pulir un poquito los logs y no hacer print de absolutamente todo lol (aunque no creo que se generen mas de 15-20k diarios, asi qe no me voy a quedar sin espacio)
- Por ahora hace fetch de todas las transacciones desde una fecha X (que es cuando hice el dump de todos los bancos e inserte transacciones a mano)
- El deployment todavia falla si esta el contenedor corriendo, pero es algo menor no creo que haga muchos deploys de esto.
Lo siguiente es Grafana para la visualizacion de los datos y para predicciones y ver que los datos en la bbdd sean los correctos. Pero esto creo que va a tener que esperar un poco, que he tenido demasiado este finde, con esto y el Two Point Hospital xDDD