docs: update Codigos/notif_ponto
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
title: Notificação de Ponto
|
title: Notificação de Ponto
|
||||||
description: Sistema de notificação ponto
|
description: Sistema de notificação ponto
|
||||||
published: true
|
published: true
|
||||||
date: 2026-08-15T01:00:06.922Z
|
date: 2026-08-15T01:29:32.722Z
|
||||||
tags:
|
tags:
|
||||||
editor: markdown
|
editor: markdown
|
||||||
dateCreated: 2026-08-15T01:00:06.922Z
|
dateCreated: 2026-08-15T01:00:06.922Z
|
||||||
@@ -161,17 +161,11 @@ entrada1 → saida1 → entrada2 → saida2
|
|||||||
```
|
```
|
||||||
|
|
||||||
| Pontos no dia | Situação |
|
| Pontos no dia | Situação |
|
||||||
|
|
||||||
| ---: | --- |
|
| ---: | --- |
|
||||||
|
|
||||||
| 0 | Falta `entrada1` |
|
| 0 | Falta `entrada1` |
|
||||||
|
|
||||||
| 1 | Falta `saida1` |
|
| 1 | Falta `saida1` |
|
||||||
|
|
||||||
| 2 | Falta `entrada2` |
|
| 2 | Falta `entrada2` |
|
||||||
|
|
||||||
| 3 | Falta `saida2` |
|
| 3 | Falta `saida2` |
|
||||||
|
|
||||||
| 4 | Jornada concluída |
|
| 4 | Jornada concluída |
|
||||||
|
|
||||||
### 5.3 Lembrete de entrada2
|
### 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
|
```text
|
||||||
|
|
||||||
trabalho_antes_do_almoco = saida1 - entrada1
|
trabalho_antes_do_almoco = saida1 - entrada1
|
||||||
|
|
||||||
tempo_restante = 7h55 - trabalho_antes_do_almoco
|
tempo_restante = 7h55 - trabalho_antes_do_almoco
|
||||||
|
|
||||||
horario_estimado_saida2 = entrada2 + tempo_restante
|
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:
|
Exemplo:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
|
|
||||||
entrada1: 08:00
|
entrada1: 08:00
|
||||||
|
|
||||||
saida1: 12:00
|
saida1: 12:00
|
||||||
|
|
||||||
entrada2: 13:00
|
entrada2: 13:00
|
||||||
|
|
||||||
trabalho antes do almoço: 4h00
|
trabalho antes do almoço: 4h00
|
||||||
|
|
||||||
restante: 3h55
|
restante: 3h55
|
||||||
|
|
||||||
saida2 estimada: 16:55
|
saida2 estimada: 16:55
|
||||||
|
|
||||||
lembrete: 16:50 (antecedência de 5 minutos)
|
lembrete: 16:50 (antecedência de 5 minutos)
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 6. Agendamentos e prevenção de duplicidade
|
## 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:
|
Cada lembrete é persistido no SQLite com uma chave única. Uma chave legível pode seguir o formato:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
|
|
||||||
bruno14082026entrada2
|
bruno14082026entrada2
|
||||||
|
|
||||||
bruno14082026saida2
|
bruno14082026saida2
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
A garantia técnica deve ser a restrição única:
|
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
|
### Estados
|
||||||
|
|
||||||
| Status | Significado |
|
| Status | Significado |
|
||||||
|
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
|
|
||||||
| `scheduled` | Agendamento criado, ainda não é hora de enviar |
|
| `scheduled` | Agendamento criado, ainda não é hora de enviar |
|
||||||
|
|
||||||
| `ready_to_send` | O horário chegou; `execute_send = true` |
|
| `ready_to_send` | O horário chegou; `execute_send = true` |
|
||||||
|
|
||||||
| `sent` | Mensagem enviada com sucesso |
|
| `sent` | Mensagem enviada com sucesso |
|
||||||
|
|
||||||
| `cancelled` | Ponto foi detectado antes do lembrete ou o dia deixou de ser aplicável |
|
| `cancelled` | Ponto foi detectado antes do lembrete ou o dia deixou de ser aplicável |
|
||||||
|
|
||||||
| `failed` | Houve falha de envio; permite retentativa controlada |
|
| `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.
|
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
|
## 7. Fluxograma operacional
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
|
|
||||||
flowchart TD
|
flowchart TD
|
||||||
|
|
||||||
I["Ciclo do agendador, por usuário"] --> D{"É dia útil?<br/>Segunda a sexta"}
|
I["Ciclo do agendador, por usuário"] --> D{"É dia útil?<br/>Segunda a sexta"}
|
||||||
|
|
||||||
D -->|Não| X["Encerrar ciclo"]
|
D -->|Não| X["Encerrar ciclo"]
|
||||||
|
|
||||||
D -->|Sim| A{"Existe agendamento vencido<br/>com execute_send = true?"}
|
D -->|Sim| A{"Existe agendamento vencido<br/>com execute_send = true?"}
|
||||||
|
|
||||||
A -->|Sim| T["Enviar mensagem Telegram"]
|
A -->|Sim| T["Enviar mensagem Telegram"]
|
||||||
|
|
||||||
T --> M["Registrar status sent e sent_at"]
|
T --> M["Registrar status sent e sent_at"]
|
||||||
|
|
||||||
M --> X
|
M --> X
|
||||||
|
|
||||||
A -->|Não| H["Consultar histórico de pontos"]
|
A -->|Não| H["Consultar histórico de pontos"]
|
||||||
|
|
||||||
H --> E{"Erro de autenticação?"}
|
H --> E{"Erro de autenticação?"}
|
||||||
|
|
||||||
E -->|Sim| L["Autenticar novamente"]
|
E -->|Sim| L["Autenticar novamente"]
|
||||||
|
|
||||||
L --> R["Atualizar client, token e validade"]
|
L --> R["Atualizar client, token e validade"]
|
||||||
|
|
||||||
R --> H
|
R --> H
|
||||||
|
|
||||||
E -->|Não| V["Filtrar pontos de hoje e ordenar"]
|
E -->|Não| V["Filtrar pontos de hoje e ordenar"]
|
||||||
|
|
||||||
V --> P{"Quantidade de pontos"}
|
V --> P{"Quantidade de pontos"}
|
||||||
|
|
||||||
P -->|0 ou 1| X
|
P -->|0 ou 1| X
|
||||||
|
|
||||||
P -->|2| EN["Criar, se inexistente:<br/>entrada2 = saida1 + 55 min"]
|
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 -->|3| SA["Calcular saída2 e criar,<br/>se inexistente, o agendamento"]
|
||||||
|
|
||||||
P -->|4| F["Jornada completa;<br/>não criar lembretes"]
|
P -->|4| F["Jornada completa;<br/>não criar lembretes"]
|
||||||
|
|
||||||
EN --> X
|
EN --> X
|
||||||
|
|
||||||
SA --> X
|
SA --> X
|
||||||
|
|
||||||
F --> X
|
F --> X
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 8. Estrutura de pastas e arquivos
|
## 8. Estrutura de pastas e arquivos
|
||||||
|
|||||||
Reference in New Issue
Block a user