Files
help_desk/memoria.md
T

79 lines
5.9 KiB
Markdown

# Memoria Técnica del Proyecto — Help Desk
## Fecha de inicio
16 de Mayo, 2026
## Stack Tecnológico
- **Runtime / Backend:** Node.js 20+ con Express 5.2.
- **Motor de Vistas:** EJS 5 con partials modulares.
- **Base de Datos:** MariaDB 10.11 / MySQL (`mysql2/promise`) en CT 114 (`192.168.10.149:3306`).
- **Autenticación y Sesiones:** `express-session`, `cookie-parser`, `bcryptjs`.
- **Integraciones de Identidad:** SIGMA WebControl API, Google Identity Services (GIS), Facebook OAuth.
- **Frontend / UI:** Bootstrap 5.3 + Font Awesome 6 (CDN) + Estilos custom (`public/css/style.css`).
- **Middlewares y Utilidades:** `morgan`, `connect-flash`, `express-fileupload`, `qrcode`.
- **Integración FSM:** API REST externa contra `tareas.telcotronics.com` (CT 132 `192.168.10.160:3000`).
- **Auditoría de Errores:** Integración con API-SIGMA-WEBCONTROL (`192.168.10.149:3005`).
---
## Decisiones de Arquitectura
1. **MariaDB Relacional vs NoSQL:**
- Se utiliza MariaDB en CT 114 (`192.168.10.149:3306`), garantizando integridad referencial estricta, llaves foráneas y consistencia transaccional multi-tenant.
2. **express-session vs JWT:**
- Se utiliza `express-session` con almacenamiento de sesión del lado del servidor para el portal web renderizado con EJS, facilitando el manejo de mensajes flash (`connect-flash`) y redirecciones seguras. `jsonwebtoken` permanece reservado para APIs REST.
3. **Arquitectura Multi-tenant SaaS:**
- La tabla maestra `companies` gobierna el aislamiento lógico. Todas las entidades operativas (`users`, `departments`, `tickets`, `ticket_visitas`, `herramientas`, `herramientas_sets`, `tecnico_herramientas_asignaciones`) incorporan la clave foránea `company_id`.
- Soporte para cuotas máximas de usuarios y tickets por plan (`free`, `pro`, `enterprise`).
4. **4 Roles de Usuario con Control Granular (`middleware/auth.js`):**
- `superadmin`: Acceso a `/saas/companies` para gestión global de organizaciones.
- `admin`: Administración de agentes, clientes, departamentos, inventario de herramientas y configuraciones de la empresa.
- `agent`: Bandeja operativa de tickets, triaje, respuestas, despacho de visitas técnicas FSM y asignación de herramientas.
- `client`: Apertura y seguimiento de incidencias propias.
5. **Estrategia Multicanal de Autenticación & Mascota Bot:**
- Los clientes del ecosistema validan sus credenciales contra SIGMA WebControl (`api.siax-system.net`) con aprovisionamiento transparente en MariaDB.
- Los nuevos clientes pueden autenticar mediante Google Identity Services (GIS) y Facebook Login.
- El personal técnico (`superadmin`, `admin`, `agent`) utiliza la consola local MariaDB protegida por `bcryptjs`.
- Mascota oficial del Bot de Soporte (`/img/bot-soporte.svg`, `/img/bot-soporte.png`) integrada en la interfaz de login.
6. **Módulo FSM — Despacho y Trazabilidad de Campo:**
- Integrado bidireccionalmente con `tareas.telcotronics.com` (CT 132 `192.168.10.160:3000`).
- Sincronización en vivo de nómina de técnicos, despacho con checklist, dirección y coordenadas GPS.
- Mini-Timeline de 4 hitos operativos en el ticket: Programada ➔ Check-in GPS en sitio ➔ Avance de checklist con fotos ➔ Cierre con firma digital del cliente.
- Automatización de estados y mensajes en el hilo del ticket al programar o completar la visita.
7. **Módulo de Inventario de Herramientas, Sets y Manifiesto QR:**
- Inventario físico multi-tenant de herramientas individuales (`herramientas`) con código, serie, marca, modelo, estado (`disponible`, `en_uso`, `en_reparacion`, `baja`) y fotografía.
- Agrupación en **Sets / Kits de Herramientas** (`herramientas_sets` y `herramientas_set_items`) para maletines de trabajo (fusión de fibra, redes de cobre, kits de cuadrilla).
- Asignación de custodia a técnicos (`tecnico_herramientas_asignaciones`) en dos modalidades: dotación fija de bodega o vinculada a un ticket de visita técnica FSM.
- Subida y almacenamiento seguro de imágenes (`config/uploader.js`) para evidencias de herramientas, maletines, estado de entrega y estado de devolución.
- Generación de códigos QR e impresión térmica adhesiva (`/admin/herramientas/sets/:id/etiqueta`) optimizada a 95mm vía `@media print`.
- Manifiesto móvil web responsivo (`/qr/set/:token` y `/qr/asignacion/:token`) con badge de custodia en vivo (EN BODEGA vs EN CUSTODIA) y checklist interactivo para auditoría de maletines en terreno o almacén.
- Endpoint externo M2M `/api/external/herramientas/sets` protegido por API Key.
8. **Despliegue a Producción y Orquestación con SIAX Monitor:**
- Servidor: CT 132 `192.168.10.160` (`server-webapps`), puerto 3008.
- Dominio público: `https://soporte.sigmac.app` mediante proxy reverso en CT 109 (`192.168.10.109:443`).
- Administrado por la unidad systemd `siax-app-HELPDESK.service` y supervisado por **SIAX Monitor** (`:8080`).
- Despliegue atómico automatizado vía `./desplegar.sh`.
- Registrado oficialmente en el MCP de Infraestructura como **Servicio ID 35**.
---
## Esquema de Base de Datos (10 Tablas Activas)
- `companies`: Gestión de tenants SaaS y cuotas.
- `users`: Usuarios del sistema con soporte multicanal (`provider`, `provider_id`, `rol`, `company_id`).
- `departments`: Áreas o departamentos de soporte técnico.
- `tickets`: Tickets de soporte con aislamiento por empresa, prioridad y estado.
- `ticket_respuestas`: Mensajes, notas y respuestas del hilo del ticket.
- `ticket_visitas`: Visitas técnicas y tareas de campo FSM con timeline en `historial_json`.
- `herramientas`: Catálogo de herramientas individuales con código, serie, estado y `foto_url`.
- `herramientas_sets`: Kits o maletines de herramientas con código, `foto_url` y `qr_token`.
- `herramientas_set_items`: Relación Many-to-Many entre sets y herramientas con cantidad requerida.
- `tecnico_herramientas_asignaciones`: Registro de custodia a técnicos con estado (`activa`, `devuelta`), fotos de entrega/devolución y `qr_token`.