34 lines
2.2 KiB
Markdown
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`
|