133 lines
9.2 KiB
Markdown
133 lines
9.2 KiB
Markdown
# Estructura del Proyecto — Help Desk
|
|
|
|
## Árbol de Archivos
|
|
|
|
```text
|
|
help_desk/
|
|
├── app.js # Punto de entrada de la aplicación Express
|
|
├── package.json # Metadatos del proyecto y dependencias npm
|
|
├── package-lock.json # Bloqueo de versiones de dependencias
|
|
├── .env.example # Plantilla de variables de entorno (sin secretos)
|
|
├── .gitignore # Ignorados por Git (node_modules, .env)
|
|
├── id_agente.md # Identidad del agente en sigma-robot (estado local)
|
|
├── README.md # Documentación general para humanos
|
|
├── agents.md # Punto de entrada principal para agentes IA
|
|
├── .agente/ # Documentación interna del proyecto
|
|
│ ├── infraestructura.md # Espejo del inventario global de infraestructura
|
|
│ ├── proyecto_memoria.md # Historial de decisiones y arquitectura
|
|
│ ├── proyecto_estructura.md # Este archivo: árbol, rutas y dependencias
|
|
│ ├── proyecto_errores.md # Bitácora de incidentes y problemas conocidos
|
|
│ ├── objetivos.md # Objetivos pendientes, en curso y completados
|
|
│ ├── reglas.md # Restricciones técnicas y de seguridad
|
|
│ └── ideas.md # Ideas y propuestas pendientes
|
|
├── config/
|
|
│ ├── db.js # Pool de conexión a MariaDB con mysql2/promise
|
|
│ ├── errorReporter.js # Cliente y reporter de errores hacia API-SIGMA-WEBCONTROL
|
|
│ ├── init.sql # Esquema SQL relacional base
|
|
│ ├── setup.js # Script de inicialización y migración multi-tenant (incluye ticket_visitas)
|
|
│ └── tareasHubService.js # Conexión e integración con API externa tareas.telcotronics.com
|
|
├── scripts/
|
|
│ ├── consultar_errores.js # Script CLI para consultar la bitácora centralizada de errores
|
|
│ └── test_visita_flow.js # Script CLI de prueba e integración end-to-end para FSM
|
|
├── middleware/
|
|
│ └── auth.js # Middlewares: isAuthenticated, roles y loadCompany
|
|
├── models/
|
|
│ ├── Company.js # Consultas y operaciones para empresas/tenants
|
|
│ ├── Department.js # Operaciones CRUD para departamentos
|
|
│ ├── Ticket.js # Consultas, creación y respuestas de tickets
|
|
│ ├── TicketVisita.js # Modelo y persistencia para visitas técnicas y timeline FSM
|
|
│ └── User.js # Autenticación, creación y gestión de usuarios
|
|
├── routes/
|
|
│ ├── auth.js # Rutas de autenticación (login, register, logout)
|
|
│ ├── client.js # Rutas para clientes (creación y seguimiento de tickets)
|
|
│ ├── agent.js # Rutas para agentes (gestión, respuesta y asignación)
|
|
│ ├── admin.js # Rutas para administradores (usuarios, departamentos)
|
|
│ ├── saas.js # Rutas para superadmin (empresas y tenants)
|
|
│ └── company.js # Rutas de ajustes de la empresa
|
|
├── views/
|
|
│ ├── partials/
|
|
│ │ ├── header.ejs # Encabezado HTML y carga de CSS/CDN
|
|
│ │ ├── footer.ejs # Scripts de Bootstrap y cierre HTML
|
|
│ │ ├── navbar.ejs # Barra de navegación superior con perfil
|
|
│ │ └── sidebar.ejs # Menú lateral dinámico según rol
|
|
│ ├── auth/
|
|
│ │ ├── login.ejs # Vista de inicio de sesión
|
|
│ │ └── register.ejs # Vista de registro de usuario
|
|
│ ├── client/
|
|
│ │ ├── dashboard.ejs # Panel principal de cliente con sus tickets
|
|
│ │ ├── new-ticket.ejs # Formulario para registrar nuevo ticket
|
|
│ │ └── view-ticket.ejs # Detalle del ticket y formulario de respuesta
|
|
│ ├── agent/
|
|
│ │ ├── dashboard.ejs # Panel general de tickets para agentes
|
|
│ │ └── view-ticket.ejs # Vista de resolución, reasignación y respuesta
|
|
│ ├── admin/
|
|
│ │ ├── dashboard.ejs # Panel de control de administrador con estadísticas
|
|
│ │ ├── users.ejs # Lista y gestión de usuarios
|
|
│ │ ├── create-user.ejs # Formulario para dar de alta usuarios
|
|
│ │ └── departments.ejs # Gestión de departamentos de soporte
|
|
│ ├── saas/
|
|
│ │ └── companies.ejs # Gestión de empresas para superadmin
|
|
│ └── company/
|
|
│ └── settings.ejs # Configuración general de la empresa
|
|
└── public/
|
|
├── css/
|
|
│ └── style.css # Estilos personalizados de la interfaz
|
|
└── js/
|
|
└── main.js # Lógica JavaScript en navegador
|
|
```
|
|
|
|
---
|
|
|
|
## Tabla de Rutas HTTP
|
|
|
|
| Método | Ruta | Middleware de Acceso | Descripción |
|
|
|---|---|---|---|
|
|
| **GET** | `/` | Sesión / Redirección | Redirige al dashboard correspondiente según el rol del usuario |
|
|
| **GET** | `/login` | Público | Renderiza formulario de login |
|
|
| **POST** | `/login` | Público | Valida credenciales e inicializa sesión |
|
|
| **GET** | `/register` | Público | Formulario de registro de cliente |
|
|
| **POST** | `/register` | Público | Crea usuario nuevo con rol `client` |
|
|
| **GET** | `/logout` | `isAuthenticated` | Cierra la sesión y redirige a login |
|
|
| **GET** | `/client/dashboard` | `isAuthenticated`, `isClient` | Listado de tickets creados por el cliente |
|
|
| **GET** | `/client/tickets/new` | `isAuthenticated`, `isClient` | Formulario de nuevo ticket |
|
|
| **POST** | `/client/tickets` | `isAuthenticated`, `isClient` | Registro de nuevo ticket |
|
|
| **GET** | `/client/tickets/:id` | `isAuthenticated`, `isClient` | Vista de detalle de un ticket y su conversación |
|
|
| **POST** | `/client/tickets/:id/reply` | `isAuthenticated`, `isClient` | Publica una respuesta a un ticket propio |
|
|
| **GET** | `/agent/dashboard` | `isAuthenticated`, `isAgent` | Bandeja de tickets de la empresa para agentes |
|
|
| **GET** | `/agent/ticket/:id` | `isAuthenticated`, `isAgent` | Detalle del ticket, timeline de visitas y asignación |
|
|
| **POST** | `/agent/ticket/:id/respond` | `isAuthenticated`, `isAgent` | Envía respuesta oficial del agente |
|
|
| **POST** | `/agent/ticket/:id/status`| `isAuthenticated`, `isAgent` | Actualiza estado: `abierto`, `en_progreso`, `cerrado` |
|
|
| **POST** | `/agent/ticket/:id/assign`| `isAuthenticated`, `isAgent` | Asigna ticket a un agente específico |
|
|
| **POST** | `/agent/ticket/:id/visita`| `isAuthenticated`, `isAgent` | Programa visita técnica y crea tarea FSM en tareas.telcotronics.com |
|
|
| **POST** | `/agent/ticket/:id/visita/sync`| `isAuthenticated`, `isAgent` | Sincroniza estado, GPS, fotos y firma desde tareas.telcotronics.com |
|
|
| **GET** | `/admin/dashboard` | `isAuthenticated`, `isAdmin` | Métricas y estadísticas de la empresa |
|
|
| **GET** | `/admin/users` | `isAuthenticated`, `isAdmin` | Lista de usuarios del tenant |
|
|
| **GET** | `/admin/users/create` | `isAuthenticated`, `isAdmin` | Formulario para crear agentes o administradores |
|
|
| **POST** | `/admin/users` | `isAuthenticated`, `isAdmin` | Alta de usuario con rol específico |
|
|
| **POST** | `/admin/users/:id/toggle` | `isAuthenticated`, `isAdmin` | Activa o desactiva acceso de un usuario |
|
|
| **GET** | `/admin/departments` | `isAuthenticated`, `isAdmin` | Catálogo de departamentos |
|
|
| **POST** | `/admin/departments` | `isAuthenticated`, `isAdmin` | Creación de departamento |
|
|
| **POST** | `/admin/departments/:id/delete` | `isAuthenticated`, `isAdmin` | Eliminación de departamento |
|
|
| **GET** | `/saas/companies` | `isAuthenticated`, `isSuperAdmin` | Panel maestro de organizaciones para Superadmin |
|
|
| **POST** | `/saas/companies` | `isAuthenticated`, `isSuperAdmin` | Creación de nuevo tenant / empresa |
|
|
| **POST** | `/saas/companies/:id/toggle` | `isAuthenticated`, `isSuperAdmin` | Activa / suspende un tenant |
|
|
| **GET** | `/company/settings` | `isAuthenticated`, `isAdmin` | Configuración y estado de la empresa |
|
|
|
|
---
|
|
|
|
## Dependencias Principales
|
|
|
|
| Paquete | Versión | Rol |
|
|
|---|---|---|
|
|
| `express` | ^5.2.1 | Framework web principal |
|
|
| `mysql2` | ^3.22.3 | Conector a MariaDB / MySQL con soporte para promesas |
|
|
| `ejs` | ^5.0.2 | Motor de renderizado del lado del servidor |
|
|
| `express-session` | ^1.19.0 | Manejo de sesiones de usuario |
|
|
| `bcryptjs` | ^3.0.3 | Hashing y verificación de contraseñas |
|
|
| `connect-flash` | ^0.1.1 | Mensajes flash temporales en vistas |
|
|
| `cookie-parser` | ^1.4.7 | Parseo de cookies HTTP |
|
|
| `express-fileupload`| ^1.5.2 | Manejo de archivos subidos en formularios |
|
|
| `morgan` | ^1.10.1 | Logger HTTP en consola |
|
|
| `dotenv` | ^17.4.2 | Carga de variables de entorno desde `.env` |
|
|
| `jsonwebtoken` | ^9.0.3 | Instalado (reservado para endpoints de API REST) |
|