# Matriz de tolerância — Súmula 366 do TST / CLT art. 58 §1º

> **Status: PROPOSTA PARA VALIDAÇÃO.** Os resultados abaixo são o que o sistema faz hoje segundo a interpretação descrita.
> **Não foram validados juridicamente nem pela folha.** A última coluna fica em branco até o RH/jurídico conferir cada linha.
> Esta tabela é a mesma usada nos testes automáticos (`tests/matriz_tolerancia.js`, 44 casos): se a regra mudar, a matriz e os testes mudam juntos.

## Interpretação adotada

Escala usada nos exemplos: entrada 08:00 · saída p/ intervalo 12:00 · retorno 13:00 · saída 17:48 (jornada 08:48, 4 batidas).
As variações são em minutos em relação ao horário previsto (+ = depois do previsto, − = antes).

1. **R1 — Tolerável:** variação de até a tolerância individual (no máximo 5 min) em uma marcação não é descontada nem paga como extra.
2. **R2 — Teto diário:** a soma das variações toleráveis do dia tem teto de 10 min. Se passar, **todas** passam a contar.
3. **R3 — Acima da tolerância:** a marcação que ultrapassa a tolerância conta **por inteiro** (não só o que excedeu).
4. **R4 — Efeito por variação:** entrada depois = atraso; saída antes = saída antecipada; saída depois = crédito. O **intervalo é medido pela duração** (retorno − saída p/ intervalo): duração maior = atraso, menor = crédito; se o intervalo apenas se desloca (mesma duração) **nada é apurado**.
6. **R6 — Entrada antecipada (política da empresa, padrão):** entrada adiantada acima da tolerância **não** é crédito nem hora extra. Os minutos **não são escondidos**: aparecem como *não computado* e na observação do dia. A política pode ser ligada em `configuracoes` (`entrada_antecipada_hora_extra` = `true`) e a matriz mostra os dois resultados.
5. **R5 — Compensação dentro do dia (decisão do RH, 30/10):** hora extra só existe **acima** da jornada diária e falta só **abaixo** dela. Atraso, saída antecipada e crédito continuam visíveis como componentes, mas se compensam: `saldo líquido = crédito − atraso − saída antecipada`, `extra = mín(saldo líquido, trabalhado − jornada)` e `faltante = mín(−saldo líquido, jornada − trabalhado)` (só quando ambos são positivos). Nunca há extra e faltante no mesmo dia.

### Pontos que dependem de decisão (marque a opção adotada)

| # | Decisão | Opção implementada | Alternativa |
|---|---|---|---|
| D1 | Atraso de 7 min + saída 7 min depois (linha 15) | **Compensar**: trabalhado = jornada ⇒ sem falta e sem extra (os 7+7 aparecem como componentes e no balão da célula) | Apurar separados: 7 de falta e 7 de extra |
| D2 | Teto de 10 min conta só as variações **toleráveis** (≤ tolerância) | Sim (linhas 16–20 e 26) | Contar também as que excederam a tolerância |
| D3 | Marcação acima da tolerância | Conta inteira (linhas 3 e 10) | Contar só o excedente |
| D4 | Intervalo mais curto que o previsto vira crédito | Sim, pela duração (linha 29) | Não pagar / tratar à parte (intervalo intrajornada, CLT art. 71) |
| D5 | Intervalo medido pela **duração**, não pelos horários de saída/volta | Sim (linhas 32–33 e 35–37) | Medir cada marcação isoladamente (gera falsos faltantes/extras quando o intervalo só se desloca) |
| D6 | Entrada antecipada acima da tolerância | **Não computada** (política da empresa); aparece como "não computado" | Computar como extra — a Súmula 366 e o art. 4º da CLT (tempo à disposição) podem exigir; **validar com o jurídico** |

## Matriz

Colunas: variação [entrada / intervalo / retorno / saída] · tolerância individual · resultado do sistema.

| # | Variações (min) | Tol. | Atraso | Saída antecip. | Crédito (extra) | Tolerado | Teto > 10 | Líquido* | Situação | Validado |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 / 0 / 0 / 0 | 5 | — | — | — | — | — | não | **—** | **—** | 0 | Tudo no horário | ☐ |
| 2 | +5 / 0 / 0 / 0 | 5 | — | — | — | 5 min | — | não | **—** | **—** | 0 | Entrada 5 min atrasada (no limite) | ☐ |
| 3 | +6 / 0 / 0 / 0 | 5 | 6 min | — | — | — | — | não | **6 min** | **—** | -6 | Entrada 6 min atrasada: conta os 6 | ☐ |
| 4 | -5 / 0 / 0 / 0 | 5 | — | — | — | 5 min | — | não | **—** | **—** | 0 | Entrada 5 min adiantada (tolerada) | ☐ |
| 5 | -6 / 0 / 0 / 0 | 5 | — | — | — | — | 6 min | não | **—** | **—** | 0 | Entrada 6 min adiantada: NÃO é crédito (política da empresa), fica como não computada | ☐ |
| 6 | -6 / 0 / 0 / 0 | 5 (política ligada) | — | — | 6 min | — | — | não | **—** | **6 min** | +6 | Mesma entrada 6 min adiantada com a política LIGADA (entrada antecipada conta): 6 de crédito | ☐ |
| 7 | 0 / 0 / 0 / +5 | 5 | — | — | — | 5 min | — | não | **—** | **—** | 0 | Saída 5 min depois (tolerada) | ☐ |
| 8 | 0 / 0 / 0 / +6 | 5 | — | — | 6 min | — | — | não | **—** | **6 min** | +6 | Saída 6 min depois: 6 de crédito | ☐ |
| 9 | 0 / 0 / 0 / -5 | 5 | — | — | — | 5 min | — | não | **—** | **—** | 0 | Saída 5 min antes (tolerada) | ☐ |
| 10 | 0 / 0 / 0 / -6 | 5 | — | 6 min | — | — | — | não | **6 min** | **—** | -6 | Saída 6 min antes: conta os 6 | ☐ |
| 11 | +5 / 0 / 0 / -5 | 5 | — | — | — | 10 min | — | não | **—** | **—** | 0 | Atraso 5 + saída antecipada 5 = 10 (teto exato) | ☐ |
| 12 | +5 / 0 / 0 / +5 | 5 | — | — | — | 10 min | — | não | **—** | **—** | 0 | Atraso 5 + saída 5 depois = 10: nada conta | ☐ |
| 13 | +5 / 0 / 0 / +6 | 5 | — | — | 6 min | 5 min | — | não | **—** | **1 min** | +1 | Atraso 5 tolerado + saída 6 depois: crédito 6, mas só 1 min passa da jornada (trabalhado 08:49) ⇒ extra 1 | ☐ |
| 14 | +6 / 0 / 0 / +6 | 5 | 6 min | — | 6 min | — | — | não | **—** | **—** | 0 | Atraso 6 + saída 6 depois: se compensam, nem falta nem extra | ☐ |
| 15 | +7 / 0 / 0 / +7 | 5 | 7 min | — | 7 min | — | — | não | **—** | **—** | 0 | CASO A da revisão: atraso 7 + saída 7 depois ⇒ compensados no dia (trabalhado = jornada) | ☐ |
| 16 | +4 / 0 / +3 / -4 | 5 | 7 min | 4 min | — | — | — | sim | **11 min** | **—** | -11 | Entrada +4, intervalo 3 min maior, saída −4: soma 11 > 10, todas contam | ☐ |
| 17 | -4 / 0 / -3 / +4 | 5 | — | — | 7 min | — | 4 min | sim | **—** | **7 min** | +7 | Entrada −4 (não computada), intervalo 3 min menor, saída +4: soma 11 > 10, todas contam | ☐ |
| 18 | +5 / +5 / 0 / 0 | 5 | — | — | — | 10 min | — | não | **—** | **—** | 0 | Entrada +5 e intervalo 5 min menor = 10 (teto exato) | ☐ |
| 19 | +5 / +5 / +1 / 0 | 5 | — | — | — | 9 min | — | não | **—** | **—** | 0 | Entrada +5 e intervalo 4 min menor = 9: toleradas | ☐ |
| 20 | +5 / +5 / +5 / 0 | 5 | — | — | — | 5 min | — | não | **—** | **—** | 0 | Intervalo deslocado 5 min com a mesma duração: nada apurado; só a entrada +5 tolerada | ☐ |
| 21 | +4 / +3 / +4 / 0 | 5 | — | — | — | 5 min | — | não | **—** | **—** | 0 | Entrada +4 e intervalo 1 min maior: toleradas | ☐ |
| 22 | +3 / -3 / +3 / -3 | 5 | 6 min | — | — | 6 min | — | não | **6 min** | **—** | -6 | Entrada +3 e saída −3 toleradas; intervalo 6 min maior (acima da tolerância) conta inteiro | ☐ |
| 23 | -3 / +3 / -3 / +3 | 5 | — | — | 6 min | 6 min | — | não | **—** | **6 min** | +6 | Entrada −3 e saída +3 toleradas; intervalo 6 min menor conta inteiro como crédito | ☐ |
| 24 | +1 / +1 / +1 / +1 | 5 | — | — | — | 2 min | — | não | **—** | **—** | 0 | Entrada +1 e saída +1 toleradas; intervalo deslocado sem mudar de duração | ☐ |
| 25 | +6 / +2 / +2 / +2 | 5 | 6 min | — | — | 2 min | — | não | **4 min** | **—** | -4 | Atraso 6 conta inteiro, mas o trabalhado ficou só 4 min abaixo da jornada ⇒ faltante 4 | ☐ |
| 26 | +6 / -6 / 0 / 0 | 5 | 12 min | — | — | — | — | não | **12 min** | **—** | -12 | Entrada +6 e intervalo 6 min maior: ambos contam como atraso | ☐ |
| 27 | +10 / 0 / 0 / +10 | 5 | 10 min | — | 10 min | — | — | não | **—** | **—** | 0 | Atraso 10 + saída 10 depois: compensados | ☐ |
| 28 | -10 / 0 / 0 / -10 | 5 | — | 10 min | — | — | 10 min | não | **—** | **—** | 0 | Entrada 10 antes (não computada) + saída 10 antes: trabalhou a jornada inteira ⇒ sem faltante | ☐ |
| 29 | 0 / +30 / 0 / 0 | 5 | — | — | 30 min | — | — | não | **—** | **30 min** | +30 | Saiu para o intervalo 30 min depois e voltou na hora: intervalo 30 min menor (crédito) | ☐ |
| 30 | 0 / 0 / +30 / 0 | 5 | 30 min | — | — | — | — | não | **30 min** | **—** | -30 | Retorno do intervalo 30 min depois | ☐ |
| 31 | 0 / 0 / 0 / +60 | 5 | — | — | 60 min | — | — | não | **—** | **60 min** | +60 | Uma hora extra no fim do dia | ☐ |
| 32 | +3 / 0 / 0 / 0 | 2 | 3 min | — | — | — | — | não | **3 min** | **—** | -3 | Tolerância individual 2: variação de 3 conta inteira | ☐ |
| 33 | +2 / 0 / 0 / +2 | 2 | — | — | — | 4 min | — | não | **—** | **—** | 0 | Tolerância individual 2: variações de 2 toleradas | ☐ |
| 34 | +1 / 0 / 0 / 0 | 0 | 1 min | — | — | — | — | não | **1 min** | **—** | -1 | Tolerância 0: 1 minuto já conta | ☐ |
| 35 | 0 / -35 / -35 / 0 | 5 | — | — | — | — | — | não | **—** | **—** | 0 | Intervalo 11:25–12:25 (mesma 1 h, só deslocado 35 min): nada apurado — antes aparecia 35 faltantes + 35 extras | ☐ |
| 36 | 0 / +20 / +20 / 0 | 5 | — | — | — | — | — | não | **—** | **—** | 0 | Intervalo deslocado 20 min para depois, mesma duração: nada apurado | ☐ |
| 37 | -10 / -35 / -35 / +6 | 5 | — | — | 6 min | — | 10 min | não | **—** | **6 min** | +6 | PRINT 07/10 (07:50 · 11:25 · 12:25 · 17:54): extra = 6 min (saída); 10 min de entrada antecipada não computados | ☐ |
| 38 | -10 / -30 / -30 / +22 | 5 | — | — | 22 min | — | 10 min | não | **—** | **22 min** | +22 | PRINT 05/10 (07:50 · 11:30 · 12:30 · 18:10): extra = 22 min; 10 não computados | ☐ |
| 39 | 0 / -20 / -20 / +8 | 5 | — | — | 8 min | — | — | não | **—** | **8 min** | +8 | PRINT 06/10 (08:00 · 11:40 · 12:40 · 17:56): extra = 8 min | ☐ |
| 40 | +5 / +40 / +40 / +12 | 5 | — | — | 12 min | 5 min | — | não | **—** | **7 min** | +7 | PRINT 19/10 (08:05 · 12:40 · 13:40 · 18:00): trabalhou 08:55 ⇒ só 7 min acima da jornada (antes: falt 00:05 + extra 00:12) | ☐ |
| 41 | +109 / +60 / +60 / +12 | 5 | 109 min | — | 12 min | — | — | não | **97 min** | **—** | -97 | PRINT 20/10 (09:49 · 13:00 · 14:00 · 18:00): trabalhou 07:11 ⇒ faltante 01:37 e NENHUM extra (antes: falt 01:49 + extra 00:12) | ☐ |
| 42 | +2 / +50 / +48 / +12 | 5 | — | — | 12 min | 4 min | — | não | **—** | **12 min** | +12 | PRINT 21/10 (08:02 · 12:50 · 13:48 · 18:00): trabalhou 09:00 ⇒ extra 00:12 (antes: falt 00:02 + extra 00:14) | ☐ |
| 43 | +6 / +64 / +60 / +12 | 5 | 6 min | — | 12 min | 4 min | — | não | **—** | **6 min** | +6 | PRINT 22/10 (08:06 · 13:04 · 14:00 · 18:00): atraso 6 compensa 6 dos 12 ⇒ extra 00:06 (antes: falt 00:06 + extra 00:16) | ☐ |
| 44 | -4 / +61 / +60 / +12 | 5 | — | — | 12 min | 5 min | — | não | **—** | **12 min** | +12 | PRINT 23/10 (07:56 · 13:01 · 14:00 · 18:00): entrada e intervalo dentro da tolerância; extra 00:12 (antes: extra 00:17) | ☐ |

\* Colunas **Faltante** e **Extra** são o resultado oficial do dia; Atraso, Saída antecipada e Crédito são os componentes antes da compensação.

## Sem horários previstos cadastrados

Se o funcionário não tem horários previstos, o sistema **não consegue** aplicar R1–R4 por marcação. Ele compara o tempo trabalhado do dia com a jornada (tolerância sobre o saldo), o relatório mostra o aviso *"Horários previstos não cadastrados"* e **não detecta compensação entre marcações** (um atraso de 7 compensado por uma saída 7 depois aparece como dia normal). Para a precisão desta matriz, cadastrar os horários previstos de cada funcionário.
