Files
Prospeccao_SeConectai/Schema/etapas/02-modelagem-entidades-jpa.md
2026-10-01 11:00:47 -03:00

34 lines
2.2 KiB
Markdown

# Etapa 02 — Modelagem das entidades JPA
## Objetivo
Implementar as migrations Flyway completas do schema e as entidades JPA correspondentes, conforme definido em `ARQUITETURA-SCHEMA.md` seção 4.
## Contexto
Esta etapa traduz o schema SQL já definido na arquitetura para migrations Flyway numeradas e entidades Java. Não altere o schema aqui — se algo precisar mudar, volte primeiro em `ARQUITETURA-SCHEMA.md`, versione (v1.1) e só então implemente.
## Tarefas
1. Criar as migrations Flyway, uma tabela por arquivo, na ordem de dependência (por causa das foreign keys):
- `V2__create_usuarios.sql`
- `V3__create_ramos.sql`
- `V4__create_proxies.sql`
- `V5__create_buscas.sql`
- `V6__create_leads.sql`
- `V7__create_telefones.sql`
- `V8__create_historico_contato.sql`
2. Usar exatamente o DDL definido em `ARQUITETURA-SCHEMA.md` seção 4 (colunas, tipos, constraints, índices) — não improvisar campos novos sem atualizar o documento antes
3. Criar as entidades JPA em `domain/`, uma classe por tabela: `Usuario`, `Ramo`, `Proxy`, `Busca`, `Lead`, `Telefone`, `HistoricoContato`
- Usar `@Enumerated(EnumType.STRING)` para os campos de status (mais seguro que String livre) — criar enums correspondentes: `StatusBusca`, `StatusLead`, `StatusProxy`
- Mapear os relacionamentos (`@ManyToOne`, `@OneToMany`) conforme as foreign keys do schema
4. Criar as interfaces `repository/` (Spring Data JPA) para cada entidade: `LeadRepository`, `BuscaRepository`, `RamoRepository`, `ProxyRepository`, etc.
- Adicionar métodos de consulta que já sabemos que serão necessários: `findByHashDedup`, `findByCnpj`, `findByStatus`, `findByBuscaId`
5. Rodar a aplicação e validar que todas as migrations aplicam em sequência sem erro em um banco limpo
## Critérios de aceite
- [ ] Todas as migrations da lista aplicam em sequência em um banco limpo
- [ ] Entidades JPA mapeiam corretamente para as tabelas (validar com um teste simples de save/find por entidade)
- [ ] Enums de status criados e usados nas entidades correspondentes
- [ ] Repositories criados com os métodos de consulta essenciais
- [ ] Nenhuma divergência entre o schema SQL aplicado e o definido em `ARQUITETURA-SCHEMA.md`