> ## 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

> O histórico de disponibilidade de cada agente.

# fact\_agent\_status\_changes

Cada linha é uma mudança na disponibilidade de um agente: ficar online (disponível para receber conversas) ou offline. Reconstruir a sequência te dá o tempo conectado de cada agente e seus padrões de disponibilidade.

## Que perguntas ela responde?

* Quantas horas cada agente esteve disponível por dia?
* Quando os agentes se conectam e se desconectam?
* Como a disponibilidade da equipe se alinha com a demanda de conversas?

## Colunas

| Coluna             | Tipo       | Descrição                                                                      |
| ------------------ | ---------- | ------------------------------------------------------------------------------ |
| `status_change_id` | Int32      | Identificador único da mudança                                                 |
| `company_id`       | Int32      | Sua empresa (filtrada automaticamente)                                         |
| `agent_id`         | Int32      | O agente                                                                       |
| `agent_name`       | String     | Nome do agente                                                                 |
| `created_at`       | DateTime64 | Quando o status mudou                                                          |
| `old_status`       | Bool       | Disponibilidade antes da mudança: `true` = disponível, `false` = indisponível  |
| `new_status`       | Bool       | Disponibilidade depois da mudança: `true` = disponível, `false` = indisponível |
| `synced_at`        | DateTime64 | Quando esta linha foi gravada/corrigida pela última vez                        |

## Exemplos de consultas

### Minutos disponíveis por agente por dia (reconstrução 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 a maioria dos relatórios você não precisa reconstruir os intervalos por conta própria — [`fact_agent_daily`](/pt/docs/data-warehouse-v2/fact-agent-daily) já expõe `available_minutes` por agente por dia.
</Note>
