# ✅ Checklist de Implementação - Property Model V3

## 🏗️ FASE 1: Estrutura Base

### **1.1 Criação de Diretórios**
- [ ] Criar `__dev__/` na raiz do projeto
- [ ] Criar `__dev__/data/`
  - [ ] `__dev__/data/arbo-downloads/`
  - [ ] `__dev__/data/fake-data-output/`
  - [ ] `__dev__/data/mock-output/`
- [ ] Criar `__dev__/scripts/`
- [ ] Criar `__dev__/services/`
- [ ] Criar `__dev__/tests/`
- [ ] Criar `src/data/`
  - [ ] `src/data/fake-data/`
  - [ ] `src/data/examples/`
  - [ ] `src/data/profiling/`

### **1.2 Limpeza**
- [x] ~~Remover pasta `/src/assets`~~
- [ ] Atualizar `.gitignore` para incluir `__dev__/data/`
- [ ] Remover referências a imagens locais no fake-data-generator

## 🔧 FASE 2: Dependências e Configuração

### **2.1 Dependências**
- [ ] Adicionar `@horizon-modules/arbo-crm-integration@^2.0.1`
- [ ] Adicionar `tsx` para executar TypeScript
- [ ] Verificar se `ramda` e `zod` estão corretos

### **2.2 Scripts package.json**
- [ ] `"dev:download": "tsx __dev__/scripts/download-from-arbo.ts"`
- [ ] `"dev:profile": "tsx __dev__/scripts/profile-properties.ts"`
- [ ] `"dev:fake": "tsx __dev__/scripts/generate-fake-data.ts"`
- [ ] `"dev:mocks": "tsx __dev__/scripts/generate-mocks.ts"`
- [ ] `"dev:all": "npm run dev:download && npm run dev:profile && npm run dev:fake && npm run dev:mocks"`

## 🛠️ FASE 3: Implementação dos Serviços

### **3.1 ArboDownloaderService**
- [ ] Criar `__dev__/services/ArboDownloaderService.ts`
- [ ] Implementar método `downloadAndConvert()`
- [ ] Integrar com `@horizon-modules/arbo-crm-integration`
- [ ] Converter dados Arbo para PropertyModel
- [ ] Aplicar validação Zod
- [ ] Salvar em `__dev__/data/arbo-downloads/`

### **3.2 ProfilerService**
- [ ] Criar `__dev__/services/ProfilerService.ts`
- [ ] Implementar análise de campos PropertyModel
- [ ] Gerar estatísticas de valores únicos
- [ ] Salvar relatório em `__dev__/data/profiling-report.json`
- [ ] Replicar lógica do ProfilerService do arbo-crm

### **3.3 FakeDataGeneratorService**
- [ ] Criar `__dev__/services/FakeDataGeneratorService.ts`
- [ ] Usar Unsplash URLs ao invés de imagens locais
- [ ] Basear geração no profiling report
- [ ] Gerar PropertyModel válidos
- [ ] Validar com Zod antes de salvar
- [ ] Salvar em `__dev__/data/fake-data-output/`

### **3.4 MockGeneratorService**
- [ ] Criar `__dev__/services/MockGeneratorService.ts`
- [ ] Gerar mocks válidos e problemáticos
- [ ] Usar profiling para dados realistas
- [ ] Validar mocks válidos com Zod
- [ ] Salvar em `__dev__/data/mock-output/`

## 📜 FASE 4: Scripts de Desenvolvimento

### **4.1 Script de Download**
- [ ] Criar `__dev__/scripts/download-from-arbo.ts`
- [ ] Configurar páginas e quantidade
- [ ] Implementar logging de progresso
- [ ] Tratar erros de conexão
- [ ] Gerar relatório de download

### **4.2 Script de Profiling**
- [ ] Criar `__dev__/scripts/profile-properties.ts`
- [ ] Ler dados de `__dev__/data/arbo-downloads/`
- [ ] Executar ProfilerService
- [ ] Gerar estatísticas detalhadas
- [ ] Salvar relatório JSON

### **4.3 Script de Fake Data**
- [ ] Criar `__dev__/scripts/generate-fake-data.ts`
- [ ] Configurar quantidades por tipo
- [ ] Usar profiling como base
- [ ] Gerar com URLs do Unsplash
- [ ] Validar todos os dados gerados

### **4.4 Script de Mocks**
- [ ] Criar `__dev__/scripts/generate-mocks.ts`
- [ ] Configurar casos válidos e problemáticos
- [ ] Usar profiling para realismo
- [ ] Gerar edge cases úteis para testes

## 🧪 FASE 5: Testes

### **5.1 Testes de Serviços**
- [ ] `__dev__/tests/arboDownloaderService.test.ts`
  - [ ] Mock da API do arbo-crm
  - [ ] Teste de conversão para PropertyModel
  - [ ] Teste de validação Zod
  - [ ] Usar pasta temporária para output

- [ ] `__dev__/tests/profilerService.test.ts`
  - [ ] Mock de dados PropertyModel
  - [ ] Teste de análise estatística
  - [ ] Verificar formato do relatório
  - [ ] Usar pasta temporária

- [ ] `__dev__/tests/fakeDataGeneratorService.test.ts`
  - [ ] Mock do profiling report
  - [ ] Teste com URLs do Unsplash
  - [ ] Validação Zod de todos os dados
  - [ ] Pasta temporária para output

- [ ] `__dev__/tests/mockGeneratorService.test.ts`
  - [ ] Teste de mocks válidos e problemáticos
  - [ ] Verificar casos edge
  - [ ] Validação Zod dos válidos
  - [ ] Pasta temporária para output

### **5.2 Configuração de Testes**
- [ ] Configurar `vitest.config.ts` para `__dev__/`
- [ ] Setup de pastas temporárias
- [ ] Cleanup automático
- [ ] Mock de APIs externas

## 🎨 FASE 6: Atualização do Fake Data Generator Principal

### **6.1 Migração para Unsplash**
- [ ] Atualizar `src/fake-data-generator/index.ts`
- [ ] Remover dependência de `image-manager.ts` local
- [ ] Implementar URLs do Unsplash
- [ ] Usar mesmo padrão do arbo-crm

### **6.2 Imagens do Unsplash**
- [ ] Definir categorias: apartamento, casa, comercial, terreno
- [ ] URLs testadas e funcionais
- [ ] Diferentes tamanhos: full, md, sm
- [ ] Implementar `cover` flag

## 📊 FASE 7: Dados Finais e Exportação

### **7.1 Dados de Produção**
- [ ] Selecionar manualmente dados fake representativos
- [ ] Copiar para `src/data/fake-data/`
- [ ] Selecionar exemplos reais convertidos
- [ ] Copiar para `src/data/examples/`
- [ ] Copiar profiling final para `src/data/profiling/`

### **7.2 Exportação NPM**
- [ ] Atualizar `src/index.ts` para exportar dados
- [ ] Configurar `tsup.config.ts` para incluir `/data`
- [ ] Atualizar `package.json` files array
- [ ] Testar build e exports

### **7.3 Documentação**
- [ ] Atualizar README.md
- [ ] Documentar novos scripts de dev
- [ ] Exemplos de uso dos dados
- [ ] Guia de contribuição

## 🚀 FASE 8: Testes Finais e Publicação

### **8.1 Testes de Integração**
- [ ] Executar `npm run dev:all`
- [ ] Verificar todos os outputs
- [ ] Validar qualidade dos dados
- [ ] Testar importação dos exports

### **8.2 CI/CD**
- [ ] Garantir que testes passam
- [ ] Verificar build sem erros
- [ ] Testar em ambiente limpo
- [ ] Preparar para publicação

### **8.3 Versionamento**
- [ ] Atualizar versão (3.4.0)
- [ ] Changelog detalhado
- [ ] Publicar no NPM
- [ ] Testar instalação externa

## 🔄 FASE 9: Manutenção e Evolução

### **9.1 Automação**
- [ ] Script para atualizar dados periodicamente
- [ ] CI para verificar qualidade dos dados
- [ ] Monitoramento de APIs externas

### **9.2 Melhorias Futuras**
- [ ] Mais categorias de propriedades
- [ ] Integração com outras fontes
- [ ] Dados internacionais
- [ ] IA para geração mais sofisticada

---

## 📋 Status Atual

### **✅ Completo**
- [x] Modelo PropertyModel unificado
- [x] Custom mapper com validação Zod
- [x] Remoção da pasta assets
- [x] Documentação técnica

### **🚧 Em Progresso**
- [ ] Migração do fake-data-generator
- [ ] Estrutura __dev__ completa

### **⏳ Pendente**
- [ ] Todos os serviços e scripts
- [ ] Testes completos
- [ ] Dados de produção
- [ ] Publicação final

---

*Checklist criado em: 2025-07-08*
*Próxima revisão: Após implementação da Fase 1*