Initial commit
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user