Skip to content

afaq666/GlobantReto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Arquitectura:

                       +----------------------+
                       |     Kafka Eventos:   |
                       |  TransaccionCreada   |
                       |  TransaccionAprobada |
                       |  TransaccionDenegada |
                       +----------+-----------+
                                /|\
                                 |
                +----------------+----------------+
                |                                 |
+---------------------------+                  +----------------------------+
|   TransactionService      |                  |    AntiFraudService        |
|---------------------------|  (GET)acumulado  |----------------------------|
| - HTTP API (POST/GET):    |----------------->| - Kafka Producer/Consumer  |
|   CrearTx, ConsultarTx    |                  |                            |
| - Kafka Producer/Consumer |                  |                            |
+-------------+-------------+                  +-------------+--------------+
              |
              | 
              v
      +-----------------------+
      |   PostgreSQL DB       |
      | - Tabla Transacciones |
      +-----------------------+



Descripcion:

TransactionService
Expone una API REST la cual permite crear y consultar transacciones.
Persiste las transacciones en PostgreSQL.
Publica eventos TransaccionCreada a Kafka.
Escucha eventos TransaccionAprobada y TransaccionDenegada.
Actualiza el estado de la transacción en la BD.

AntiFraudService
Escucha el evento TransaccionCreada.
Consulta el acumulado diario sincronicamente al TransactionService via HTTP.
Evalúa condiciones del monto de la transaccion.
Publica evento TransaccionAprobada o TransaccionDenegada.

PostgreSQL solo es consultada por transactionservice para mantener la independencia entre microservicios.


Se uso una clean architecture donde separamos por capas:
Domain: Define la logica pura sin dependencias.
Infrastructure: Define las implementaciones a dependencias externas, aqui tenemos los kafka consumer, producers y la capa de acceso a la bd.
Controllers: Expone los endpoints sin usar logica compleja, usa los elementos de Infrastructure.


Uso:

Creacion de Transacciones:
POST - http://localhost:5000/transacciones/crear
Body -
{
  "idUsuarioOrigen": "11111111-1111-1111-1111-111111111111",
  "idUsuarioDestino": "22222222-2222-2222-2222-222222222222",
  "tipoTransaccion": 1,
  "monto": 500
}
Headers: Content-Type: application/json
Retorno: Un guid que identifica a la transaccion

Obtener Transaccion:
GET - http://localhost:5000/transacciones/{guid}
Retorna: Los datos de la transaccion incluyendo el estado
ejemplo:
{
    "id": "cb0031a8-e9f4-41b8-a22c-4b205958cbfa",
    "idUsuarioOrigen": "11111111-1111-1111-1111-111111111111",
    "idUsuarioDestino": "22222222-2222-2222-2222-222222222222",
    "tipoTransaccion": 1,
    "monto": 10000,
    "estado": "Rejected",
    "fechaCreacion": "2025-05-23T01:32:33.039585Z"
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors