Mapa da aula
Aula 14 publicada. Mapa, exemplo, EX053.
flowchart TD
N0["14.1 A regra de retenção"]
N1["14.2 O laboratório da retenção"]
N2["14.3 Exceções e segurança"]
N3["14.4 Monitorar a rotina"]
N4["Laboratório — Registros de lembretes além do prazo d"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX053"]
Desenho lógico
flowchart LR
N0["14.1 A regra de retenção"]
N1["14.2 O laboratório da retenção"]
N2["14.3 Exceções e segurança"]
N3["14.4 Monitorar a rotina"]
N4["Laboratório — Registros de lembretes além do prazo d"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX053"]
[14.1 A regra de retenção]
|
v
[14.2 O laboratório da retenção]
|
v
[14.3 Exceções e segurança]
|
v
[14.4 Monitorar a rotina]
|
v
[Laboratório — Registros de lembretes além do prazo d]
|
v
[Exemplo resolvido] --> [Exercício EX053]
Objetivos de aprendizagem
Você vai (1) automatizar uma regra de retenção; (2) tratar as exceções; (3) monitorar a automação.
14.1 A regra de retenção
Os registros de lembretes de consulta, que guardam o telefone, o horário da consulta e a situação da entrega, são necessários por cerca de um ano para resolver reclamações e conferir problemas de entrega. A tabela de retenção da Marlow fixa 365 dias. Os prontuários clínicos seguem regras profissionais mais longas e não fazem parte desta rotina. Leila escreve a regra com precisão: excluir os registros de lembrete cuja data de consulta seja mais de 365 dias anterior à data da execução, exceto os ligados a uma reclamação em aberto. Uma regra precisa é mais fácil de automatizar e de explicar aos auditores.
14.2 O laboratório da retenção
O laboratório aplica a regra a 1.200 registros sintéticos de lembretes. Encontra 712, 59,3%, com mais de 365 dias, e o registro mais antigo tem 900 dias. O resultado mostra que os lembretes nunca foram excluídos desde o início do serviço de SMS, então a maioria já ultrapassou sua finalidade. Leila aponta que cada registro em excesso contém um telefone ligado a uma consulta odontológica, que ficaria exposto se o banco de lembretes sofresse uma violação; a exclusão, portanto, reduz o risco diretamente. Apagar os 712 registros vencidos remove a maior parte dos telefones do banco sem afetar nenhuma consulta atual.
14.3 Exceções e segurança
Antes de ativar a exclusão, Leila acrescenta uma marcação de exceção para os registros ligados a reclamações em aberto, definida pela equipe de reclamações. Ela roda a rotina primeiro em modo somente relatório, listando o que seria excluído sem excluir nada, e o diretor de operações revisa as contagens. Só então a exclusão é ligada. Toda noite, a rotina grava num log um resumo das contagens excluídas e retidas, sem listar telefones. Ela explica que as execuções somente relatório são uma forma simples de pegar erros nas regras antes que os dados se percam de forma irreversível.
14.4 Monitorar a rotina
A rotina envia uma mensagem diária de sucesso com as contagens. Se nenhuma mensagem chegar, o prestador de TI recebe um alerta. A cada trimestre, Leila confere se o registro de lembrete mais antigo tem menos de 366 dias e se os registros retidos têm uma referência de reclamação vigente; as duas verificações levam minutos. Esse monitoramento enfrenta a falha silenciosa do capítulo 8. O Sr. Okafor observa que a automação aplica a limitação da conservação com confiabilidade, mas só se alguém perceber quando ela para, e é por isso que a mensagem de sucesso importa tanto quanto a própria rotina.
Laboratório — Registros de lembretes além do prazo de retenção
"""Apply a retention rule to synthetic appointment-reminder records (stdlib only)."""
import random, datetime
random.seed(11)
today = datetime.date(2026, 10, 1)
recs = [(i, today - datetime.timedelta(days=random.randint(0, 900))) for i in range(1200)]
keep_days = 365
expired = [r for r in recs if (today - r[1]).days > keep_days]
oldest = max((today - d).days for _, d in recs)
print(f"reminder records {len(recs)}; older than {keep_days} days {len(expired)} ({100*len(expired)/len(recs):.1f}%)")
print(f"oldest record {oldest} days")
Execute com python3 lab_retention.py. Saída verificada:
reminder records 1200; older than 365 days 712 (59.3%)
oldest record 900 days
Exemplo resolvido
Leila encontra 712 de 1.200 registros de lembretes (59,3%) com mais de 365 dias, acrescenta uma exceção para reclamações, roda primeiro em modo somente relatório e depois ativa a exclusão, com mensagens diárias de sucesso e verificações trimestrais.
Caso sintético. Os registros são sintéticos.
Erros e limites
Os backups ainda podem guardar registros excluídos até expirarem; documente a retenção dos backups.
Exercícios
- EX053 — Além da retenção. Quantos registros de lembretes estavam além do prazo?
Mostrar critérios de avaliação
Rubrica: 3 = 712 de 1.200, 59,3%;; 2 = aproximada;; 1 = errada;; 0 = nenhuma. - EX054 — Registro mais antigo. Qual era a idade do registro mais antigo?
Mostrar critérios de avaliação
Rubrica: 3 = 900 dias;; 2 = parcialmente correta;; 1 = errada;; 0 = nenhuma. - EX055 — Somente relatório. Por que rodar primeiro em modo somente relatório?
Mostrar critérios de avaliação
Rubrica: 3 = pegar erros na regra antes de perder dados;; 2 = menciona erros;; 1 = vago;; 0 = nenhuma. - EX056 — Exceção. Que registros ficam retidos?
Mostrar critérios de avaliação
Rubrica: 3 = os ligados a reclamações em aberto;; 2 = parcialmente correta;; 1 = vago;; 0 = nenhuma.