UNPKG

@horizon-domains/property-model

Version:

Modelo de propriedades imobiliárias v3 - Sistema de atributos dinâmicos

225 lines (187 loc) 7.85 kB
# 🎨 FakeDataGenerator Project - Documentação do Estado Atual ## 📋 **Objetivo do Projeto** Criar um serviço de geração de dados fake para propriedades imobiliárias que: - Use o **schema base oficial** como fonte de verdade dos campos - Permita **configuração manual** de tipos, subtipos e valores - Gere dados **realistas e variados** para desenvolvimento e testes - Mantenha **imagens Unsplash** dos fake data existentes ## 🏗️ **Arquitetura Definida** ### **1. Schema como Base** - **Source**: `/src/schemas/horizon-property-schema-base.json` - **Tipo Zod**: `HorizonPropertySchemaBaseType` (já gerado) - **Função**: Define TODOS os campos possíveis, tipos, enums, obrigatórios ### **2. Config de Exemplos** - **Localização**: `__dev__/configs/fake-data-examples.ts` (a criar) - **Função**: Configuração manual de valores possíveis por campo - **Exemplos**: ```typescript export const fakeDataExamples = { tipos: ["Apartamento", "Casa", "Sobrado", "Cobertura", "Terreno"], subtipos: { "Apartamento": ["Padrão", "Studio", "Loft", "Duplex"], "Casa": ["Térrea", "Sobreposta", "Geminada"] }, cidades: ["São Paulo", "Rio de Janeiro", "Belo Horizonte"], bairros: { "São Paulo": ["Vila Madalena", "Pinheiros", "Itaim Bibi"], "Rio de Janeiro": ["Copacabana", "Ipanema", "Leblon"] }, caracteristicas: ["Churrasqueira", "Piscina", "Academia", "Jardim"], // ... mais configurações } ``` ### **3. FakeDataGenerator Service** - **Localização**: `__dev__/services/FakeDataGenerator.ts` - **Função**: - Lê o schema JSON para saber os campos - Usa config de exemplos para valores - Gera propriedades seguindo `HorizonPropertySchemaBaseType` - Mantém imagens Unsplash existentes ### **4. Script de Execução** - **Localização**: `__dev__/scripts/generate-fake-properties.ts` - **Comando**: `pnpm dev:generate-fake` - **Função**: Executa o generator com configurações ## 🔄 **Estado Atual do Projeto** ### ✅ **Já Implementado** 1. **ObjectTransformer** movido para dev-toolkit v1.2.0 2. **Script de customização** funcionando (`pnpm dev:customize`) 3. **README atualizado** - removido serviços obsoletos 4. **Index.ts limpo** - só exporta fake-data, schemas, utils 5. **FakeDataGenerator v1** criado (mas precisa refatoração) ### 🚧 **Próximos Passos Definidos** 1. **Criar config de exemplos** (`fake-data-examples.ts`) 2. **Refatorar FakeDataGenerator** para usar schema + config 3. **Testar geração** com dados configuráveis 4. **Integrar com exportação** do pacote ## 📁 **Estrutura de Arquivos** ``` __dev__/ ├── configs/ │ ├── property-customer-rules.ts ✅ (ObjectTransformer rules) │ └── fake-data-examples.ts 🚧 (a criar - config de valores) ├── data/ │ ├── properties-demo/ ✅ (dados reais - só referência) │ └── fake-properties-output/ ✅ (saída do generator) ├── scripts/ │ ├── customize-properties.ts ✅ (ObjectTransformer + BatchFileConverter) │ └── generate-fake-properties.ts ✅ (executa FakeDataGenerator) └── services/ └── FakeDataGenerator.ts 🚧 (refatorar - usar schema+config) ``` ## 🎯 **Especificações Técnicas** ### **Config de Exemplos (fake-data-examples.ts)** ```typescript export interface FakeDataExamples { // Tipos principais tipos: string[] subtipos: Record<string, string[]> // Localização cidades: string[] bairros: Record<string, string[]> logradouros: string[] // Características caracteristicas: string[] // Ranges numéricos ranges: { dormitorios: [number, number] banheiros: [number, number] vagas_garagem: [number, number] area_total: [number, number] valor_venda: [number, number] } // Imagens por categoria images: { apartamento: string[] casa: string[] terreno: string[] comercial: string[] } } ``` ### **FakeDataGenerator Refatorado** ```typescript export class FakeDataGenerator { private schema: any // JSON schema private examples: FakeDataExamples // Config de exemplos private zodType: HorizonPropertySchemaBaseType // Tipo para validação // Métodos principais: generateProperty(): HorizonPropertySchemaBaseType generateByType(tipo: string): HorizonPropertySchemaBaseType generateBatch(count: number): HorizonPropertySchemaBaseType[] } ``` ## 🎨 **Fluxo de Geração** 1. **Lê schema JSON** → sabe quais campos existem 2. **Carrega config de exemplos** → valores possíveis por campo 3. **Para cada campo do schema**: - Se tem `enumValues` → usar enum - Se tem config → usar valores do config - Se tem `required: true` → garantir valor - Se tem `type: "Number"` → usar ranges 4. **Gera combinações lógicas** (ex: Apartamento + subtipo compatível) 5. **Adiciona imagens** baseado no tipo 6. **Valida com Zod** antes de retornar ## 🚀 **Comandos Disponíveis** ```bash # Gerar dados fake pnpm dev:generate-fake # Customizar propriedades existentes pnpm dev:customize # Gerar schemas Zod pnpm generate:zod ``` ## 📝 **Notas Importantes** -**Dados demo** são só para **referência/entendimento** -**Config manual** é a **fonte de verdade** dos valores -**Schema JSON** define **estrutura** e **validações** -**Tipo Zod** garante **type safety** -**Imagens Unsplash** são **mantidas** dos fake data existentes --- ## 🎉 **Status**: CONCLUÍDO COM SUCESSO **Última atualização**: 03/08/2025 - Jefferson **Implementação**: ✅ FakeDataGenerator v2.1 atualizado com novos campos ### ✅ **Entregáveis Finalizados** 1. **FakeDataGenerator v2.1** - Gerador baseado em schema JSON + configuração manual - Validação com Zod garantindo type safety - Suporte a tipos principais e subtipos - **Atualizado com novos campos**: - `condominio_id``condo_id` - Nova geração de `condo_slug` - `corretor_id``broker_id` - Nova geração de `broker_slug` 2. **Estrutura de Tipos/Subtipos** - **Casas/Sobrados**: Casa, Sobrado, Casa de Condomínio - **Apartamentos**: Apartamento Padrão, Cobertura, Duplex, Triplex, Studio, Loft, Garden - **Terrenos/Lotes**: Terreno, Lote - **Comerciais**: Loja Comercial, Sala Comercial, Prédio Comercial, Ponto Comercial - **Rurais**: Chácara, Sítio, Fazenda, Rancho - **Industriais**: Galpão Industrial, Barracão, Área Industrial 3. **Exportações do Pacote** ```typescript import { FakeDataApartamentos, FakeDataCasasSobrados, FakeDataComerciais, FakeDataIndustriais, FakeDataRurais, FakeDataTerrenosLotes, FakeDataAllProperties } from '@horizon-domains/property-model' ``` 4. **Comandos Disponíveis** - `pnpm dev:generate-fake` - Gera dados fake e copia para exportação - `pnpm dev:customize` - Customiza propriedades existentes - `pnpm generate:zod` - Gera schemas Zod ### 📊 **Resultados** - 100 propriedades geradas sem erros de validação - Dados realistas baseados em configuração manual - Imagens Unsplash categorizadas por tipo - Build do pacote funcionando perfeitamente - **Novos campos adicionados**: Geração automática de slugs para condomínios e corretores ### 🔄 **Changelog v2.1 (03/08/2025)** - ✅ Alterado `condominio_id` para `condo_id` conforme schema atualizado - ✅ Adicionada geração automática de `condo_slug` baseada no nome do condomínio - ✅ Alterado `corretor_id` para `broker_id` conforme schema atualizado - ✅ Adicionada geração automática de `broker_slug` baseada no nome do corretor - ✅ Implementadas funções `generateCondoSlug()` e `generateBrokerSlug()` para criar URLs amigáveis