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 |
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 |
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.
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.
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.
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.
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.
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.
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¶
- Confirmar o estado real do Supabase remoto e sua aderência às migrations e aos tipos gerados.
- Confirmar o conteúdo atual, as abas, os cabeçalhos, os responsáveis e a atualização do Google Sheets.
- Confirmar contratos, produtos, limites, cotas, custos e versões atuais das APIs AgRisk, eEmóvel, IBGE, Google Maps, Google Weather, CARTO e Resend.
- Confirmar quais secrets estão configurados no Supabase e em quais ambientes, sem registrar seus valores.
- Confirmar a origem, carga e atualização de
drexies_silosedrexies_revendas, distinguindo-as dos resultados do Google Maps. - Confirmar o processo real de revisão, publicação e reversão de Edge Functions e migrations.
- Confirmar se o RDV deve permanecer no navegador ou ser integrado a uma fonte persistente e compartilhada.
- Confirmar as políticas de retenção, atualização e reconsulta dos resultados da AgRisk e da eEmóvel.
Referências¶
- Regras de Atualização e Sincronização — comportamento de atualização das fontes
- Dicionário de Indicadores e Regras de Negócio — cálculos realizados sobre os dados
- Telas e Funcionalidades — utilização dos dados nas telas