# Implementação dos requisitos de registro e tratamento

Trabalho iniciado em 29/10/2026 a partir de [VALIDACAO_REQUISITOS_PONTO.md](VALIDACAO_REQUISITOS_PONTO.md). O usuário autorizou a implementação, manteve quatro dígitos e adiou a confirmação/comprovante do funcionário. Esta entrega não é um atestado de conformidade.

## Escopo técnico

- Android permite uma nova confirmação do mesmo tipo. O UUID do rascunho continua protegendo o reenvio da mesma confirmação; não há descarte por proximidade de horário ou escolha automática da primeira entrada.
- PostgreSQL protege marcações, auditoria, tratamento, revisões e arquivos preparados contra atualização/exclusão. O papel do web não pode editar/apagar originais nem fabricar assinaturas. O diário e seus contadores são preenchidos por gatilhos transacionais com encadeamento de hashes.
- O início fiscal é explícito por estabelecimento, com CNPJ/CPF e fuso conferidos. A sequência de NSR é única por estabelecimento e compartilhada pelos tablets. O contador local do Room continua com sua finalidade de reenvio.
- O monitor do host conserva uma fila privada de mudanças de disponibilidade, com reenvio idempotente após falha do banco. Registra os estados observados e reinícios identificados do host, distinguindo o momento observado da gravação. Isso não substitui um monitor externo ou comprova alta disponibilidade.
- A migração arquiva uma fotografia imutável do estado observado dos registros existentes, sem NSR retroativo e sem afirmar que o nome/CPF observado agora era necessariamente o da época da marcação. O histórico original permanece preservado.
- Novas marcações guardam identidade observada, ocorrência, recebimento, coletor, conexão e referência de hora. Metadados ausentes em aparelhos antigos não são inventados. A compatibilidade do protocolo permite atualizar o servidor antes dos tablets.
- AFD 004 e AEJ 002 possuem serializadores e validadores estruturais separados. Os arquivos preparados são imutáveis e aguardam assinatura antes do download final. Falta de identificação, registro ou metadados impede uma emissão apresentada como completa.
- O RH inclui esquecimentos, desconsidera ou volta a considerar originais e cancela inclusões com motivo, autoria e data. Ajustes não alteram a tabela original. Vários períodos completos de trabalho podem ser calculados no mesmo dia; ambiguidades continuam visíveis.
- Fechamento e reabertura criam revisões preservadas. Uma nova batida legítima não é bloqueada porque o período foi fechado. A revisão anterior permanece disponível para conferência.
- O espelho inclui identificação do empregador, horário contratual, originais, tratamento e campos de duração noturna. A redução noturna e diferenças diárias dependem de uma regra com vigência e base trabalhista expressamente configuradas. Não existe seleção automática de convenção coletiva nem folha salarial completa.
- Lançamentos de banco de horas/ausências têm motivo e autoria. Apuração de diferenças não credita automaticamente o banco em cada visualização do relatório.

## Quatro dígitos

Cada empresa tem seu próprio banco. A vinculação autorizada do tablet escolhe a empresa; a credencial identifica o funcionário dentro dela, e o UUID preserva sua identidade nos eventos. Empresas diferentes podem usar `0042` sem conflito. Não usar CNPJ informado pelo navegador como autorização.

Existem **10.000 combinações por empresa**, incluindo `0000`. O cadastro atual reserva também as credenciais dos inativos, sem reciclagem automática. Portanto quatro dígitos não atendem 20 mil pessoas distintas na mesma empresa sem uma mudança explícita de identificação. Não foram ampliadas credenciais nem alterados zeros, UUIDs, assinaturas dos aplicativos ou autorizações dos tablets.

## Uso pelo RH

O menu passa a oferecer **Conferência do ponto**, **Documentos fiscais**, **Regras de apuração** e **Banco de horas e ausências**. Perfis de consulta não podem ajustar, configurar ou solicitar novos arquivos fiscais. Todas as rotas continuam dentro da empresa autenticada.

No modelo de jornada, informar os períodos contratuais — por exemplo, `08:00-12:00` e `13:00-17:00` — ou o início contratual da refeição quando aplicável. Horários previstos não geram batidas. Turnos que atravessam a meia-noite mantêm a data inicial da jornada. Pausas que não contam como trabalho exigem períodos contratuais coerentes no AEJ.

O CPF de cada usuário de RH pode ser informado no seu cadastro de acesso. Depois do início fiscal, alterações de funcionário exigem a identificação do operador. A configuração inicial registra o CPF declarado pelo próprio administrador responsável pelo cadastro. Não atribuir alterações feitas por outros usuários ao CPF do administrador.

## Relógio e aplicativo

O Room migra de 3 para 4 sem apagar filas. A referência de hora verificada usa o relógio monotônico no mesmo boot, com controle de idade e tempo de ida/volta; reinício ou referência vencida produzem aviso e preservam a captura. A tela e a marcação usam a mesma referência. Mudanças no relógio civil não reescrevem eventos salvos.

Há reconexão por callback de rede, trabalho imediato e retentativas. A indicação de conexão registra a comunicação recente com o servidor e invalida esse estado quando o Android informa perda de rede; não constitui prova independente de disponibilidade contínua. Ensaiar no aparelho real perda de energia, relógio alterado, bateria restrita, troca de rede e fila pendente.

O monitor do host só confirma a referência após medições válidas; arquivo ausente/vencido ou consulta sem resposta mantém a indicação não comprovada. As consultas NTP estavam expirando em 29/10. Resolver essa conectividade antes da liberação formal.

## Validação e publicação

As verificações de código, ensaio de migração, build Android, runtime e backup são registradas na conclusão desta entrega. A migração deve ser feita com manutenção, após cópia consistente e com os serviços de provisionamento/ponte pausados quando existirem. Nunca parar ou alterar o servidor antigo para esta atualização.

O ensaio `scripts/rehearse_upgrade.py` usa uma cópia anterior ao início fiscal, contêineres descartáveis sem rede externa, compara o hash das marcações antes/depois e confere os snapshots sem NSR retroativo. A fonte e a assinatura do APK são preservadas; instalar nos dois tablets continua dependendo da etapa presencial já planejada pelo usuário.

### Resultado desta entrega

- Novo web publicado no painel provisório e API existentes. A fonte anterior foi comparada arquivo a arquivo com o contêiner em execução e reconstruída na imagem local `tecniponto:before-recording-20261029`, para retorno de código quando cabível. Isso não reverte nem remove a proteção do diário.
- **298 testes PostgreSQL aprovados**, incluindo concorrência, migração, tratamento, permissões e isolamento. Sem alterações de modelos pendentes ou dependências Python quebradas. `check --deploy` manteve os dois avisos conhecidos de HSTS para subdomínios/preload; não foram estendidos aos demais domínios do servidor.
- **76 testes Android aprovados**, APK 0.9.0-piloto (14) gerado e lint sem erros. O APK ainda precisa da instalação e dos ensaios físicos combinados.
- Ensaio de atualização sem rede externa e execução instalada em empresa descartável aprovados: ativação, nova batida do mesmo tipo, reenvio idempotente, conflito preservado, tratamento, fechamento/reabertura e negação de alteração/exclusão pelo usuário restrito do banco.
- Após a publicação: **16 funcionários e 6.485 marcações preservados**, com o mesmo hash integral dos campos originais; identidades dos dispositivos e autorizações também conferidas. Foram criados 6.485 snapshots de transição, sem NSR. A empresa real continua com o início fiscal pendente de configuração e conferência, sem dados fictícios.
- HTTPS, autenticação das novas rotas, bloqueio de mídia privada e isolamento do contêiner aprovados. Backup prévio criptografado/restaurado em PostgreSQL descartável, com arquivos, papéis e contagens conferidos. Origem expressamente local.
- Timers do novo projeto habilitados: backup a cada seis horas, restauração semanal, medição de referência de hora e observação de disponibilidade a cada minuto. Provisionamento e ponte estavam inativos e continuam assim. Medição de hora não ajusta o relógio.

A atualização de permissões do banco central faz parte de `scripts/migrate.py`, inclusive quando já existe uma instalação importada. O acesso às novas tabelas é concedido ao usuário já configurado em `.env.web`, conservando a proibição de editar/apagar originais ou inserir assinaturas. Não é necessário recriar credenciais nem sobrescrever a configuração privada para atualizar esses acessos.

Evidências operacionais ficam em `private/security/upgrade-rehearsal.json`, `recording-deploy-before.json`, `recording-deploy-after.json`, `runtime.json`, `backup-latest.json` e `recovery-latest.json`. Esses arquivos não são publicados no Git.

### Ordem da transição dos tablets

Concluir domínio e e-mail corporativo, reunir os dois aparelhos e reconciliar as filas antes do backup/importação final do servidor anterior. Conferir os originais e identidades no destino, atualizar por cima do aplicativo preservando os dados e concluir a troca da origem persistida nos dois aparelhos. Somente depois, com os requisitos e dados reais conferidos, iniciar o diário fiscal prospectivo. A substituição legada é bloqueada depois desse início; não usar uma reimportação para corrigir documentos fiscais. Ver [plano atual de transição](ENVIO_DOIS_SERVIDORES.md).

## Pendências que não podem ser declaradas concluídas por testes de código

Comprovante individual, assinatura PAdES e acesso do trabalhador foram adiados pelo usuário. Registro INPI, certificados, dados definitivos do desenvolvedor, assinatura qualificada real, atestado técnico, infraestrutura redundante, destino externo e ensaio físico dos tablets dependem de etapas ainda não fornecidas. A validação estrutural local não substitui a conferência por ferramenta independente e responsável técnico com documentos reais.

As rotinas não apagam histórico por inadimplência. Antes de habilitar cobrança/suspensão automática, é necessário concluir a estratégia de transição e acesso a documentos. O portal pago permanece desligado e a concessão vitalícia existente é preservada. Asaas e notificações ao funcionário não foram ativados nesta implementação.

Procedimentos externos, custos conferidos e arquivos de configuração: [REGISTRO_ASSINATURA_E_BACKUP.md](REGISTRO_ASSINATURA_E_BACKUP.md).
