> For the complete documentation index, see [llms.txt](https://ajuda.digitalsac.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ajuda.digitalsac.io/digicrm/operacao-uso-do-sistema/configuracoes/horarios-e-feriados.md).

# Horários e Feriados

### Finalidade

**Horários e Feriados** centraliza o expediente do tenant: quando o atendimento está **aberto** ou **fechado**, quais **mensagens** enviar fora do horário / em feriado, e (opcionalmente) o **fechamento inteligente** de tickets. Na mesma tela ficam os **motivos de ausência** usados quando o atendente fica offline.

Não confundir com:

| Tela / caminho                                                                                              | O que é                            |
| ----------------------------------------------------------------------------------------------------------- | ---------------------------------- |
| **Horários e Feriados** (`/configuracoes/business-hours`)                                                   | Esta tela                          |
| **Disponibilidade** (Gestão de Equipe → aba Disponibilidade; `/configuracoes/horarios` redireciona para lá) | Escala/disponibilidade de usuários |
| Tela legada `/configuracoes/horario`                                                                        | Horário antigo no Tenant           |

\[\[FOTO]]

***

### Caminho / permissão / licença

| Item        | Valor                                   |
| ----------- | --------------------------------------- |
| **Menu**    | Configurações → **Horários e Feriados** |
| **URL**     | `/configuracoes/business-hours`         |
| **Perfil**  | Admin                                   |
| **Licença** | **FREE**                                |

\[\[FOTO]]

***

### O que você vê na tela

| Elemento                          | Função                          |
| --------------------------------- | ------------------------------- |
| Hero **Horários e Feriados**      | Título e descrição              |
| Alternância **Tabela / Cards**    | Preferência salva no navegador  |
| Aba **Horários de Funcionamento** | Agendas semanais por escopo     |
| Aba **Feriados**                  | Datas anuais (dia/mês)          |
| Aba **Motivos de Ausência**       | Motivos do offline do atendente |

\[\[FOTO]]

***

### Precedência de escopos

Ao avaliar um ticket, o sistema escolhe **uma** configuração ativa nesta ordem:

**WhatsApp → Usuário → Fila → Global**

O mais específico vence. Ex.: horário do canal sobrescreve o global.

* **Global:** vale para o tenant (sem selecionar fila/usuário/canal).
* **Fila / Usuário / WhatsApp:** exige pelo menos um destino; dá para marcar vários no mesmo cadastro.

Se existir **feriado ativo** aplicável ao contexto **hoje**, o dia é tratado como fechado (feriado) e a mensagem de feriado tem prioridade sobre o horário semanal.

\[\[FOTO]]

***

### Aba Horários de Funcionamento

**Colunas:** Tipo · Destino · Ativo · Ações\
**Botão:** Adicionar Horário

#### Modal — campos

| Campo                              | Obrigatório        | Para que serve                                    |
| ---------------------------------- | ------------------ | ------------------------------------------------- |
| **Tipo**                           | Sim                | Global · Fila · Usuário · WhatsApp                |
| **Selecionar Filas**               | Se tipo = Fila     | Só filas **ativas**; ≥ 1                          |
| **Selecionar Usuários**            | Se tipo = Usuário  | ≥ 1                                               |
| **Selecionar WhatsApps**           | Se tipo = WhatsApp | ≥ 1                                               |
| **Configuração por dia** (Seg–Dom) | Sim                | Tipo do dia + faixas                              |
| Tipo do dia                        | —                  | **Aberto** · **Fechado** · **Horário específico** |
| Se horário específico              | —                  | Manhã início/fim · Tarde início/fim               |
| **Mensagem fora do horário**       | —                  | Texto enviado quando está fechado                 |
| **Ativo**                          | —                  | Só configurações ativas entram na resolução       |

**Padrão na criação:** Seg–Sex aberto; Sáb/Dom fechado; faixas exemplo 08:00–12:00 e 14:00–18:00.

\[\[FOTO]]

#### Fechamento inteligente (expansão)

| Campo                                                 | Para que serve                                                                      |
| ----------------------------------------------------- | ----------------------------------------------------------------------------------- |
| **Ativar Fechamento Inteligente**                     | Liga regras avançadas e possível fechamento automático                              |
| **Janela de 24 horas**                                | Decide qual mensagem usar e se pode fechar (depende do smart close)                 |
| **Mensagem de horário de almoço**                     | Entre o fim da manhã e o início da tarde (dia com faixas)                           |
| **Mensagem fora do horário** (com expediente próximo) | Quando ainda há expediente nas próximas 24h                                         |
| **Mensagem sem expediente próximo**                   | Quando não há expediente nas próximas 24h (ticket pode ser marcado para fechamento) |

Mensagens específicas vazias caem na mensagem padrão do horário.

\[\[FOTO]]

***

### Aba Feriados

**Colunas:** Tipo · Destino · Data · Descrição · Ativo · Ações\
**Botão:** Adicionar Feriado

| Campo         | Obrigatório | Para que serve                                         |
| ------------- | ----------- | ------------------------------------------------------ |
| **Tipo**      | Sim         | Global / Fila / Usuário / WhatsApp                     |
| **Destinos**  | Se ≠ Global | Filas, usuários ou canais                              |
| **Dia**       | Sim         | 1–31                                                   |
| **Mês**       | Sim         | Feriado **anual** (sem ano)                            |
| **Descrição** | Sim         | Nome do feriado                                        |
| **Mensagem**  | Não         | Texto enviado no feriado (há mensagem padrão se vazia) |
| **Ativo**     | —           | Só ativos entram na resolução                          |

\[\[FOTO]]

***

### Aba Motivos de Ausência

Cadastro usado quando o atendente fica **offline** (não controla o horário do canal).

**Colunas:** Nome · Cor · Duração máxima · Descrição · Ativo · Ações\
Duração vazia = **Ilimitado**.

| Campo                        | Obrigatório | Para que serve                                                                                                      |
| ---------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------- |
| **Nome do Motivo**           | Sim         | Máx. 50 caracteres                                                                                                  |
| **Descrição**                | Não         | Máx. 500                                                                                                            |
| **Cor**                      | —           | Hex (padrão cinza)                                                                                                  |
| **Ícone**                    | —           | Almoço, Café, Reunião, Pausa, Treinamento, Atendimento Externo, Emergência, Problemas Técnicos, Ausência, Intervalo |
| **Duração Máxima (minutos)** | Não         | Vazio = ilimitado; se preenchido, mínimo 1                                                                          |
| **Ativo**                    | —           | Só ativos aparecem no modal de offline                                                                              |

#### Onde o atendente usa

No layout principal: ao ficar offline, abre o modal de motivos (lista só ativos). Pode haver countdown conforme a duração máxima. Não está ligado ao escopo Global/Fila/WhatsApp dos horários.

\[\[FOTO]]

***

### Como funciona na prática

#### Avaliação “está aberto?”

* Dia **Aberto** → aberto o dia todo
* Dia **Fechado** → fechado
* Dia **Horário específico** → aberto só nas faixas manhã e/ou tarde

Fuso: usa o horário do tenant.

#### Mensagem automática (ticket sem Robô / ChatFlow)

Quando o cliente fala fora do horário (ou em feriado), o sistema pode:

1. Enviar a mensagem configurada (feriado, almoço ou fora do horário).
2. Evitar spam (anti-duplicação: tipicamente 24h para fora/feriado; \~2h para almoço; não reenvia se houve resposta humana recente).
3. Com **fechamento inteligente**, marcar o ticket para fechamento automático quando aplicável.

Grupos e tickets já fechados não entram nesse fluxo.

#### Com Robô de Atendimento (ChatFlow)

Se o ticket está no robô, a regra de fora do horário vem do nó **Configurações** do fluxo (`outOpenHours`): mensagem + ação (fila / usuário / encerrar / canal). O caminho “mensagem simples” do horário não duplica enquanto o ChatFlow estiver ativo.

#### Fechamento inteligente (job)

Periodicamente o sistema fecha tickets marcados (`pendingBusinessClose`), com pequena espera após a marcação. Com janela de 24h, o fechamento costuma ocorrer quando **não** há expediente próximo.

\[\[FOTO]]

***

### Erros comuns

| Sintoma                                | Causa provável                                                          |
| -------------------------------------- | ----------------------------------------------------------------------- |
| Nenhuma mensagem fora do horário       | Não há horário **ativo** aplicável → sistema assume aberto              |
| Robô não age fora do horário           | Falta BusinessHour ativo **ou** `outOpenHours` não configurado no fluxo |
| Mensagem não reaparece                 | Anti-duplicação / atendente respondeu há pouco                          |
| Smart close não fecha                  | Toggle desligado; janela 24h ainda vê expediente; job ainda não rodou   |
| Conflito de regras                     | Escopo mais específico venceu (canal > usuário > fila > global)         |
| Entrou em `/horarios` e viu outra tela | Redirect para **Disponibilidade** da equipe                             |

\[\[FOTO]]

***

### Dicas

1. Comece com um horário **Global** e refine por canal/fila se necessário.
2. Homologue com mensagem clara e teste um contato real fora do expediente.
3. No ChatFlow, configure também **fora do horário** no nó de configurações.
4. Feriados: cadastre dia/mês anuais (Natal, Ano Novo, etc.).
5. Motivos de ausência: padronize nomes/cores para relatórios de status.
6. Prefira um escopo claro por canal para evitar surpresas de precedência.
