feat(fsm): modulo de asignacion de tareas y visitas tecnicas integrado con tareas.telcotronics.com
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
|
||||
| Fecha | Objetivo | Evidencia |
|
||||
|---|---|---|
|
||||
| 2026-10-17 | **OBJ-007:** Módulo de Asignación de Tareas y Visitas Técnicas (FSM) integrado con `tareas.telcotronics.com` | Endpoints externos en CT 132 activados (`POST /api/external/tareas` y `GET /api/external/tareas/:id/status`), tabla `ticket_visitas` en MariaDB con `historial_json`, servicio `config/tareasHubService.js`, modelo `models/TicketVisita.js`, rutas `/agent/ticket/:id/visita` y `/sync`, y Mini-Timeline en `views/agent/view-ticket.ejs` |
|
||||
| 2026-10-16 | **OBJ-006:** Integración de bitácora centralizada de errores y remoto Git | Módulo `config/errorReporter.js`, middleware global en `app.js`, script `scripts/consultar_errores.js` (`npm run check:errors`) y remoto `git.telcotronics.net/pablinux/help_desk.git` configurado |
|
||||
| 2026-10-16 | **OBJ-000:** Inicialización documental estandarizada según estándar Telcotronics | Estructura `.agente/` completa, espejo `infraestructura.md` sincronizado al 100%, `id_agente.md`, `agents.md` y `README.md` alineados |
|
||||
| 2026-05-16 | Implementación del backend base con Express 5 y MariaDB | Modelos `User`, `Department`, `Ticket`, rutas funcionales y conexión a `192.168.10.149` |
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -38,6 +38,17 @@
|
||||
6. **Estilos y Assets Livianos:**
|
||||
- Decisión: Bootstrap 5 y Font Awesome se cargan desde CDN público, complementados con `public/css/style.css` y `public/js/main.js` para personalizaciones locales.
|
||||
|
||||
7. **Módulo de Asignación de Tareas y Visitas Técnicas (FSM - Field Service Management):**
|
||||
- Decisión: Integración directa bidireccional entre `help_desk` y el sistema central `tareas.telcotronics.com` (CT 132 `192.168.10.160:3000`).
|
||||
- Cuando un ticket requiere atención presencial, el agente programa la visita desde el modal de Help Desk asignando a técnicos reales del Hub (obtenidos en vivo de `/api/external/users/list`).
|
||||
- Se crea una tarea operativa en el Hub (`POST /api/external/tareas`) con destino (dirección, coordenadas GPS, referencia), prioridad y un checklist inicial de tareas.
|
||||
- En MariaDB se almacena en la tabla `ticket_visitas`, incluyendo la columna `historial_json` (LONGTEXT) para cachear el timeline operativo (hora de llegada/check-in GPS, progreso del checklist, fotos de evidencia en terreno y firma digital del cliente).
|
||||
- En la vista del ticket (`view-ticket.ejs`), se presenta un **Mini-Timeline de Seguimiento Operativo en Vivo** con botón de sincronización a demanda (`POST /agent/ticket/:id/visita/sync`).
|
||||
- Automatización bidireccional: al programar se actualiza el ticket a `en_progreso` y se publica un mensaje en el hilo. Al detectar que la tarea externa fue completada en campo, se actualiza la visita a `completada` y se inserta una respuesta de cierre con las observaciones y firma del cliente en el hilo del ticket.
|
||||
|
||||
8. **Bitácora Centralizada de Errores (API-SIGMA-WEBCONTROL):**
|
||||
- Decisión: Integración con el servicio central de auditoría de errores en `http://192.168.10.149:3005` mediante `config/errorReporter.js`. Dispone de throttling en memoria (10 min) para no saturar la API central ante ráfagas de errores idénticos, y middleware global de Express en `app.js`.
|
||||
|
||||
---
|
||||
|
||||
## Base de Datos
|
||||
@@ -51,6 +62,7 @@
|
||||
- `departments`: Departamentos de soporte por empresa (id, company_id, nombre, descripcion, created_at).
|
||||
- `tickets`: Tickets de soporte (id, company_id, user_id, department_id, asunto, mensaje, status, prioridad, assigned_to, timestamps).
|
||||
- `ticket_respuestas`: Mensajes e hilo de conversación de cada ticket (id, ticket_id, user_id, mensaje, created_at).
|
||||
- `ticket_visitas`: Visitas técnicas y tareas de campo vinculadas a tickets y al Hub de tareas (id, company_id, ticket_id, external_id, tecnico_email, tecnico_nombre, titulo, descripcion, ubicacion, fecha_visita, fecha_fin, estado, checklist_json, historial_json, created_at, updated_at).
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user