- Docker y Docker Desktop deben estar instalados en su sistema.
- Tener Node.js y npm instalados para la gestión de dependencias.
- Tener Mysql Workbench o Algun gestor de base de datos que permita MYSQL
-
Clonar el repositorio
git clone https://github.com/SebaVRdev/captahydro-test.git
-
Acceder a la carpeta del proyecto
cd captahydro-test -
Instalar dependencias
npm install
-
Copiar variables de entorno
cp .env.dev .env
-
Levantar la aplicación con Docker
docker-compose up -d
-
Esperar a que todos los contenedores se levanten correctamente.
- La base de datos MySQL se encuentra disponible en el puerto 3305 (diferente del puerto por defecto 3306 de MySQL local).
- Datos de conexión:
- Host: localhost
- Puerto: 3305
- Usuario: root
- Contraseña: seba123
👁🗨 Prueba
mysql -h 127.0.0.1 -P 3305 -u root -pSi tienes MySQL instalado localmente, asegúrate de no tener conflictos de puertos con el 3306.
- La API estará disponible en la URL:
http://localhost:3000/api
A continuación se describen los cuatro endpoints principales de la API.
-
POST /scrape
- Descripción: Ejecuta el proceso de scraping en la fuente.
- Parámetros de entrada:
{ "fecha_inicio": "YYYY-MM-DD", "fecha_fin": "YYYY-MM-DD", "obras": ["codigo_obra"] }En caso de no mandar ningun parametro, el scraper se ejecuta con la fecha de los ultimos 2 dias y con un set de obras por defecto.
- Respuesta de ejemplo: Entrega la informacion obtenida y ok: boolean | true en caso de que se haya guardado la información exitosamente.
-
GET /stations
- Descripción: Entrega todas las obras con su ultimo caudal.
- Parámetros de entrada: Ninguno
- Respuesta de ejemplo: Lista de todos las obras
-
GET /stations/:codigo_obra
- Descripción: Detalle de la obra.
- Parámetros de entrada: codigo_obra
- Respuesta de ejemplo:
{ "ok": true, "data": { "id": 1, "codigo_obra": "OB-1303-1072", "ultimo_caudal": 8268.66015625, "region": "Metropolitana", "provincia": "Maipo", "comuna": "Buin", "coordenada_norte": 6276027, "coordenada_este": 348488, "created_at": "2024-12-13T14:51:21.000Z" }
}
-
GET /stations/:codigo_obra/flow
- Descripción: Entrega todos los caudales de una obra entre un rango de fechas.
- Parámetros de entrada: codigo_obra, fecha_inicio (YYYY-MM-DD) y fecha_fin (YYYY-MM-DD)
{ "fecha_inicio": "YYYY-MM-DD", "fecha_fin": "YYYY-MM-DD" }En caso de no mandar ningun parametro, el scraper se ejecuta con la fecha de los ultimos 2 dias y con un set de obras por defecto.
- Respuesta de ejemplo:
{ "ok": true, "caudales": [ { "id": 1, "codigo_obra": "OB-1303-1072", "caudal": 8125.33984375, "altura_limnimetrica": 110, "fecha_hora_medicion": "2024-12-11T00:00:00.000Z" }, ] }
mysql -h 127.0.0.1 -P 3306 -u root -pDentro del repositrio esta el archivo /database/init.sql, en la consola de MYSQL ejecuta...
source /ruta/completa/al/archivo/database/init.sql;Con esto se crea la base de datos, por lo que se levanta el proyecto manualmente
npm run devPara cualquier problema o duda, por favor comuníquese a mi numero de telefono +56 958138659.