UNPKG

@horizon-domains/property-model

Version:

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

68 lines (53 loc) 1.58 kB
# Arquitetura de Datas - 3 Camadas ## 1. CRM (origem) ``` published_at → primeira publicação no CRM updated_at → última republicação no CRM ``` ## 2. Horizon Base (modelo canônico) ``` source_published_at ← published_at do CRM source_updated_at ← updated_at do CRM ``` ## 3. Web App/API (Prisma) ``` created_at → @default(now()) autogerado updated_at → @updatedAt autogerado first_synced_at → data da PRIMEIRA sincronização (persistente) ``` ## Quando usar cada campo ### Para SINCRONIZAÇÃO ```typescript // Comparar se imóvel precisa atualizar: if (imovel.source_updated_at > ultimaSincronizacao) { // Atualizar } ``` ✅ Usa data EXATA do CRM ### Para ORDENAÇÃO (quando CRM não tem data) ```typescript // Ordenar por mais antigos: ORDER BY first_synced_at ASC ``` ✅ Persiste mesmo com delete+recreate ### Controle interno - `created_at` e `updated_at` do Prisma = apenas audit trail - NÃO usar para lógica de negócio ## Implementação first_synced_at ```typescript // Primeira sincronização: first_synced_at: first_synced_at || new Date() // Próximas sincronizações (manter original): first_synced_at: imovel_existente.first_synced_at ``` ## Mudanças v3.12.5 ### Horizon Base - REMOVIDO: - ❌ `updated_at` - ❌ `created_at` - ❌ `published_at` ### Horizon Base - ADICIONADO: - ✅ `source_published_at` (opcional) - ✅ `source_updated_at` (opcional) ### Publisher - Espera receber do CRM: - `published_at` → mapeia para `source_published_at` - `updated_at` → mapeia para `source_updated_at`