Todos los Microservicios saludables.

Nuevo microservicio Plugins + cambios a microservicios anteriores, creación de módulos para conexiones a bases de datos y ajustes en las variables de entorno.
This commit is contained in:
2025-10-10 15:11:17 +00:00
parent a31b411437
commit ba6b4fef4f
47 changed files with 5303 additions and 2492 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
NODE_ENV=development
PORT=3030
PORT=1010
DB_HOST=dev-tenants
DB_NAME=manso
+20
View File
@@ -10,6 +10,7 @@
"license": "ISC",
"dependencies": {
"chalk": "^5.6.0",
"cookie-parser": "^1.4.7",
"cors": "^2.8.5",
"dotenv": "^17.2.1",
"ejs": "^3.1.10",
@@ -239,6 +240,25 @@
"node": ">= 0.6"
}
},
"node_modules/cookie-parser": {
"version": "1.4.7",
"resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.7.tgz",
"integrity": "sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==",
"license": "MIT",
"dependencies": {
"cookie": "0.7.2",
"cookie-signature": "1.0.6"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/cookie-parser/node_modules/cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
"license": "MIT"
},
"node_modules/cookie-signature": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
+1
View File
@@ -16,6 +16,7 @@
},
"dependencies": {
"chalk": "^5.6.0",
"cookie-parser": "^1.4.7",
"cors": "^2.8.5",
"dotenv": "^17.2.1",
"ejs": "^3.1.10",
+89 -13
View File
@@ -1,8 +1,10 @@
// ./services/manso/src/index.mjs
// ------------------------------------------------------------
// MVP Manso de SuiteCoffee — Aplicación MVP
// ------------------------------------------------------------
import 'dotenv/config';// Variables de Entorno
import favicon from 'serve-favicon'; // Favicon
import 'dotenv/config'; // Variables de Entorno
import favicon from 'serve-favicon'; // Favicon
import express from 'express';
import expressLayouts from 'express-ejs-layouts';
@@ -13,10 +15,34 @@ import expressPages from '#pages'; // Rutas "/", "/dashboard", ...
import path from 'path';
import { fileURLToPath } from 'url';
import cookieParser from 'cookie-parser';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// -----------------------------------------------------------------------------
// Validación de entorno mínimo (ajusta nombres si difieren)
// -----------------------------------------------------------------------------
// ----------------------------------------------------------
// Variables del sistema
@@ -39,9 +65,13 @@ app.set("layout", "layouts/main");
app.use(express.json());
app.use(express.json({ limit: '1mb' }));
app.use(express.static(path.join(__dirname, 'public'))); // Carga de archivos estaticos
app.use(expressLayouts); // Carga los layouts que usara el renderizado
app.use(express.urlencoded({ extended: true }));
app.use(favicon(path.join(__dirname, 'public', 'favicon', 'favicon.ico'), {maxAge: '1y'}));
app.use(express.static(path.join(__dirname, 'public'))); // Carga de archivos estaticos
app.use(expressLayouts); // Carga los layouts que usara el renderizado
app.use(cookieParser(process.env.SESSION_SECRET));
app.use(expressPages); // Renderizado trae las paginas desde ./services/manso/src/routes/routes.js
@@ -291,31 +321,77 @@ app.post('/api/table/:table', async (req, res) => {
// ----------------------------------------------------------
// Verificación de conexión
// ----------------------------------------------------------
async function verificarConexion() {
try {
console.log(`[Manso] Comprobando accesibilidad a la db ${process.env.DB_NAME} ...`);
const client = await pool.connect();
const { rows } = await client.query('SELECT NOW() AS ahora');
console.log(`\n[Manso] Conexión con ${process.env.DB_NAME} OK. Hora DB:`, rows[0].ahora);
client.release();
} catch (error) {
console.error('[Manso] Error al conectar con la base de datos al iniciar:', error.message);
console.error('[Manso] Revisar credenciales, accesos de red y firewall.');
}
}
/*async function verificarConexion() {
try {
var client = await pool.getClient();
let res = await client.query('SELECT NOW() AS hora');
console.log(`\nConexión con la base de datos ${process.env.DB_NAME} fue exitosa.`);
console.log('Fecha y hora actual de la base de datos:\n ->', res.rows[0].hora);
console.log(`\n[Manso] Conexión con la base de datos ${process.env.DB_NAME} fue exitosa.`);
console.log('[Manso] Fecha y hora actual de la base de datos:\n ->', res.rows[0].hora);
} catch (error) {
console.error('Error al conectar con la base de datos al iniciar: \n ->', error.message);
console.error('Revisar credenciales y accesos de red.');
console.error('[Manso] Error al conectar con la base de datos al iniciar: \n ->', error.message);
console.error('[Manso] Revisar credenciales y accesos de red.');
} finally{
client.release();
}
}
}*/
// -----------------------------------------------------------------------------
// 404 + Manejo de errores
// -----------------------------------------------------------------------------
app.use((req, res) => res.status(404).json({ error: 'Error 404, No se encontró la página', path: req.originalUrl }));
app.use((err, _req, res, _next) => {
console.error('[APP] ', err);
if (res.headersSent) return;
res.status(500).json({ error: '¡Oh! A ocurrido un error en el servidor app.', detail: err.stack || String(err) });
});
// ----------------------------------------------------------
// Inicio del servidor
// ----------------------------------------------------------
app.listen(PORT, () => {
console.log(`Servidor de aplicación escuchando en ${`http://localhost:${PORT}`}`);
console.log(`Comprobando accesibilidad a la db ${process.env.DB_NAME} del host ${process.env.DB_HOST} ...`);
console.log(`[Manso] Servidor de aplicación escuchando en ${`http://localhost:${PORT}`}`);
console.log(`[Manso] Comprobando accesibilidad a la db ${process.env.DB_NAME} del host ${process.env.DB_HOST} ...`);
verificarConexion();
});
// -----------------------------------------------------------------------------
// Healthcheck
app.get('/health', (_req, res) => res.status(200).json({ status: 'ok'}));
// -----------------------------------------------------------------------------
app.get('/health', (_req, res) => {
res.status(200).json({ status: 'ok'}),
console.log(`[Manso] Saludable`)
});
+1 -1
View File
@@ -469,7 +469,7 @@ async function loadAsist(){
const key = `${r.documento}::${r.nombre||''}::${r.apellido||''}`;
if (!byKey.has(key)) byKey.set(key, { doc:r.documento, nombre:r.nombre||'', apellido:r.apellido||'', rows:[] });
byKey.get(key).rows.push({
fecha: fStr,
fecha: fStr,
horas: Number(r.horas_dia ?? r.horas ?? (r.minutos_dia||0)/60),
pares: Number(r.pares_dia ?? r.pares ?? 0)
});