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.

S
Description
No description provided
Readme 184 KiB
Languages
JavaScript 95.4%
CSS 4.2%
HTML 0.4%