diff --git a/Codigos/notif_ponto.md b/Codigos/notif_ponto.md index 9b34892..7bf4dfb 100644 --- a/Codigos/notif_ponto.md +++ b/Codigos/notif_ponto.md @@ -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?
Segunda a sexta"} - D -->|Não| X["Encerrar ciclo"] - D -->|Sim| A{"Existe agendamento vencido
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:
entrada2 = saida1 + 55 min"] - P -->|3| SA["Calcular saída2 e criar,
se inexistente, o agendamento"] - P -->|4| F["Jornada completa;
não criar lembretes"] - EN --> X - SA --> X - F --> X - ``` ## 8. Estrutura de pastas e arquivos