@startuml uml-activity-ciclo-ticket-itsm-sla !include _style.iuml title 3. Ciclo de vida de ticket ITSM con SLA L1/L2/L3 start partition "Reportador" { :Abrir ticket\n(tipo, prioridad, categoria); } partition "Sistema SLA" { :BEFORE INSERT:\ntrg_tickets_auto_assign_grupo\nasigna grupo segun categoria; note right cobro_incorrecto -> finanzas_l2 dano_propiedad/queja -> soporte_l1 no_show -> operaciones_l1 end note :AFTER INSERT:\ntrg_tickets_bootstrap_sla\ncalcula frt_due_at, ttr_due_at; } partition "Agente L1" { :Recibir ticket en cola del grupo; :Primera respuesta; :trg_sla_mark_first_response\nactualiza primer_respuesta_at; if (¿FRT cumplido y resoluble en L1?) then (sí) :Resolver y documentar solución; :trg_sla_mark_resolved\nactualiza resuelto_at; :Marcar estatus 'resuelto'; else (no) :Escalar a L2\n(motivo = 'capacidad' o 'sla_breach'); :INSERT escalation_log_ticket; endif } if (¿ticket resuelto en L1?) then (sí) partition "Reportador" { :Recibir encuesta CSAT; :Cerrar ticket; } stop else (no) partition "Agente L2" { :Tomar ticket escalado; :Investigar y aplicar fix; if (¿resuelto en L2?) then (sí) :Marcar 'resuelto'; :Notificar reportador; stop else (no) :Escalar a L3\n(motivo = 'tecnica_avanzada'); :INSERT escalation_log_ticket; endif } partition "Agente L3" { :Tomar ticket de ingeniería; :Aplicar resolución definitiva\no abrir Major Incident; :Marcar 'resuelto'; stop } endif partition "Sistema SLA (paralelo)" { if (¿se vence frt_due_at o ttr_due_at?) then (sí) :Disparar SLA breach; :INSERT escalation_log_ticket\n(motivo = 'sla_breach'); :Notificar Mánager del grupo; else (no) :Continuar monitoreo; endif end } footer Fuente: migrations/006_support_itsm.sql (trg_tickets_auto_assign_grupo, trg_tickets_bootstrap_sla, trg_sla_mark_first_response, trg_sla_mark_resolved) @enduml