From 615fe7f2c87a1faddf1090b9720e4308dd0ac66c Mon Sep 17 00:00:00 2001 From: Trabajo Date: Tue, 5 May 2026 09:39:12 +0200 Subject: [PATCH] =?UTF-8?q?Configuraci=C3=B3n=20del=20proyecto=20y=20salid?= =?UTF-8?q?a=20de=20build?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 ++++ README.md | 23 +++++++++++------------ package.json | 1 + tsconfig.json | 5 +++-- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index 9fe585b..0ab4d18 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# TypeScript build output +dist/ + # ---> Node # Logs logs @@ -142,3 +145,4 @@ dist # JetBrains IDE local state .idea/ + diff --git a/README.md b/README.md index 16b7d6d..9304e93 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# sf-monitorizacion-health +# sf-monitorizacion-health Aplicación Node.js/Express para monitorizar el endpoint de salud (`url_health`) de un conjunto de proyectos y mostrar un dashboard con el **último estado** registrado en PostgreSQL. @@ -12,16 +12,17 @@ Aplicación Node.js/Express para monitorizar el endpoint de salud (`url_health`) - `TIMEOUT` si el error es `ECONNABORTED` 4. El dashboard (`GET /`) muestra, por proyecto, el **último** registro de `estados`. -El job se ejecuta de forma periódica (cada 60s) en bucle recursivo para evitar solapamientos. +El job se ejecuta de forma periódica (configurable desde la interfaz, por defecto 5 min) en bucle recursivo para evitar solapamientos. ## Requisitos - Node.js 18+ (recomendado) +- TypeScript - PostgreSQL ## Configuración -La app lee estas variables de entorno (consultadas desde `src/config/postgreConfig.ts`): +La app lee estas variables de entorno (consultadas desde `src/config/postgres-config.ts`): - `DB_HOST` - `DB_PORT` @@ -43,27 +44,26 @@ DB_NAME=sf_monitorizacion_health La migración `deployment/database/migrations/001_init.sql` crea: -- `proyectos` -- tipo ENUM `tipo_estado` con `OK`, `ERROR`, `TIMEOUT` +- `proyectos` (con restricción UNIQUE en nombre y URL, y límite de 100 caracteres para el nombre) - `estados` -- índice para consultar rápido el último estado por proyecto -> Nota: la migración hace `DROP TABLE IF EXISTS`, así que destruye los datos actuales. +> Nota: La migración utiliza `CREATE TABLE IF NOT EXISTS`. ## Cómo ejecutar 1. Instala dependencias: - `npm install` 2. Asegúrate de tener creada la BD (ejecuta `deployment/database/migrations/001_init.sql`). -3. Ejecuta en modo desarrollo: - - `npm run dev` +3. Ejecuta los scripts disponibles: + - `npm run dev`: Inicia en modo desarrollo con `tsx`. + - `npm run build`: Compila el código TypeScript. La app levanta el servidor en `http://localhost:3000`. ## Dashboard Ruta: -- `GET /` : renderiza `src/views/index.ejs` +- `GET /` : renderiza la vista principal. En la tabla se muestra: - Nombre del proyecto (`proyectos.nombre`) @@ -75,7 +75,7 @@ Si un proyecto todavía no tiene estados registrados, el dashboard muestra `PEND ## Añadir proyectos -Inserta en `proyectos`: +Se pueden añadir desde la interfaz en `/nuevo` o mediante SQL: ```sql INSERT INTO proyectos (nombre, url_health) @@ -83,4 +83,3 @@ VALUES ('Mi proyecto', 'https://ejemplo.com/health'); ``` Los estados empezarán a generarse automáticamente cuando arranque el servidor y empiece el ciclo de checks. - diff --git a/package.json b/package.json index c4d2d94..2815a6f 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ }, "scripts": { "dev": "tsx src/index.ts", + "build": "tsc", "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { diff --git a/tsconfig.json b/tsconfig.json index dda4b2c..6e15b92 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,8 +2,8 @@ // Visit https://aka.ms/tsconfig to read more about this file "compilerOptions": { // File Layout - // "rootDir": "./src", - // "outDir": "./dist", + "rootDir": "./src", + "outDir": "./dist", // Environment Settings // See also https://aka.ms/tsconfig/module "module": "nodenext", @@ -37,3 +37,4 @@ "skipLibCheck": true, } } +