﻿# Plano de migração — REP-P / PTRP

## Objetivos

1. Introduzir store imutável sem apagar histórico operacional.  
2. Não inventar NSR/hash retroativos.  
3. Permitir rollback de schema (DROP das tabelas **novas** apenas).  
4. Cutover controlado por tenant/estabelecimento.

## Fases de dados

### M0 — Schema vazio
- Aplicar `50_rep_p_core.sql` … (counters, marks, events, attempts, receipts, exports, config, certificates meta)
- Aplicar `55_ptrp_treatments.sql`
- Aplicar `56_compliance_audit.sql`
- `ALTER time_punches ADD rep_p_mark_id NULL`
- Rollback: dropar tabelas novas; dropar coluna `rep_p_mark_id`

### M1 — Inventário legado
- Relatório: contagem `time_punches` por tenant/empresa sem `rep_p_mark_id`
- Classificar como **pré-cutover** (fora do AFD oficial)

### M2 — Dual-write piloto
- `cutover_at = agora` no estabelecimento piloto
- Novas batidas → `rep_p_marks` + `time_punches`
- Ajuste RH: ainda legado **ou** treatments-only se flag

### M3 — Treatments-only
- UPDATE/DELETE em punches com `rep_p_mark_id` bloqueados
- Criar `ptrp_treatments`
- Punches sem mark (legado) podem manter fluxo antigo até política jurídica

### M4 — Export oficial
- Somente após INPI + certificado produção + testes cadeia/AFD
- Período AFD ≥ cutover_at

## O que nunca fazer

- Renumera NSR antigo  
- Recalcular hash de mark consolidado  
- DELETE físico de `rep_p_marks`  
- Preencher NSR “para fechar lacuna” sem laudo  
- Gerar AFD misturando pré e pós cutover sem regra documentada  

## Relatório de legado (CLI)

`php desktop/bin/validar_conformidade_rep_p.php --legado`  
Lista marks ausentes, gaps, empresas sem CNPJ, empregados sem `tenant_company_id`.
