# Migração legado → BT — dry-run (Tarefa 3)

## Objetivo

Comando Artisan **somente leitura** que compara o banco **legado** (tabelas equivalentes ao SIATI/BT antigo) com o banco **alvo** (novo BT no mesmo projeto) e gera um **JSON** com:

- contagens por tabela;
- duplicidades no legado (CPF, CNPJ, e-mail);
- divergências de e-mail para o **mesmo** CPF/CNPJ já presente no alvo;
- pivôs `job_applications` órfãos (job ou candidato inexistente);
- vagas (`jobs`) com `company_id` inexistente.

Nenhum dado é inserido, atualizado ou apagado.

## Pré-requisitos

1. Arquivo dump MySQL (`.sql`) do SIATI/BT antigo — ex.: `storage/app/siati_app.sql`.
2. Cliente **`mysql`** instalado no servidor (ou `TALENT_BANK_MYSQL_BINARY` no `.env`).
3. Permissão para criar banco temporário na mesma instância MySQL (`BT_LEGACY_TEMP_DATABASE`).
4. Variável `TALENT_BANK_LEGACY_SQL_DUMP` no `.env` (ou `--sql-dump=` na CLI).

> **Homolog/prod:** modo dump é o padrão. Conexão direta (`mysql_legacy` + `TALENT_BANK_LEGACY_DB_*`) permanece disponível para dev/local.

Tabelas esperadas **dentro do dump** (nomes configuráveis em `config/talent_bank_legacy_import.php`):

| Chave config | Padrão |
|--------------|--------|
| `candidates` | `candidates` |
| `companies` | `companies` |
| `jobs` | `jobs` |
| `job_applications` | `job_applications` |

O alvo usa as mesmas tabelas `candidates` e `companies` na conexão padrão do BT (`DB_*` ou `TALENT_BANK_TARGET_DB_CONNECTION`).

## Comando

### Modo dump SQL (padrão homolog)

```bash
php artisan talent-bank:legacy-dry-run
# ou
php artisan talent-bank:legacy-dry-run --sql-dump=storage/app/siati_app.sql
```

Importa o dump num banco temporário, compara com o alvo e remove o temp ao final (use `--keep-temp-db` para inspecionar).

### Modo conexão direta (dev/local)

```bash
php artisan talent-bank:legacy-dry-run --legacy-connection=mysql_legacy
```

Opções:

| Opção | Descrição |
|-------|-----------|
| `--sql-dump=` | Caminho do `.sql` (padrão: `TALENT_BANK_LEGACY_SQL_DUMP`) |
| `--legacy-connection=` | Conexão legada (padrão: importa dump → `mysql_bt_legacy`) |
| `--target-connection=` | Conexão do BT novo |
| `--keep-temp-db` | Não remove o banco temporário após o dry-run |
| `--report=` | Caminho do arquivo JSON |
| `--stdout` | Imprime o JSON completo no terminal |

Exemplo com relatório fixo:

```bash
php artisan talent-bank:legacy-dry-run --report=storage/app/relatorio_legado.json
```

## Normalização

- **CPF:** apenas dígitos; deve resultar em **11** caracteres.
- **CNPJ:** dígitos com preenchimento à esquerda até **14** posições (compatível com `bigInteger` legado sem zeros à esquerda).
- **E-mail:** comparação em minúsculas, sem espaços nas pontas.

## Integrações

- **Somente MySQL** via Laravel `DB` — não chama API legada nem Conta Angra neste comando.
- Logs: `IntegrationLog::info` ao concluir (`talent_bank.legacy_migration.dry_run_completed`).

## Código

- Comando: `App\Console\Commands\TalentBankLegacyDryRunCommand`
- Analisador: `App\Support\TalentBank\LegacyMigrationDryRunAnalyzer`
- Normalizadores: `App\Support\TalentBank\LegacyDocumentNormalizer`

## Próximo passo (Tarefa 4)

Persistência idempotente (`INSERT`/`UPDATE` controlados) com base neste relatório — em comando separado.
