> ## Documentation Index
> Fetch the complete documentation index at: https://help.treble.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# fact_agent_status_changes

> El historial de disponibilidad de cada agente.

# fact\_agent\_status\_changes

Cada fila es un cambio en la disponibilidad de un agente: conectarse (disponible para recibir conversaciones) o desconectarse. Reconstruir la secuencia te da el tiempo conectado y los patrones de disponibilidad de cada agente.

## ¿Qué preguntas responde?

* ¿Cuántas horas estuvo disponible cada agente por día?
* ¿Cuándo se conectan y desconectan los agentes?
* ¿Cómo se alinea la disponibilidad del equipo con la demanda de conversaciones?

## Columnas

| Columna            | Tipo       | Descripción                                                                     |
| ------------------ | ---------- | ------------------------------------------------------------------------------- |
| `status_change_id` | Int32      | Identificador único del cambio                                                  |
| `company_id`       | Int32      | Tu empresa (filtrado automáticamente)                                           |
| `agent_id`         | Int32      | El agente                                                                       |
| `agent_name`       | String     | Nombre del agente                                                               |
| `created_at`       | DateTime64 | Cuándo cambió el estado                                                         |
| `old_status`       | Bool       | Disponibilidad antes del cambio: `true` = disponible, `false` = no disponible   |
| `new_status`       | Bool       | Disponibilidad después del cambio: `true` = disponible, `false` = no disponible |
| `synced_at`        | DateTime64 | Cuándo se escribió/corrigió por última vez esta fila                            |

## Consultas de ejemplo

### Minutos disponibles diarios por agente (reconstrucción de intervalos)

```sql theme={null}
SELECT
    agent_name,
    toDate(created_at) AS day,
    round(sum(
        dateDiff('second', created_at,
                 leadInFrame(created_at) OVER (
                     PARTITION BY agent_id, toDate(created_at)
                     ORDER BY created_at
                     ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING))
        * if(new_status = true, 1, 0)
    ) / 60, 1) AS available_minutes
FROM fact_agent_status_changes
WHERE created_at >= today() - 7
GROUP BY agent_name, day
ORDER BY day, agent_name
```

<Note>
  Para la mayoría de los reportes no necesitas reconstruir los intervalos tú mismo — [`fact_agent_daily`](/es/docs/data-warehouse-v2/fact-agent-daily) ya expone `available_minutes` por agente por día.
</Note>
