Skip to content

Interbank-Comercial-MDC/java-code-challenge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 

Repository files navigation

Reto de programación en Java 🚀

El reto de código que hemos elaborado nos permitirá conocer tus poderosas habilidades de codificación 😄.

Ten en cuenta que la forma correcta de enviar tu resolución es a través de un PR 😉 ... ¡Que te diviertas!

Problema

Cada vez que se crea una transacción (operación) financiera debe ser validada por nuestro microservicio antifraude (Anti-Fraud) y luego el mismo servicio envía un mensaje para actualizar el estado de la transacción. Por ahora, solo manejamos tres estados de operación.

  1. pendiente
  2. aprobado
  3. rechazado

Toda transacción con un valor mayor a 1000 debe ser rechazada.

  flowchart LR
    Transaction -- 1) Guarda operación con estado pendiente --> transactionDatabase[(Database)]
    Transaction -- 2) Envía evento de registro de operación --> Anti-Fraud
    Anti-Fraud -- 3.a) Envía evento de cambio de estado de operación a aprobado --> Transaction
    Anti-Fraud -- 3.b) Envía evento de cambio de estado de operación a rechazado --> Transaction
    Transaction -- 4) Actualiza operación con el estado recibido por Anti-Fraud --> transactionDatabase[(Database)]
Loading

Stack Tecnológico a utilizar

  1. Java - Spring Framework - Spring Boot
  2. BD PostgreSQL
  3. Gestor de colas Kafka

Nosotros estamos brindandote un Dockerfile para que rápidamente puedas configurar tu entorno de desarrollo.

Deberías tener 2 recursos (a nivel de API):

  1. Recurso para crear una operación que contenga la siguiente estructura:
{
  "accountExternalIdDebit": "Guid",
  "accountExternalIdCredit": "Guid",
  "tranferTypeId": 1,
  "value": 120
}
  1. Recurso que recupera una operación
{
  "transactionExternalId": "Guid",
  "transactionType": {
    "name": ""
  },
  "transactionStatus": {
    "name": ""
  },
  "value": 120,
  "createdAt": "Date"
}

Opcional

Puede utilizar cualquier método para almacenar datos de transacciones, pero debe considerar que podemos lidiar con escenarios de gran volumen en los que tenemos una gran cantidad de escrituras y lecturas de los mismos datos al mismo tiempo. ¿Cómo abordaría este requisito?

Envía tu código

Cuando termines tu resolución, después de realizar el fork al repositorio, tú debes abrir una solicitud de extracción (PR) a nuestro repositorio. No hay limitaciones para la implementación, puede seguir el paradigma de programación, la modularización y el estilo que creas que es la solución más adecuada.

Si tienes alguna duda, por favor ponte en contacto con nosotros.

About

Reto de programación para postulantes a Interbank - Comercial y MDC

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published