Buscar en la documentación

Asignar, tomar y reasignar

Cómo un incidente pasa a manos de alguien, la diferencia entre tomarlo y asignarlo, y qué pasa si dos personas lo toman a la vez.

Módulo incidents1 min de lecturaVer en GitHub

Hay dos permisos distintos:

  • Tomar (incidents.take): asignárselo a uno mismo, y solo si nadie lo tiene. Lo usan los agentes.
  • Asignar (incidents.assign): elegir a cualquier persona que pueda recibir incidentes, cambiarla o dejarlo sin asignar. Lo usan supervisión y el Super admin.

Los dos van por el mismo endpoint; la API decide cuál aplica.

Diagrama5 carriles · 10 pasos · 4 salidas de error
SíNoTomarAsignarSíNoSíNoSíNoPulsa Tomar,Asignar o Reasignar1Envía PUT/incidents/{id}/assignee2¿Lo puede very la personaexiste?3Responde 404 o422¿Se lo asignaa sí mismo ypuede tomarlo?4¿Sigue sinasignar y noterminó?5Responde 409 yalo tomaron¿Tiene permisode asignar yno terminó?6Responde 403 o409¿Versiónactual?7Responde 409VERSION_CONFLICTGuarda el asignadoe historial8Avisa a quien lorecibe9Muestra la personaasignada10
Los números coinciden con el paso a paso. En pantallas pequeñas el diagrama se desliza de lado.

Paso a paso

  1. PersonaPulsa Tomar, Asignar o Reasignar

    En la ficha del detalle. "Asignar" abre AssignDialog con las personas de GET /incidents/assignees (solo activas y con permiso de recibir incidentes).

  2. NavegadorEnvía PUT /incidents/{id}/assignee

    Con el ULID de la persona (o vacío para dejarlo sin asignar) y la versión conocida.

  3. API¿Lo puede ver y la persona existe?

    Si no lo ve, 404. Si la persona elegida no puede recibir incidentes, 422.

  4. API¿Se lo asigna a sí mismo y puede tomarlo?

    Si sí, se evalúa como "tomar"; cualquier otro caso se evalúa como "asignar".

  5. API¿Sigue sin asignar y no terminó?
  6. API¿Tiene permiso de asignar y no terminó?
  7. API¿Versión actual?

    Si dos personas lo toman a la vez, la segunda llega con una versión vieja y recibe el conflicto.

  8. Base de datosGuarda el asignado e historial

    Entrada assigned o unassigned con la persona de antes y la de después (id y nombre, para que el historial no cambie si luego cambia su nombre). Si ya era la misma persona, no escribe nada.

  9. Cola y avisosAvisa a quien lo recibe

    incident.changed a los canales que pueden verlo, incluido el de "sin asignar" si lo estaba antes; incident.assigned con "Te asignaron TZ-26-0142" a quien lo recibe (no si se lo tomó él mismo) y su notificación.

  10. NavegadorMuestra la persona asignada

Qué ve la persona en cada error

CódigoHTTPCuándoMensaje en pantalla
INCIDENT_ALREADY_ASSIGNED409Otra persona lo tomó antesOtra persona tomó este incidente hace un momento. Recarga la página para ver quién lo tiene.
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.
INVALID_ASSIGNEE422La persona elegida no puede recibir incidentesEsta persona no puede recibir incidentes. Elige a alguien de la lista.
INCIDENT_FINALIZED409Está cerrado o canceladoEste incidente ya está cerrado o cancelado, así que no se puede modificar.
FORBIDDEN_ACTION403No puede asignar a otrosNo tienes permiso para hacer esta acción. Si crees que deberías tenerlo, habla con un administrador.

Dónde está en el código