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
+29
View File
@@ -90,6 +90,35 @@ async function setup() {
await conn.query('ALTER TABLE tickets ADD FOREIGN KEY (company_id) REFERENCES companies(id) ON DELETE CASCADE');
} catch (e) { if (e.errno !== 1826 && e.errno !== 1005) throw e; }
// Create ticket_visitas table
await conn.query(`
CREATE TABLE IF NOT EXISTS ticket_visitas (
id INT AUTO_INCREMENT PRIMARY KEY,
company_id INT NOT NULL,
ticket_id INT NOT NULL,
external_id VARCHAR(100) NULL,
tecnico_email VARCHAR(150) NOT NULL,
tecnico_nombre VARCHAR(150) NULL,
titulo VARCHAR(255) NOT NULL,
descripcion TEXT NULL,
ubicacion VARCHAR(255) NULL,
latitud DECIMAL(10, 7) NULL,
longitud DECIMAL(10, 7) NULL,
fecha_visita DATETIME NULL,
fecha_fin DATETIME NULL,
estado ENUM('programada', 'en_camino', 'en_sitio', 'completada', 'cancelada') DEFAULT 'programada',
checklist_json TEXT NULL,
historial_json LONGTEXT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX (ticket_id),
INDEX (company_id),
INDEX (external_id),
FOREIGN KEY (ticket_id) REFERENCES tickets(id) ON DELETE CASCADE,
FOREIGN KEY (company_id) REFERENCES companies(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
`);
// Seed departments
const [depts] = await conn.query('SELECT COUNT(*) as c FROM departments WHERE company_id = ?', [companyId]);
if (depts[0].c === 0) {