Comparação detalhada do planejamento original (15 módulos, 6 fases) com o estado real do código em produção · 25 de Abril de 2026
Comparação módulo a módulo entre o que foi planejado e o que está rodando hoje em produção.
/tenants/admin/stats.idx_agendamentos_lembrete.taxas-cef-bcb ativo.getTheme() switch./site/:slug/imovel/:imovelSlug), galeria carousel, detalhes completos, simulador embutido, formulário de captação. Tabela imobi.landing_pages com SEO customizável (titulo_seo, descricao_seo, meta_image), contador de visualizações./relatorios/resumo e /relatorios/funil + views imobi.leads_por_semana e imobi.funil_conversao.imobi.chamadas com 14 colunas + RLS. Aguardando upgrade da conta Telnyx.Todos os templates do plano original estão codificados e funcionais — troca em 1 clique sem perder dados.
imobi 33 tabelasMigrations versionadas (001 a 022), RLS em todas as tabelas, 4 storage buckets isolados.
| Categoria | Tabelas | Status |
|---|---|---|
| Core / Multi-tenant | tenants · profiles · permission_overrides · subscription_plans · tenant_settings | 5/5 |
| Imóveis | imoveis · imovel_localizacao · imovel_fotos · imovel_videos · imovel_documentos · imovel_caracteristicas | 6/6 |
| CRM | leads · pipeline_estagios · lead_historico · lead_imoveis | 4/4 |
| whatsapp_instances · whatsapp_conversations · whatsapp_messages · whatsapp_templates | 4/4 | |
| Agenda | agendamentos (videocall_url + room embutidos) | consolidado |
| Negócios + Contratos | negocios · contratos (assinatura embutida) | 2/2 |
| Chamadas | chamadas (transcrição + resumo embutidos) | consolidado |
| Site público | site_configuracoes · landing_pages · formularios_captacao | 3/3 |
| Tabela | Função | Migration |
|---|---|---|
| infinitepay_config | Singleton de credenciais do gateway (super_admin only) | 015 |
| tenant_subscriptions | Assinatura por tenant (status / trial / vencimento / valor mensal) | 015 |
| subscription_invoices | Faturas com Pix QR + Boleto + Cartão (idempotência por ip_charge_id) | 015 |
| subscription_events | Log de eventos de assinatura (auditoria + idempotência webhook) | 015 + 022 |
| jwt_blocklist | SHA256 de JWTs invalidados — logout efetivo (anti-session-fixation) | 020 |
| audit_log | Append-only · trigger impede UPDATE/DELETE · before/after JSON · IP + UA | 021 |
| Plano original | Status | Onde foi parar |
|---|---|---|
| videocalls | consolidado | Campos videocall_url e videocall_room em agendamentos |
| call_gravacoes / call_transcricoes / call_resumos_ia | consolidado | Campos recording_url, transcricao, resumo_ia em chamadas |
| contrato_assinaturas | consolidado | Campos token_assinatura, signatario_*, assinado_em, assinatura_img, ip_assinatura em contratos |
| lead_origem | simplificado | Campo origem em leads (texto livre) |
| proposta_condicoes / contrato_templates | não criado | JSON livre em contratos.conteudo e negocios.observacoes |
| respostas_rapidas | não criado | Substituído por whatsapp_templates com categorias |
| Bucket | Público? | Tamanho | MIME types |
|---|---|---|---|
| imobi-fotos | público | 10 MB | jpeg, png, webp, heic, heif |
| imobi-videos | público | 100 MB | mp4, webm, quicktime |
| imobi-docs | privado | 20 MB | pdf, image/* |
| imobi-gravacoes | privado | 50 MB | mp3, wav, ogg, webm |
Fastify 5 + Supabase com RLS automático via withUser(req), JWT httpOnly + blocklist, refresh rotation, HMAC validado em todos os webhooks.
| /auth | login · me · refresh · logout (cookie httpOnly + blocklist) |
| /tenants | CRUD · domain custom · admin/stats · admin/list · lead-capture-token |
| /users | CRUD · roles · proteção último admin |
| /properties | CRUD · upload fotos · ficha PDF · slug |
| /leads | CRUD · kanban · histórico · chamadas vinculadas |
| /pipeline | stages CRUD · reorder · seed default |
| meta-webhook · instances · conversations · send | |
| /whatsapp-templates | CRUD · reorder · 5 categorias |
| /chamadas | iniciar · webhook Telnyx · transcrever · transferir |
| /agenda | CRUD · today · conflict detection · lembrete WA |
| /negocios | CRUD · PDF proposta · soft-delete · comissão |
| /contratos | CRUD · PDF · /assinar/:token público |
| /site | catálogo público · slug ou Host (custom domain) |
| /feed | :slug/zap.xml · :slug/olx.xml |
| /simulador | taxas BCB · simular SAC/PRICE |
| /billing | webhook InfinitePay · idempotência por NSU |
| /search | busca global (imóveis + leads + negócios) |
| /export | CSV leads · imóveis · negócios |
| /push | VAPID · subscribe · auto-cleanup 410 |
| /notifications | recent (leads + visitas) |
| /internal | followup-3d · leads/capture/:token (n8n / Mailgun / Zapier) |
| Meta WhatsApp Cloud API | v21.0 |
| Innove COEX | multi-device |
| Telnyx Call Control | código pronto freemium |
| Daily.co | + Jitsi fallback |
| OpenAI / Whisper | transcrição |
| Groq Whisper Large V3 | preferencial vs OpenAI |
| Google Gemini 2.5 Flash | qualificação + resumo |
| Resend | e-mails transacionais |
| BCB API | Selic / IPCA / TR / Poupança |
| InfinitePay | Pix · Boleto · Cartão |
| Sentry | monitoring + tracing |
| Cloudflare Turnstile | anti-bot |
jwt_blocklist SHA256 (anti-session-fixation)withUser(req)PWA instalável, dark mode, animações Framer Motion, drag-drop nativo no Kanban.
| /login | Aurora animada · rate-limit aware |
| /:slug/dashboard | KPIs · Recharts · forecast role-based |
| /:slug/properties | List · grid 3-col · filtros · fotos |
| /:slug/properties/new | Form completo + drag-reorder fotos |
| /:slug/crm | Kanban drag-drop + drawer |
| /:slug/whatsapp | Inbox + templates + OAuth Meta popup |
| /:slug/agenda | Calendário grid + modal + lembrete WA |
| /:slug/chamadas | Player + transcrição + resumo IA |
| /:slug/relatorios | Funnel · Area · Pie · Bar charts |
| /:slug/negocios | CRUD · PDF · status soft-delete |
| /:slug/contratos | CRUD · 4 tipos · status |
| /:slug/simulador | SAC/PRICE · 8 modalidades |
| /:slug/settings | Branding · 5 templates · feeds |
| /:slug/equipe | Users CRUD · roles |
| /:slug/admin | Super Admin global · MRR |
| /:slug/billing | Faturas · PIX QR · Boleto |
| /site/:slug | Catálogo público · 5 templates |
| /site/:slug/imovel/:slug | Landing page com simulador |
| /assinar/:token | Assinatura digital pública |
| /whatsapp/callback | OAuth callback Meta |
| Manifest + Service Worker | vite-plugin-pwa |
| Add to Home Screen | iOS + Android |
| Push Notifications | VAPID + auto-cleanup |
| Offline precache | Workbox |
| Câmera nativa | não integrada |
| Geolocalização | não integrada |
| Voz para texto | não integrada |
| Web Share API | não integrada |
| Offline full + sync | só precache |
| Responsivo (mobile/tablet) | 100% |
| Dark mode | não previsto |
| LoginPage | Aurora 3 blobs · FloatCard slide-up · form stagger |
| DashboardPage | AnimatedCounter spring · KPI fade-up stagger |
| CRMPage | LeadCard fade-in stagger · drag-over highlight |
| PropertiesListPage | StaggerFade · GlowCard mouse-tracking |
| AgendaPage | Event fade-in · modal transitions |
| Componentes custom | AnimatedCounter · FadeIn · StaggerFade · GlowCard |
Em /root/imobi-fluxiom/n8n-workflows/. Container n8n-cwscog4c8w4og00g88kcwkc8 rodando há 22h.
| # | Workflow | Status | Detalhes |
|---|---|---|---|
| W1 | Lead WhatsApp → triagem → atribuir | não criado | Coberto pela API: webhook Meta cria lead + IA qualifica + atribuir_corretor() RPC. Workflow n8n redundante. |
| W2 | Confirmação visita -24h | não criado | Index parcial pronto, lembrete em agendamentos aguarda criação do workflow. |
| W3 | Pós videocall (transcrição + resumo) | não criado | Telnyx faz isso direto via webhook. Para Daily.co ainda é manual. |
| W4 | Lead via LP | não criado | Coberto por POST /internal/leads/capture/:token direto. |
| W5 | Follow-up 3d Leads Inativos | importado aguarda toggle Active | Cron 09:00 UTC · POST /internal/followup-3d · token embutido |
| W6 | Proposta enviada (alerta +48h) | não criado | — |
| W7 | Ligação IA Telnyx pós-call | parcial via webhook | Telnyx envia transcrição + áudio direto no webhook. Backend salva. Resumo Gemini ainda não está em workflow n8n separado. |
| W8 | Campanha outbound de reengajamento | não criado | Depende de Telnyx liberar e BullMQ + worker (não implementado). |
| +1 | EXTRA Taxas CEF via BCB | ATIVO | Cron 06:00 UTC · 4 endpoints BCB paralelos · POST /simulador/taxas com x-webhook-secret |
| +1 | EXTRA Scraping CEF on-demand | webhook fallback | HTML scraping caixa.gov.br + regex de taxas + fallback hardcoded |
Único módulo travado por terceiros. Código 100% pronto — aguarda só upgrade da conta freemium.
telnyx-ticket-reply.md. Monitor cron a cada 30min na VPS detectará a liberação automaticamente.imobi.chamadas com 14 colunas + RLS por tenantPOST /chamadas/webhook com HMAC Ed25519POST /chamadas/iniciar com rate limit 10/himobi-gravacoes (50 MB max){{lead_name}}, {{agency_name}}, etc) — endpoint /api/calls/ai-variables previsto no plano ainda não foi necessáriobuscar_imoveis, agendar_visita, atualizar_lead, transferir_corretor) — design pronto, code-stub aguardando freemiumFuncionalidades agregadas durante o desenvolvimento, em resposta a necessidades operacionais reais.
POST /internal/leads/capture/:token/feed/:slug/zap.xml (padrão VivaReal/ZAP)/feed/:slug/olx.xml (padrão OLX Ads)imobi.tenants.domain_custom com unique case-insensitivePATCH /tenants/:id/domain com validação FQDNcustom-domain-runbook.mdimobi-themeGET /search?q=...GET /notifications/recentVPS 72.60.245.203 · Coolify + Traefik (proxy automático com Let's Encrypt) · Supabase self-hosted.
| imobi-api | node:20-alpine · 4001 · Up 20h |
| imobi-frontend | nginx:alpine · 80 · Up 20h |
| supabase-db-* | PostgreSQL 15 · healthy |
| supabase-auth-* | JWT · healthy |
| supabase-rest-* | PostgREST · healthy |
| supabase-storage-* | S3-like · healthy |
| supabase-realtime-* | WebSocket · healthy |
| supabase-kong-* | API Gateway · healthy |
| n8n-cwscog4c8w4og00g88kcwkc8 | 5678 · healthy · 22h |
| coolify-proxy | Traefik · 80/443 · healthy |
| Item | Plano | Real |
|---|---|---|
| Serviços Docker | 3 (API/worker/monitor) | 2 (API/Frontend) |
| Workers BullMQ | previsto | não criado |
| Subdomínios Traefik | 5 padrões | 1 (app.) + Host header dinâmico no app |
| HTTPS automático | — | Let's Encrypt via Traefik |
| Supabase | self-hosted | 10 containers Coolify |
| n8n | existente | healthy 22h |
| Decisão | Status atual |
|---|---|
| Daily.co para videocall | ativo · com Jitsi fallback |
| Telnyx para ligações IA | código pronto freemium |
| Assinatura digital interna + Gov.br para oficiais | página pública por token + fluxo upload |
| Nome do produto: Imobi Fluxiom | aplicado em todo lugar |
| Billing via InfinitePay | checkout + webhook + faturas |
| Subdomínio + custom domain via CNAME | ambos funcionam |
| Calendário 100% interno (sem Google) | grid + slots + lembretes WA |
| Plano único — todos têm os 5 templates | sem tier de template |
| Taxas CEF automáticas via n8n | workflow ativo · cron 06:00 UTC |
Estado atual conforme pendencias.md · 24/04/2026.
| # | Item | Prioridade | Detalhes |
|---|---|---|---|
| 1 | Telnyx — Upgrade de conta | 🔴 Bloqueador | Ticket #2823698 sem retorno há 2 dias. Bump pronto em EN/PT. Monitor cron a cada 30min detecta liberação. |
| 2 | Follow-up n8n W5 | 🟡 2 cliques | Workflow importado em n8n.fluxiom.com.br com token embutido. Aguarda toggle Active via UI. |
| 3 | Portais ZAP / OLX / VivaReal | 🟡 Aguarda cliente | URLs públicas /feed/:slug/zap.xml e /feed/:slug/olx.xml prontas. Aguarda imobiliária aprovar conta profissional em cada portal e cadastrar a URL do feed. |
| 4 | Custom Domain — automatização Traefik | 🟢 Melhoria | Camada de app pronta. Hoje é manual (~2min/cliente, runbook documentado). Provider dinâmico Traefik adiado por baixa demanda. |
| 5 | Workflows n8n W1–W4, W6, W8 | 🟢 Maior parte coberta | W1, W3, W4 já cobertos por API direta (Meta webhook + Telnyx webhook + lead-capture endpoint). W2, W6, W8 podem ser criados conforme necessidade operacional. |
| 6 | BullMQ + worker outbound | 🟢 Pós go-live | Necessário só quando Telnyx liberar e for ligar para campanha em massa. Para click-to-call e webhook inbound não é necessário. |
O sistema entregou 13 dos 15 módulos do plano original em 100%, com 2 módulos consolidados (Propostas dentro de Negócios; sub-tabelas de calls embutidas em chamadas) e 12+ features extras agregadas em segurança, integração com portais, billing completo, custom domain e auditoria.
O único bloqueador externo é o upgrade da conta Telnyx (módulo 15 — Ligações IA tem código 100% pronto, schema, frontend, webhook validado, transcrição e resumo IA). Após o upgrade, o módulo entra em produção sem deploy adicional.
Recursos PWA avançados (câmera nativa, geolocalização, voz para texto, share API, offline full com IndexedDB) são as únicas lacunas reais — todos opcionais e não bloqueantes para o go-live de uma imobiliária. Podem ser entregues incrementalmente conforme uso.