Files
claboral.linkedcorp.net/README.md
T
2026-03-03 11:54:00 -05:00

94 lines
3.2 KiB
Markdown

# 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.