Ir para o conteúdo

Fontes de Dados e Linhagem

Sistema: Drexies Agro | Responsável: Equipe de Dados Sonar

Esta página documenta as fontes internas e externas identificadas no código da Drexies Agro, os componentes que acessam esses dados e os principais fluxos entre origem, processamento, persistência e telas.

Escopo da análise

O inventário representa o repositório analisado, incluindo frontend, Edge Functions, tipos gerados do Supabase e migrations locais. A existência de uma migration ou de um tipo gerado não comprova, isoladamente, que o banco remoto possui exatamente a mesma estrutura.


Arquitetura geral

flowchart LR
    U[Usuário] --> F[Frontend React]
    F --> H[Hooks e services]
    H --> S[Cliente Supabase]
    S --> A[Supabase Auth]
    S --> P[PostgreSQL via PostgREST]
    S --> R[RPCs PostgreSQL]
    S --> E[Edge Functions]
    E --> X[APIs externas]
    E --> P
    H --> C[Cálculos no frontend]
    C --> T[Telas da Drexies Agro]
    P --> H
    R --> H

O frontend React usa hooks e services para carregamento, transformação, cache de consulta e persistência. O cliente @supabase/supabase-js recebe a URL e a chave publicável por VITE_SUPABASE_URL e VITE_SUPABASE_PUBLISHABLE_KEY.

As sessões são persistidas no navegador e possuem renovação automática de token. As operações de dados usam Supabase Auth, PostgreSQL/PostgREST, RPCs ou Edge Functions.

Classificação das fontes

Classificação Conteúdo identificado Comportamento
Fonte interna persistida Tabelas e view do schema public no Supabase Consultada e alterada por PostgREST, services, hooks e Edge Functions
Fonte externa Google Sheets, AgRisk, eEmóvel, IBGE, Google Maps, Google Weather, CARTO e Resend Consultada por Edge Function ou, para malhas municipais e camadas cartográficas, diretamente pelo frontend
Dado consultado sob demanda Municípios, concorrentes, AgRisk, eEmóvel e planilha Obtido quando uma tela ou ação solicita a informação
Dado externo persistido Resultados AgRisk, contatos enriquecidos e cache climático Gravado no Supabase após consulta ou sincronização
Dado calculado pela aplicação Potenciais, indicadores, segmentações, comissões e DRE Calculado em services, hooks e componentes React
Dado local do navegador Lançamentos de RDV Persistido em localStorage, separado do Supabase

Frontend, hooks e services

As páginas e os componentes React consomem dados por hooks e services. O frontend também calcula filtros, totais de clientes e não clientes, potencial econômico, comissão, agregações mensais e composição da DRE.

Camada Responsabilidades identificadas
Hooks de dados Google Sheets, macroagregações, manejo, preços, potenciais, planos, simulações, comissões, aprovações, AgRisk, contatos, propriedades, silos e revendas
Services Consultas PostgREST, chamadas RPC, normalização, persistência e regras de cálculo
Componentes React Filtros, cálculos de apresentação, ações do usuário e composição das telas
React Query Cache e invalidação das consultas usadas por diferentes telas
Tela React → hook → service → PostgREST, RPC ou Edge Function → transformação → tela

Supabase, PostgreSQL e autenticação

O Supabase atua como backend de autenticação, banco PostgreSQL, API de dados e ambiente das Edge Functions. O frontend executa select, insert, update, upsert e delete nas estruturas expostas pelo cliente.

As migrations locais definem tabelas, view, funções, gatilhos e políticas de segurança em nível de linha. O acesso efetivo depende da sessão, do perfil, do papel e das políticas do ambiente em execução.

Estrutura Finalidade identificada
auth.users Identidades gerenciadas pelo Supabase Auth
user_profiles Perfil, situação e escopo organizacional do usuário
user_roles Papel associado ao usuário
get_my_profile() Retorna o perfil do usuário autenticado
has_role() Verifica se um usuário possui determinado papel
is_active_authenticated() Verifica autenticação ativa conforme a regra do banco
is_protected_user() Identifica usuário protegido por regras administrativas
Credenciais → Supabase Auth → sessão persistida → perfil e papel → telas e dados permitidos
Recuperação de senha → send-password-reset → conector Resend → e-mail → Supabase Auth

A Edge Function manage-users usa um cliente administrativo do Supabase e consulta perfis e papéis para executar a gestão de usuários.


Produtores, propriedades e território

Estrutura Conteúdo identificado
drexies_producers Produtores, documento, proprietário, carteira, segmento e vínculo AgRisk
drexies_properties Propriedades, município, áreas, carteira, vendedor e culturas
drexies_property_details Solo, coordenadas, endereço e contatos complementares
drexies_municipality_summary View de resumo municipal
drexies_silos Silos com localização, capacidade e informações disponíveis
drexies_revendas Revendas com localização e informações comerciais disponíveis
PostgreSQL → PostgREST/services → produtores e propriedades → filtros e cálculos → Regiões e Produtores

A RPC get_macro_aggregates recebe filtros e retorna agregações por município/cultura, município e vendedor, além das dimensões disponíveis.

Filtros da tela → get_macro_aggregates → agregação no PostgreSQL → indicadores regionais

Silos e revendas cadastrados são lidos das respectivas tabelas. Há também uma busca sob demanda de estabelecimentos no Google Maps; as duas origens não são equivalentes.


Produtos, preços, manejo e potenciais

Estrutura Conteúdo identificado
drexies_products Produtos usados nos manejos
drexies_price_lists Cabeçalhos de tabelas de preço
drexies_price_list_items Itens, classificações e níveis de preço
drexies_manejo_items Produto, cultura, dose e manejo padrão
drexies_market_params Produtividade esperada e cotação por cultura
drexies_plan_manejo_items Manejos específicos de um plano de vendas
drexies_custom_potentials Cabeçalho do potencial personalizado
drexies_custom_potential_items Itens do cenário personalizado
Produtos + preços + manejo + parâmetros de mercado
→ services de manejo e potencial
→ cálculo por cultura e área
→ Potencial de Mercado, Regiões, Produtores e planejamento

O cálculo do potencial é realizado pela aplicação. A ordem identificada considera manejo valorizado pelos produtos, produtividade multiplicada pela cotação, valor padrão configurado e fallback técnico. O potencial personalizado é persistido separadamente do potencial padrão.

Itens da simulação → cálculo no frontend → potencial e itens personalizados → produtor

Planos de vendas, simulações, comissões e DRE

Estrutura Conteúdo identificado
drexies_sales_plans Cabeçalho e parâmetros do plano
drexies_sales_plan_targets Metas vinculadas ao plano
drexies_sales_plan_items Itens e distribuição mensal do plano
drexies_simulation_orders Pedidos simulados, situação, vendedor e vínculo opcional com plano
drexies_simulation_order_items Produtos e valores dos pedidos simulados
drexies_producer_commissions Configuração de comissão por produtor
drexies_dre_plan_approvals Estado do fluxo de aprovação do plano
drexies_dre_clear_log Registro das operações de limpeza da DRE
Produtores + potencial + manejo e preços
→ plano, metas e itens
→ projeções, comissões, aprovações e DRE
Catálogo + quantidade + área + preço
→ cálculo da simulação
→ pedido e itens simulados
→ conversão opcional em itens do plano
Configuração de comissão + itens comerciais
→ commissionService e componentes React
→ comissão linear, por categoria e gerencial
→ produtor e DRE

A DRE é calculada na aplicação com dados de metas, realizados, comissões, Over Price, ajustes e despesas. Não foi identificada uma tabela única que materialize seu resultado completo.

Os lançamentos de RDV do hook useRdvs ficam no localStorage, por vendedor e ano, e são agregados mensalmente no navegador antes de compor a DRE.

Ponto a validar — RDV

Confirmar se o armazenamento local é o processo definitivo ou se existe uma fonte corporativa não presente no código. O localStorage não comprova sincronização entre usuários ou dispositivos.


Google Sheets

A Edge Function google-sheets-proxy consulta a API do Google Sheets usando o secret GOOGLE_SHEETS_API_KEY. O service dataSource lê os cabeçalhos, normaliza nomes e números, descarta linhas inválidas e calcula totais por classe, clientes e não clientes.

Google Sheets → google-sheets-proxy → dataSource → normalização e cálculos → Potencial de Mercado

O código tenta extrair códigos IBGE e cidades da aba principal quando as colunas existem. Na ausência dos cabeçalhos esperados, retorna lista vazia. As linhas são processadas em memória; não foi identificada persistência desse fluxo no Supabase.

Ponto a validar

Confirmar o conteúdo atual, as abas, os cabeçalhos, os responsáveis e a rotina de atualização da planilha. O ID da planilha informado no README diverge do ID configurado na Edge Function google-sheets-proxy; confirmar qual configuração corresponde ao ambiente utilizado, sem assumir que um dos IDs esteja correto.


AgRisk

A Edge Function agrisk centraliza autenticação, sincronização de produtos e clientes, consultas, análise completa, atualização de riscos e ativos e vínculos com produtores.

Análise de Risco → useAgrisk → Edge Function agrisk
→ API AgRisk → normalização e persistência → telas de risco
Estrutura Conteúdo identificado
drexies_agrisk_auth Estado técnico de autenticação
drexies_agrisk_products Produtos de consulta sincronizados
drexies_agrisk_clients Clientes sincronizados ou vinculados
drexies_agrisk_queries Consultas, estado, resultado e erros
drexies_agrisk_error_log Falhas técnicas da integração
drexies_agrisk_producer_links Vínculo entre produtor e cliente AgRisk
drexies_agrisk_rural_properties Imóveis rurais retornados
drexies_agrisk_rural_summary Consolidação rural
drexies_agrisk_family_members Vínculos familiares
drexies_agrisk_compliance Conformidade, PEP e trabalho escravo
drexies_agrisk_protests e drexies_agrisk_protests_summary Protestos e totalização
drexies_agrisk_lawsuits Processos judiciais

Os resultados externos são consultados sob demanda e parcialmente persistidos. A função usa AGRISK_CREDENTIAL e AGRISK_PASSWORD.


eEmóvel

A Edge Function eemovel-enrich consulta a API eEmóvel por CPF ou CNPJ com EEMOVEL_API_KEY, normaliza os dados e atualiza drexies_producer_contacts, podendo relacionar a resposta aos produtores encontrados.

Documento → eemovel-enrich → API eEmóvel
→ normalização → drexies_producer_contacts → produtor

O código também contém processamento em lotes por chamadas sucessivas à Edge Function.


IBGE e dados geográficos

A Edge Function ibge-municipios consulta municípios de um estado. O mapa consulta diretamente malhas municipais GeoJSON para desenhar polígonos e usa camadas externas do CARTO como base e rótulos.

Estado → ibge-municipios → API IBGE → municípios → filtros e cadastros
Código IBGE → API de malhas do IBGE → GeoJSON em memória → mapa regional

Google Maps, concorrentes e clima

A Edge Function nearby-competitors pesquisa cooperativas, revendas e silos pelo conector Google Maps, elimina duplicidades, calcula distância e ordena os resultados. Não foi identificada persistência dessa busca.

Coordenadas → nearby-competitors → Google Maps/Places
→ filtro e distância → produtor

A Edge Function weather-summary consulta condições atuais e histórico horário, calcula temperatura média e precipitação dos 30 dias considerados e mantém cache de 24 horas por coordenadas arredondadas.

Coordenadas → weather-summary → drexies_weather_cache
→ se necessário, Google Weather → consolidação → cache → tela

As funções usam LOVABLE_API_KEY e GOOGLE_MAPS_API_KEY para o conector configurado.


Edge Functions identificadas

Edge Function Responsabilidade
agrisk Integração e persistência de resultados AgRisk
eemovel-enrich Enriquecimento cadastral e de contatos
google-sheets-proxy Leitura do Google Sheets
ibge-municipios Consulta de municípios no IBGE
nearby-competitors Busca de estabelecimentos próximos
weather-summary Consulta climática com cache
manage-users Gestão administrativa de usuários
send-password-reset Recuperação e envio de e-mail de redefinição

Inventário consolidado do Supabase

Grupo Tabelas presentes nos tipos gerados
Usuários e auditoria user_profiles, user_roles, drexies_audit_log
Mercado e território drexies_producers, drexies_properties, drexies_property_details, drexies_silos, drexies_revendas, drexies_weather_cache
Produtos e potencial drexies_products, drexies_price_lists, drexies_price_list_items, drexies_manejo_items, drexies_market_params, drexies_custom_potentials, drexies_custom_potential_items
Planejamento e DRE drexies_sales_plans, drexies_sales_plan_targets, drexies_sales_plan_items, drexies_plan_manejo_items, drexies_simulation_orders, drexies_simulation_order_items, drexies_producer_commissions, drexies_dre_plan_approvals, drexies_dre_clear_log
AgRisk drexies_agrisk_auth, drexies_agrisk_products, drexies_agrisk_clients, drexies_agrisk_queries, drexies_agrisk_error_log, drexies_agrisk_producer_links, drexies_agrisk_rural_properties, drexies_agrisk_rural_summary, drexies_agrisk_family_members, drexies_agrisk_compliance, drexies_agrisk_protests, drexies_agrisk_protests_summary, drexies_agrisk_lawsuits
Contatos drexies_producer_contacts
Tipo Nome Finalidade identificada
View drexies_municipality_summary Resumo por município
RPC get_macro_aggregates Agregações territoriais e comerciais
Função get_my_profile() Perfil autenticado
Função has_role() Verificação de papel
Função is_active_authenticated() Verificação de autenticação ativa
Função is_protected_user() Verificação de usuário protegido

Estado do banco

Este inventário usa os tipos gerados e as migrations locais. Migrations antigas mencionam estruturas intermediárias ou substituídas. O banco remoto deve ser inspecionado antes de considerar esta lista uma fotografia do ambiente publicado.


Linhagem resumida por área

Área Linhagem principal
Potencial de Mercado Google Sheets → Edge Function → normalização e cálculos → dashboard
Regiões Produtores/propriedades → PostgREST ou RPC → agregações e potencial → visão regional
Produtores Produtores, propriedades e detalhes → services/hooks → ranking e detalhamento
Plano de Vendas Potencial, manejo e preços → plano, metas e itens → projeção e realizado
Simulação Produtor e catálogo → cálculo → pedido e itens → possível vínculo com plano
Comissão Configuração + itens comerciais → cálculo → produtor/DRE
DRE Plano, metas, realizado, comissão, ajustes e RDV local → cálculo React → tabela mensal
Análise de Risco Documento → AgRisk → persistência → tela
Contatos Documento → eEmóvel → contatos persistidos → produtor
Clima Coordenadas → cache/Google Weather → consolidação → tela

Pontos a validar

  1. Confirmar o estado real do Supabase remoto e sua aderência às migrations e aos tipos gerados.
  2. Confirmar o conteúdo atual, as abas, os cabeçalhos, os responsáveis e a atualização do Google Sheets.
  3. Confirmar contratos, produtos, limites, cotas, custos e versões atuais das APIs AgRisk, eEmóvel, IBGE, Google Maps, Google Weather, CARTO e Resend.
  4. Confirmar quais secrets estão configurados no Supabase e em quais ambientes, sem registrar seus valores.
  5. Confirmar a origem, carga e atualização de drexies_silos e drexies_revendas, distinguindo-as dos resultados do Google Maps.
  6. Confirmar o processo real de revisão, publicação e reversão de Edge Functions e migrations.
  7. Confirmar se o RDV deve permanecer no navegador ou ser integrado a uma fonte persistente e compartilhada.
  8. Confirmar as políticas de retenção, atualização e reconsulta dos resultados da AgRisk e da eEmóvel.

Referências