Buscar en la documentación

Solicitar y decidir una reapertura

Cómo vuelve a la vida un incidente cerrado o cancelado, por solicitud de cualquiera y decisión de quien supervisa, o directo con motivo.

Módulo incidents1 min de lecturaVer en GitHub

Un incidente cerrado o cancelado no se mueve con un cambio de estado normal. Hay dos caminos:

  • Solicitud: cualquiera que lo vea (incidents.reopen.request) pide reabrirlo con un motivo. Queda pendiente hasta que otra persona con incidents.reopen.approve (Supervisor y Super admin) la aprueba o la rechaza.
  • Directo: quien puede aprobar lo reabre de una vez con su propio motivo (POST /incidents/{id}/reopen).

Solo puede haber una solicitud pendiente por incidente: lo garantiza la base con una columna calculada única (pending_incident_id).

Diagrama5 carriles · 11 pasos · 2 salidas de error
SíNoSíNoSíNoPide reabrir yescribe el motivo1Envía POST/incidents/{id}/reopen-request2¿Terminado,sin otrasolicitud ycon permiso?3Responde 409, 403o 404Guarda la solicitudy anota"reopen_requested"4Ve la solicitud enel detalle o lavista previa5¿Es su propiasolicitud?6Responde 403REOPEN_OWN_REQUEST¿Aprueba?7Cierra la solicitudcomo rechazada, conmotivo8Queda terminado conel rechazo en elhistorial9Cierra la solicitudy reabre elincidente10El incidente vuelvea estar en curso11
Los números coinciden con el paso a paso. En pantallas pequeñas el diagrama se desliza de lado.

Paso a paso

  1. SolicitantePide reabrir y escribe el motivo

    En el detalle de un incidente cerrado o cancelado, botón "Solicitar reapertura".

  2. NavegadorEnvía POST /incidents/{id}/reopen-request
  3. API¿Terminado, sin otra solicitud y con permiso?
  4. Base de datosGuarda la solicitud y anota "reopen_requested"

    El motivo va en la nota del historial. El listado lo marca "Reapertura pendiente" y se puede filtrar (?reopen=1). Quien puede decidir recibe la notificación "reapertura pendiente".

  5. SupervisiónVe la solicitud en el detalle o la vista previa

    El aviso ReopenRequestNotice muestra quién la pidió, cuándo y por qué, con Aprobar y Rechazar.

  6. API¿Es su propia solicitud?

    Nadie decide la suya; el botón no aparece y la API responde 403 si se intenta.

  7. Supervisión¿Aprueba?
  8. Base de datosCierra la solicitud como rechazada, con motivo

    El incidente sigue como estaba. Historial reopen_rejected; avisa a quien pidió. Si otra persona la decidió primero, responde 409 REOPEN_NOT_REQUESTED.

  9. NavegadorQueda terminado con el rechazo en el historial
  10. Base de datosCierra la solicitud y reabre el incidente

    En una sola transacción y con la versión en el UPDATE: vuelve a En progreso si tiene asignado o al estado inicial si no, resolved_at vacío y vencimiento nuevo según la prioridad. Historial reopened con el motivo de quien pidió.

  11. NavegadorEl incidente vuelve a estar en curso

    Notificación a quien lo creó, al asignado y a quien pidió la reapertura.

Qué ve la persona en cada error

CódigoHTTPCuándoMensaje en pantalla
INCIDENT_NOT_FINALIZED409El incidente sigue en cursoEste incidente sigue en curso, así que no hay nada que reabrir. Recarga la página para ver su estado actual.
REOPEN_ALREADY_REQUESTED409Ya hay una solicitud pendienteYa hay una solicitud para reabrir este incidente esperando respuesta. Recarga la página para verla.
REOPEN_NOT_REQUESTED409Otra persona ya respondió la solicitudEsta solicitud de reapertura ya fue respondida por otra persona. Recarga la página para ver cómo quedó.
REOPEN_OWN_REQUEST403Quien pidió intenta decidirNo puedes decidir tu propia solicitud de reapertura. Otra persona con ese permiso debe hacerlo.
VERSION_CONFLICT409El incidente cambió mientras se decidíaAlguien más guardó cambios en este incidente mientras lo tenías abierto. Recarga para ver la versión actual antes de seguir.

Dónde está en el código