El proyecto Interseguro Challenge es una aplicación que incluye varios servicios basados en Docker, como api-go-matrix
y api-node-matrix
. El proyecto está diseñado para facilitar la integración y gestión de servicios utilizando Docker Compose, con soporte para bases de datos y configuraciones específicas.
El proyecto tiene la siguiente estructura:
interseg/
├── api-go-matrix/
│ ├── cmd/ # Comandos principales y configuración de la aplicación
│ ├── config/
│ ├── controllers/ # Controladores de las rutas de la API
│ ├── services/ # Lógica de negocio y servicios
│ ├── models/ # Definición de modelos y esquemas de datos
│ ├── repositories/ # Implementaciones concretas de las interfaces (bases de datos, APIs)
│ ├── .env # Variables de entorno
│ ├── Dockerfile # Dockerfile para contenerizar el servicio
│ └── ...
├── api-node-matrix/
│ ├── api/
│ │ ├── controllers/ # Controladores de las rutas de la API
│ │ ├── services/ # Lógica de negocio y servicios
│ │ ├── models/ # Definición de modelos y esquemas de datos
│ │ ├── repositories/ # Acceso a datos y operaciones CRUD
│ │ └── ...
│ ├── .env # Variables de entorno
│ ├── Dockerfile # Dockerfile para contenerizar el servicio
│ └── ...
├── docker-compose.yml # Configuración de Docker Compose para orquestar los servicios
└── .env # Variables de entorno globales
Para ejecutar el proyecto, asegúrate de tener las siguientes herramientas instaladas en tu sistema:
- Go 1.22.5: Necesario para construir y ejecutar el servicio
api-go-matrix
. - Node.js 20.15.1: Requerido para el desarrollo y ejecución de
api-node-matrix
. - PostgreSQL: Utilizado como base de datos en el proyecto. Asegúrate de tener acceso a una instancia de PostgreSQL.
- Docker: Utilizado para contenerizar los servicios y simplificar la gestión del entorno de desarrollo.
- Docker Compose: Herramienta para definir y ejecutar aplicaciones multi-contenedor. Utilizado para orquestar los servicios del proyecto.
Sigue estos pasos para configurar el proyecto en tu entorno local:
Primero, clona el repositorio del proyecto en tu máquina local:
git clone https://github.com/nelsonstos/interseg.git
cd interseg
- Copia el archivo .env de ejemplo al archivo .env real y ajusta las variables según sea necesario:
cp .env.example .env
- Edita el archivo .env con las configuraciones necesarias. Asegúrate de establecer correctamente las credenciales y configuraciones de la base de datos PostgreSQL, entre otras.
- api-go-matrix: Copia el archivo .env de ejemplo dentro del directorio api-go-matrix y ajústalo:
cp api-go-matrix/.env.example api-go-matrix/.env
- api-node-matrix: Copia el archivo .env de ejemplo dentro del directorio api-node-matrix y ajústalo:
cp api-node-matrix/.env.example api-node-matrix/.env
Construye las imágenes de Docker para los servicios del proyecto:
docker-compose up --build
docker-compose up -d
Esta API realiza validaciones de matriz cuadrada para luego crear la matriz y realizar la factorización QR en el servicio´api-go-matrix´
- Request:
curl --location 'http://localhost:8080/api/v1/matrix' \
--header 'Content-Type: application/json' \
--data '{
"matrix":[
[1, 2, 6],
[3, 4, 8],
[6, 7, 10]
]
}'
- Response:
{
"status": "success",
"message": "Factorization and register successfully!",
"data": {
"id": 37,
"matrix_id": 37,
"q_matrix": "[[-0.1474419561548972,-0.8610567718228911,-0.4866642633922886],[-0.44232586846469135,-0.38269189858795266,0.8111071056538122],[-0.8846517369293827,0.3348554112644583,-0.3244428422615245]]",
"r_matrix": "[[-6.782329983125268,-8.25674954467424,-13.269776053940742],[0,-0.9088932591463842,-4.879321706996383],[0,0,0.32444284226151954]]",
"created_at": "2024-07-30T13:58:48.255319184Z"
}
}
Usa el servicio api-go-matrix para crear, factorizar la matriz y obtener las estadisticas.
- Request:
curl --location 'http://localhost:3000/api/v1/matrix/statistics' \
--header 'Content-Type: application/json' \
--data '{
"matrix":[
[1, 2, 6],
[3, 4, 8],
[6, 7, 10]
]
}'
- Response:
{
"status": "success",
"message": "Statistic stored successfully!",
"data": {
"id": 37,
"combinedStatistic": {
"max": 0.8111071056538122,
"min": -13.269776053940742,
"avg": -2.008663362573159,
"sum": -36.15594052631686
},
"isQMatrixDiagonal": false,
"isRMatrixDiagonal": false,
"factorization_id": 38,
"created_at": "2024-07-30T14:08:43.443209425Z"
}
}
If you wish to contribute to this project, follow these steps:
- Fork the repository
- Create a new branch:
git checkout -b feature-nueva
- Make your changes and commit them:
git commit -am 'Agrega una nueva característica'
- Push to the branch:
git push origin feature-nueva
- Submit a pull request