Buscar en la documentación

Cambiar de estado

Las transiciones permitidas del catálogo, la nota obligatoria en Resuelto y Cancelado, la confirmación en los estados finales y la fecha de resolución.

Módulo incidents2 min de lecturaVer en GitHub

El estado solo se mueve por las transiciones que define el catálogo (status_transitions):

  • Abierto → En progreso o Cancelado
  • En progreso → En espera, Resuelto o Cancelado
  • En espera → En progreso o Cancelado
  • Resuelto → Cerrado o En progreso

Cerrado y Cancelado son finales: de ahí solo se sale reabriendo. El detalle muestra un botón “Pasar a X” con el siguiente paso natural y el resto en “Cambiar a…”; el Kanban de Mis incidentes usa el mismo flujo al soltar una tarjeta.

Diagrama5 carriles · 12 pasos · 4 salidas de error
SíNoSíNoSíNoSíNoSíNoElige el estadonuevo1¿El destinopide nota o esfinal?2Escribe la nota yconfirma3Envía PUT/incidents/{id}/status4¿Lo ve y puedecambiar suestado?5Responde 404, 403o 409¿Versiónactual?6Responde 409VERSION_CONFLICT¿La transiciónestá en elcatálogo?7Responde 409transición nopermitidaSi el destinopide nota, ¿latrae?8Responde 422falta la notaCalcula la fecha deresolución9Guarda estado,versión e historial10Avisa del cambiotras confirmar11Muestra el estadonuevo y suhistorial12
Los números coinciden con el paso a paso. En pantallas pequeñas el diagrama se desliza de lado.

Paso a paso

  1. PersonaElige el estado nuevo

    Solo se ofrecen los destinos que la API entrega para ese incidente; el navegador no conoce las transiciones.

  2. Navegador¿El destino pide nota o es final?

    Resuelto y Cancelado piden nota (statuses.requires_note); los finales piden además confirmación. Los demás estados aceptan una nota opcional ("Agregar una nota").

  3. PersonaEscribe la nota y confirma
  4. NavegadorEnvía PUT /incidents/{id}/status

    Con el código del estado, la versión conocida y la nota (hasta 1.000 caracteres).

  5. API¿Lo ve y puede cambiar su estado?

    Con incidents.status.any, o con incidents.status.assigned si lo tiene asignado. Nunca en uno cerrado, cancelado o eliminado.

  6. API¿Versión actual?
  7. Base de datos¿La transición está en el catálogo?
  8. APISi el destino pide nota, ¿la trae?
  9. APICalcula la fecha de resolución

    Por las banderas del catálogo: a un estado pendiente, resolved_at vuelve a vacío; a uno no pendiente ni final (Resuelto), ahora; a uno final, se conserva la que tenía.

  10. Base de datosGuarda estado, versión e historial

    Un solo UPDATE con la versión en el WHERE y la entrada status_changed (de y a, con la nota) en la misma transacción.

  11. Cola y avisosAvisa del cambio tras confirmar

    Caché del dashboard, incident.changed y notificación a quien lo creó y a quien lo tiene asignado (nunca a quien hizo el cambio).

  12. NavegadorMuestra el estado nuevo y su historial

Qué ve la persona en cada error

CódigoHTTPCuándoMensaje en pantalla
INVALID_STATUS_TRANSITION409Ese destino no sale del estado actual (por ejemplo, otra persona lo movió)Ese cambio de estado no está permitido desde el estado actual. Recarga la página para ver las opciones disponibles.
STATUS_NOTE_REQUIRED422Resuelto o Cancelado sin notaPara este cambio de estado hace falta una nota. Escribe brevemente qué pasó y vuelve a intentarlo.
VERSION_CONFLICT409Alguien guardó otro cambio antesAlguien más guardó cambios en este incidente mientras lo tenías abierto. Recarga para ver la versión actual antes de seguir.
INCIDENT_FINALIZED409Ya está cerrado o canceladoEste incidente ya está cerrado o cancelado, así que no se puede modificar.
FORBIDDEN_ACTION403Sin permiso de estado, o no lo tiene asignadoNo tienes permiso para hacer esta acción. Si crees que deberías tenerlo, habla con un administrador.

Dónde está en el código