← Voltar aos projetos

Projeto demonstrativo 01 / 04

Pipeline geográfico · LWC + Apex

Opportunity Map

Um mapa interativo que transforma território, estágio e valor do pipeline em uma decisão visual sem abrir mão da segurança da consulta dinâmica.

Projetos demonstrativos, empresas e dados fictícios. Experiências profissionais reais não são publicadas por confidencialidade.

A solução

Do sinal disperso a um comportamento verificável.

A interface agrupa oportunidades por conta, descobre multipicklists em runtime, salva combinações de filtros e solicita geocoding assíncrono somente quando necessário.

Arquitetura

O caminho principal dos dados

  1. 01LWC de filtros
  2. 02Controller
  3. 03Selectors em USER_MODE
  4. 04Leaflet + cluster
  5. 05Queueable de geocoding

Decisões centrais

Onde a engenharia realmente aparece

Entrada dinâmica

Whitelist antes da consulta

Campos aceitos vêm do Schema.describe; valores entram por bind e nomes desconhecidos são rejeitados.

Escala

Um marcador por conta

O mapa reduz ruído visual com clustering, cache por combinação e limite controlado de registros.

Integração

Geocoding fora da transação

Um Queueable com callouts processa lotes e respeita cache para evitar chamadas repetidas.

Explore o pipeline

Use os filtros e clique em uma conta para abrir suas oportunidades.

Demo ao vivo
opportunity-map.app

Clique numa conta no mapa para ver o painel completo de oportunidades.

Por dentro do projeto

Decisões que não cabem numa captura de tela

Modelo de dados

As coordenadas usam os campos padrão da conta. Visualizações salvas guardam o conjunto de filtros como JSON, enquanto limiares visuais ficam em Custom Metadata.

A solução não depende de objetos artificiais para representar o pipeline: ela trabalha sobre Account, Opportunity e OpportunityLineItem.

Segurança por desenho

As classes de produção usam sharing. A consulta principal roda com queryWithBinds em USER_MODE, e a gravação de visualizações respeita as permissões do usuário.

Multipicklists descobertas em runtime passam por whitelist; valores e literais recebem tratamentos diferentes para evitar injeção.

O que a demo prova

A demonstração reproduz o comportamento central: combinar filtros, atualizar o mapa e abrir o contexto da conta. Os dados são sintéticos e nenhuma org é acessada.