@startuml uml-state-ticket !include _style.iuml title 9. State machine — Ticket de soporte (estatus_ticket) [*] --> abierto : abrir(reporta, categoria, prioridad) abierto --> en_revision : tomar(agente) / asigna agente y tier L1 state en_revision { state L1 state L2 state L3 [*] --> L1 L1 --> L2 : escalar(L2, hipotesis)\n[hipotesis >= 20 chars] L2 --> L3 : escalar(L3, hipotesis)\n[requiere autorizacion / dev] L2 --> L1 : devolver(motivo) L3 --> L2 : devolver(motivo) L1 : responder(mensaje) L2 : responder(mensaje) L3 : responder(mensaje) } en_revision --> resuelto : resolver(codigo, notas) [notas >= 10 chars] en_revision --> escalado : escalar_externo(tier_destino, hipotesis) resuelto --> abierto : reabrir(motivo) / cliente no satisfecho escalado --> en_revision : reasignar(agente) / equipo destino escalado --> resuelto : resolver(codigo, notas) resuelto --> [*] note right of abierto Estado inicial por trigger (00.sql:499, DEFAULT 'abierto'). end note note right of en_revision Sub-estados de tier (L1/L2/L3) registran cada salto en escalation_log_ticket (006_support_itsm.sql:178). end note note left of resuelto Cierre exige resolucion_codigo + resolucion_notas (>= 10 chars) por CHECK chk_resolucion_required _when_closed. end note footer Fuente: ENUM estatus_ticket 00.sql:63 | tier_soporte y escalation_log 006_support_itsm.sql:37,178 | actions tickets-escalate.ts y tickets-cerrar.ts @enduml