docs: update Codigos/notif_ponto
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
title: Notificação de Ponto
|
||||
description: Sistema de notificação ponto
|
||||
published: true
|
||||
date: 2026-08-15T01:00:06.922Z
|
||||
date: 2026-08-15T01:29:32.722Z
|
||||
tags:
|
||||
editor: markdown
|
||||
dateCreated: 2026-08-15T01:00:06.922Z
|
||||
@@ -161,17 +161,11 @@ entrada1 → saida1 → entrada2 → saida2
|
||||
```
|
||||
|
||||
| Pontos no dia | Situação |
|
||||
|
||||
| ---: | --- |
|
||||
|
||||
| 0 | Falta `entrada1` |
|
||||
|
||||
| 1 | Falta `saida1` |
|
||||
|
||||
| 2 | Falta `entrada2` |
|
||||
|
||||
| 3 | Falta `saida2` |
|
||||
|
||||
| 4 | Jornada concluída |
|
||||
|
||||
### 5.3 Lembrete de entrada2
|
||||
@@ -193,9 +187,7 @@ Com três pontos no dia, considerar que eles são `entrada1`, `saida1` e `entrad
|
||||
```text
|
||||
|
||||
trabalho_antes_do_almoco = saida1 - entrada1
|
||||
|
||||
tempo_restante = 7h55 - trabalho_antes_do_almoco
|
||||
|
||||
horario_estimado_saida2 = entrada2 + tempo_restante
|
||||
|
||||
```
|
||||
@@ -205,21 +197,13 @@ O lembrete deve ser agendado para o horário calculado menos uma antecedência c
|
||||
Exemplo:
|
||||
|
||||
```text
|
||||
|
||||
entrada1: 08:00
|
||||
|
||||
saida1: 12:00
|
||||
|
||||
entrada2: 13:00
|
||||
|
||||
trabalho antes do almoço: 4h00
|
||||
|
||||
restante: 3h55
|
||||
|
||||
saida2 estimada: 16:55
|
||||
|
||||
lembrete: 16:50 (antecedência de 5 minutos)
|
||||
|
||||
```
|
||||
|
||||
## 6. Agendamentos e prevenção de duplicidade
|
||||
@@ -227,11 +211,8 @@ lembrete: 16:50 (antecedência de 5 minutos)
|
||||
Cada lembrete é persistido no SQLite com uma chave única. Uma chave legível pode seguir o formato:
|
||||
|
||||
```text
|
||||
|
||||
bruno14082026entrada2
|
||||
|
||||
bruno14082026saida2
|
||||
|
||||
```
|
||||
|
||||
A garantia técnica deve ser a restrição única:
|
||||
@@ -247,17 +228,11 @@ Isso evita colisões se nome de usuário mudar ou dois nomes forem semelhantes.
|
||||
### Estados
|
||||
|
||||
| Status | Significado |
|
||||
|
||||
| --- | --- |
|
||||
|
||||
| `scheduled` | Agendamento criado, ainda não é hora de enviar |
|
||||
|
||||
| `ready_to_send` | O horário chegou; `execute_send = true` |
|
||||
|
||||
| `sent` | Mensagem enviada com sucesso |
|
||||
|
||||
| `cancelled` | Ponto foi detectado antes do lembrete ou o dia deixou de ser aplicável |
|
||||
|
||||
| `failed` | Houve falha de envio; permite retentativa controlada |
|
||||
|
||||
Pela regra aprovada, quando houver um agendamento pendente com `execute_send = true`, o sistema envia a mensagem sem nova consulta à API. Caso não exista agendamento ou ele esteja com `execute_send = false`, o sistema consulta o histórico para decidir se cria/cancela agendamentos.
|
||||
@@ -267,49 +242,27 @@ Pela regra aprovada, quando houver um agendamento pendente com `execute_send = t
|
||||
## 7. Fluxograma operacional
|
||||
|
||||
```mermaid
|
||||
|
||||
flowchart TD
|
||||
|
||||
I["Ciclo do agendador, por usuário"] --> D{"É dia útil?<br/>Segunda a sexta"}
|
||||
|
||||
D -->|Não| X["Encerrar ciclo"]
|
||||
|
||||
D -->|Sim| A{"Existe agendamento vencido<br/>com execute_send = true?"}
|
||||
|
||||
A -->|Sim| T["Enviar mensagem Telegram"]
|
||||
|
||||
T --> M["Registrar status sent e sent_at"]
|
||||
|
||||
M --> X
|
||||
|
||||
A -->|Não| H["Consultar histórico de pontos"]
|
||||
|
||||
H --> E{"Erro de autenticação?"}
|
||||
|
||||
E -->|Sim| L["Autenticar novamente"]
|
||||
|
||||
L --> R["Atualizar client, token e validade"]
|
||||
|
||||
R --> H
|
||||
|
||||
E -->|Não| V["Filtrar pontos de hoje e ordenar"]
|
||||
|
||||
V --> P{"Quantidade de pontos"}
|
||||
|
||||
P -->|0 ou 1| X
|
||||
|
||||
P -->|2| EN["Criar, se inexistente:<br/>entrada2 = saida1 + 55 min"]
|
||||
|
||||
P -->|3| SA["Calcular saída2 e criar,<br/>se inexistente, o agendamento"]
|
||||
|
||||
P -->|4| F["Jornada completa;<br/>não criar lembretes"]
|
||||
|
||||
EN --> X
|
||||
|
||||
SA --> X
|
||||
|
||||
F --> X
|
||||
|
||||
```
|
||||
|
||||
## 8. Estrutura de pastas e arquivos
|
||||
|
||||
Reference in New Issue
Block a user