# Clima Laboral SaaS - Fase 1 ## Resumen Sistema SaaS multi-tenant con MariaDB (una base por empresa). Incluye superadmin, admin por empresa, participantes, encuestas fijas, cálculos automáticos, histórico, reportes PDF/Excel e importación de usuarios. ## Conexión MariaDB Actualmente el acceso correcto es con `user_ia` en `192.168.222.20` (puerto 3306). ## Estructura - `backend/` API Node.js + Express - `frontend/` UI React + Vite - `backend/src/sql/` scripts de base de datos ## Base de datos central Archivo: `backend/src/sql/central_schema.sql` Tablas: - `superadmins` - `companies` (datos de conexión de cada empresa) - `start_date` / `end_date` controlan vigencia de acceso por empresa ## Base de datos por empresa Archivos: - `backend/src/sql/tenant_schema.sql` - `backend/src/sql/seed_questions.sql` Tablas principales: - `admins`, `users`, `survey_periods`, `dimensions`, `questions`, `survey_questions`, `responses`, `survey_results` Preparación Fase 2: - `scales`, `question_versions`, `question_weights`, `metric_definitions`, `survey_rules` ## Flujo del sistema 1. Superadmin crea empresa. 2. Se genera DB de empresa, se ejecuta schema + seed, se crea admin principal. 3. Admin crea medición (survey_period) y se genera snapshot en `survey_questions`. 4. Admin activa la medición. 5. Participantes responden. 6. Admin cierra la medición y se calculan resultados automáticamente. 7. Dashboard, histórico, PDF y Excel disponibles. ## Cálculos automáticos - Promedio por pregunta, por dimensión y global. - Conversión a escala 0-100: `(avg - 1) / 4 * 100`. - Clasificación: 0-59 Bajo, 60-79 Medio, 80-100 Alto. - Participación: participantes únicos / total usuarios activos. ## Endpoints principales - `POST /auth/login` - `GET /superadmin/companies` - `POST /superadmin/companies` - `GET /admin/survey-periods` - `POST /admin/survey-periods` - `PATCH /admin/survey-periods/:id/activate` - `PATCH /admin/survey-periods/:id/close` - `GET /admin/dashboard` - `POST /admin/users/import` - `GET /reports/pdf/:surveyPeriodId` - `GET /reports/excel/:surveyPeriodId` - `GET /surveys/active` - `POST /surveys/responses` ## Importación de usuarios Se espera un Excel con columnas: 1) Nombre 2) Email 3) Departamento 4) Cargo ## Banco de preguntas (Excel) Exportación e importación desde Admin: - Archivo Excel con columnas: `question_code`, `dimension_code`, `dimension_name`, `text`, `is_active`. - Si cambia el texto de una pregunta con mismo `question_code`, se crea una nueva versión con fecha. - Para cambios, exporta, edita y vuelve a importar. ## Versiones de encuesta Cada set de preguntas genera un `question_set_code` con versión. Las mediciones se crean usando el set activo. ## Importación de admins No aplica en Fase 1. Solo se permite un admin principal por empresa, creado por Superadmin al provisionar la compañía. ## Puesta en marcha (local) 1) Instalar dependencias en `backend/` y `frontend/`. 2) Crear base central con `central_schema.sql`. 3) Crear superadmin con `npm run seed:superadmin -- "Nombre" correo@dominio.com clave`. 4) Iniciar backend y frontend. ## Puertos y acceso - Backend: `4020` - Frontend: `5373` - La UI consume la API usando la IP del host (no usa `localhost`). ## Nota No se ejecutaron instalaciones por restricciones del entorno.