feat(fsm): modulo de asignacion de tareas y visitas tecnicas integrado con tareas.telcotronics.com

This commit is contained in:
2026-10-17 03:06:16 -05:00
parent 0f2708462e
commit 3afcff699a
9 changed files with 802 additions and 8 deletions
+11 -6
View File
@@ -24,15 +24,18 @@ help_desk/
│ ├── 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
│ ├── 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
│ ├── 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)
@@ -91,10 +94,12 @@ help_desk/
| **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/tickets/:id` | `isAuthenticated`, `isAgent` | Detalle del ticket, cambio de estado y asignación |
| **POST** | `/agent/tickets/:id/reply` | `isAuthenticated`, `isAgent` | Envía respuesta oficial del agente |
| **POST** | `/agent/tickets/:id/status`| `isAuthenticated`, `isAgent` | Actualiza estado: `abierto`, `en_progreso`, `cerrado` |
| **POST** | `/agent/tickets/:id/assign`| `isAuthenticated`, `isAgent` | Asigna ticket a un agente específico |
| **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 |