馃憢 隆Hola!
Somos Kambista y estamos buscando un nuevo miembro para nuestro equipo de tecnolog铆a.
Para esta etapa hemos preparado un reto t茅cnico enfocado en desarrollo backend. El objetivo es evaluar tu capacidad para dise帽ar APIs, procesar informaci贸n, validar datos y escribir c贸digo mantenible.
Construir un servicio backend simplificado para procesar operaciones de cambio de divisas.
- Node.js
- TypeScript
- NestJS o Express
- MongoDB
- Jest
- Swagger/OpenAPI
Puedes utilizar librer铆as adicionales si consideras que aportan valor a la soluci贸n.
Kambista necesita registrar operaciones de cambio de USD a PEN.
Cada operaci贸n representa una solicitud de cambio realizada por un cliente.
Crear el siguiente endpoint:
POST /transactions{
"customerId": "123",
"amountUsd": 100
}- Validar la informaci贸n recibida.
- Obtener un tipo de cambio fijo de 3.75.
- Calcular el monto equivalente en PEN.
- Registrar la operaci贸n.
- Retornar la informaci贸n generada.
{
"transactionId": "uuid",
"exchangeRate": 3.75,
"amountUsd": 100,
"amountPen": 375,
"status": "COMPLETED"
}Crear el endpoint:
GET /transactions/:id{
"transactionId": "uuid",
"customerId": "123",
"exchangeRate": 3.75,
"amountUsd": 100,
"amountPen": 375,
"status": "COMPLETED"
}Crear el endpoint:
POST /transactions/uploadEl endpoint debe aceptar un archivo CSV.
customerId,amountUsd
123,100
456,250
789,50Por cada fila:
- Validar la informaci贸n.
- Procesar la transacci贸n.
- Registrar el resultado.
{ "processed": 3, "failed": 0 } - Obligatorio.
- Obligatorio.
- Debe ser num茅rico.
- Debe ser mayor a cero.
{
"success": false,
"error": {
"code": "INVALID_AMOUNT",
"message": "Amount must be greater than zero"
}
}Las transacciones deben almacenarse para poder ser consultadas posteriormente.
Puedes elegir la estrategia de persistencia que consideres adecuada.
Implementar al menos:
- 1 prueba unitaria.
- 1 prueba de integraci贸n o e2e.
Incluir en la documentaci贸n:
- Instrucciones de instalaci贸n.
- Instrucciones de ejecuci贸n.
- Decisiones t茅cnicas relevantes.
- Supuestos realizados durante el desarrollo.
Evaluaremos principalmente:
- Calidad de c贸digo.
- Organizaci贸n del proyecto.
- Manejo de errores.
- Validaciones.
- Testing.
- Legibilidad.
- Buenas pr谩cticas.
- Mantenibilidad.
- Swagger/OpenAPI.
- Logging.
- Docker.
- Cobertura adicional de pruebas.
- Crear un fork del repositorio.
- Crear una rama con el siguiente formato:
git checkout -b nombre-apellido- Implementar la soluci贸n.
- Crear un Pull Request con los cambios realizados.
- Compartir el enlace del Pull Request para su revisi贸n.
Entre 4 y 6 horas.
No es necesario implementar funcionalidades adicionales fuera de los requerimientos indicados.
隆Muchos 茅xitos! 馃殌