“Mis incidentes” es el tablero de quien atiende (incidents.view.assigned): lo que tiene asignado y sigue en curso, más lo que cerró o canceló en los últimos 7 días. Tiene cuatro vistas sobre los mismos datos: Kanban, Lista, Calendario y Mi día. Este flujo sigue el Kanban, que es donde se cambia el estado arrastrando.
Paso a paso
- PersonaAbre Mis incidentes
Botón "Mis incidentes" junto a "Nuevo incidente". La vista elegida queda en
?vista=y se recuerda en el navegador. - NavegadorPide GET /incidents/mine
- API¿Tiene incidents.view.assigned?
- Base de datosTrae hasta 500 asignados
En curso y terminados de los últimos 7 días (por
updated_at), con el índice del dashboard: unos 1,5 ms. Si hay más de 500, avisa contruncated. Cada tarjeta trae susnext_statuses. - PersonaArrastra una tarjeta a otra columna
En portátil y monitor. Al tomarla, se marcan las columnas a las que puede ir y se apagan las demás. En celular y tablet, y con teclado, se usa "Mover a…" en la tarjeta.
- Navegador¿Ese destino está en sus next_statuses?
Solo sirve para no ofrecer lo imposible; la regla la aplica la API.
- NavegadorPide nota o confirmación si el destino lo exige
Resuelto y Cancelado piden nota; los estados finales piden confirmación. Es el mismo diálogo del detalle.
- APICambia el estado como en el detalle
PUT /incidents/{id}/status con la versión de la tarjeta. Mismas reglas, errores y avisos que el flujo "Cambiar de estado".
- API¿Se guardó?
- NavegadorLa tarjeta queda en su columna nueva
Cuando llegan cambios de otras personas por tiempo real, el tablero se recarga tras 1,5 s, para juntar varios avisos seguidos en una sola consulta.
Qué ve la persona en cada error
| Código | HTTP | Cuándo | Mensaje en pantalla |
|---|---|---|---|
FORBIDDEN_ACTION | 403 | Su rol no atiende incidentes | No tienes permiso para hacer esta acción. Si crees que deberías tenerlo, habla con un administrador. |
VERSION_CONFLICT | 409 | El incidente cambió desde que se cargó el tablero | Alguien más guardó cambios en este incidente mientras lo tenías abierto. Recarga para ver la versión actual antes de seguir. |
INVALID_STATUS_TRANSITION | 409 | Otra persona ya lo movió | Ese cambio de estado no está permitido desde el estado actual. Recarga la página para ver las opciones disponibles. |
STATUS_NOTE_REQUIRED | 422 | Resuelto o Cancelado sin nota | Para este cambio de estado hace falta una nota. Escribe brevemente qué pasó y vuelve a intentarlo. |
Dónde está en el código
ListMyIncidentsyEloquentMyIncidents.board.ts(canMoveTo, columnas) yuseMyIncidents.KanbanBoard,KanbanCardyMyIncidentsPage.- Explicación del módulo: Módulo Incidents.