Negócio

Painel Administrativo

Documentacao do painel admin do AgrSis - dashboard, CRUD de usuarios, assinaturas, configuracoes e relatorios.

Painel Administrativo

O painel administrativo (apps/admin) e uma aplicacao Nuxt 3 que consome a API Laravel. Destinado a equipe interna da AgrSis para gestao completa da plataforma.

URL local: http://localhost:3005URL producao: https://admin.agrsis.com


Dashboard

A pagina principal (pages/dashboard.vue) exibe metricas consolidadas do sistema em tempo real.

Metricas Principais (primeira linha)

MetricaDescricao
Usuarios CadastradosDonut chart com distribuicao por perfil (produtores, fornecedores, consultores, admins) e total
CotacoesTotal de cotacoes criadas e quantidade de ativas
PropostasTotal de propostas recebidas e quantidade de aceitas
Total MovimentadoValor financeiro total das propostas aceitas, com indicador de crescimento percentual

Metricas Adicionais (segunda linha)

MetricaDescricao
Duracao Media das CotacoesTempo medio em dias das cotacoes finalizadas
Tempo Medio de AprovacaoTempo medio para produtor aprovar proposta (referencia: prazo de 48h)
Tempo Medio para 1a PropostaIntervalo entre publicacao da cotacao e recebimento da primeira proposta
Cobertura de PropostasPercentual de cotacoes publicadas que receberam pelo menos uma proposta

Metricas de Assinaturas e Receita (terceira linha)

MetricaDescricao
Assinantes ativosTotal de assinaturas ativas (pagos + trial), com alerta de vencimentos proximos
Em trialQuantidade em periodo de teste e expirados
ARRAnnual Recurring Revenue - receita anual recorrente calculada a partir das assinaturas ativas
Receita do mesSoma dos pagamentos confirmados no mes corrente

Inclui tambem um grafico de barras com a receita mensal dos ultimos 6 meses.

Endpoint: GET /api/v1/admin/dashboard e GET /api/v1/admin/subscription-metrics


CRUD de Produtores

Listagem (/producers)

  • Busca por nome, email, CPF/CNPJ, celular
  • Filtro por status (ativo/inativo) e por termos como "ativo"/"inativo"
  • Filtro para exibir contas excluidas (soft delete)
  • Ordenacao por nome, email, status, data de criacao
  • Paginacao configuravel (padrao: 25 registros)

Endpoint: GET /api/admin/producers

Ficha do Produtor (/producers/[id])

Exibe informacoes completas do produtor:

  • Dados pessoais: nome, email, documento (CPF/CNPJ), telefone, celular, status, verificacao de email
  • Perfil de produtor: tipo (PF/PJ), area plantada, associacao, cooperativa de produtores, cooperativa de credito
  • Culturas: lista de culturas plantadas vinculadas
  • Enderecos: enderecos cadastrados com coordenadas geograficas
  • Referencias: referencias comerciais (tipo, nome, telefone, email)
  • Assinatura: plano atual, status, ciclo de cobranca, data de vencimento

KPIs do produtor:

KPIDescricao
Cotacoes por statusContagem por: rascunho, pendente, publicada, em analise, adjudicada, finalizada, cancelada, revogada, expirada
Economia geradaValor total das propostas aceitas em cotacoes finalizadas
Total de propostasQuantidade de propostas recebidas nas cotacoes do produtor
Fornecedores unicosQuantidade de fornecedores distintos que enviaram propostas

Endpoint: GET /api/admin/producers/{id}


CRUD de Fornecedores

Listagem (/suppliers)

  • Busca e filtros semelhantes aos produtores
  • Paginacao com 25 registros por padrao

Endpoint: GET /api/admin/suppliers

Ficha do Fornecedor (/suppliers/[id])

  • Dados cadastrais: razao social, email, CNPJ, telefone, site, status
  • Enderecos: matriz, filiais, depositos
  • Tipos de produto: categorias de produtos que o fornecedor trabalha
  • Area de atuacao: tipo geografico (nacional, por estados, por cidades), estados e cidades selecionados

KPIs do fornecedor:

KPIDescricao
Propostas enviadasTotal, pendentes, aceitas, rejeitadas
Licitacoes participadasQuantidade de cotacoes em que participou
Licitacoes ganhasCotacoes com proposta aceita
Volume negociadoValor total das propostas aceitas
Produtores atendidosQuantidade de produtores unicos

Criacao de Fornecedor (/suppliers/new)

Formulario com validacao completa:

  • Dados obrigatorios: nome, email (unico), CNPJ (unico), senha
  • Pelo menos 1 endereco obrigatorio (tipo, nome, CEP, logradouro, numero, cidade, estado)
  • Tipos de produto e area de atuacao opcionais
  • Cria automaticamente o usuario associado com perfil supplier

Endpoints: POST /api/admin/suppliers, PUT /api/admin/suppliers/{id}, DELETE /api/admin/suppliers/{id}


Gestao de Assinaturas

Listagem de Assinaturas (/subscriptions)

  • Filtro por status: trial, active, expired, cancelled
  • Exibe: usuario, plano, status, ciclo de cobranca, data de vencimento
  • Paginacao com 25 registros

Endpoint: GET /api/v1/admin/subscriptions

Listagem de Pagamentos

  • Filtro por status de pagamento
  • Exibe: usuario, plano, valor, status, metodo de pagamento, data de pagamento, vencimento

Endpoint: GET /api/v1/admin/subscription-payments

Acoes Administrativas

AcaoDescricaoEndpoint
Prorrogar trialAdiciona dias ao trial (1-365). Funciona para assinaturas em trial ou expiradasPOST /api/v1/admin/subscriptions/{id}/extend-trial
Estornar pagamentoEstorno total ou parcial de pagamentos confirmados. Opcao de cancelar assinatura juntoPOST /api/v1/admin/subscription-payments/{id}/refund

O estorno e processado via SubscriptionService::refundPayment(), que aciona o gateway ASAAS quando configurado.


Gestao de Planos e Features

Planos (/plans)

CRUD completo de planos de assinatura:

  • Campos: nome, slug, tipo de perfil (producer, supplier, consultant), precos (mensal, trimestral, anual), dias de trial, descricao
  • Controles: plano padrao (ao marcar, desmarca outros do mesmo perfil), plano ativo/inativo
  • Ordenacao: campo sort_order para controle de exibicao
  • Nao permite exclusao real — apenas desativacao

Endpoints: GET/POST /api/v1/admin/plans, PUT /api/v1/admin/plans/{id}, DELETE /api/v1/admin/plans/{id}

Features

Cada plano possui features configuraveis (limites e booleanos):

  • Campos da feature: key (unica), nome, tipo (limit ou boolean), perfil, descricao
  • Valores por plano: cada feature pode ter um valor diferente para cada plano via tabela pivot plan_feature_values

Endpoints: GET/POST /api/v1/admin/features, PUT/DELETE /api/v1/admin/features/{id}, PUT /api/v1/admin/plans/{id}/features


Configuracoes (/settings)

Parametros Gerais

Gerenciados via tabela settings com chave/valor agrupados por categoria (group).

Endpoint: GET /api/v1/admin/settings (retorna agrupado), PUT /api/v1/admin/settings (atualiza em lote)

Integracoes

A pagina de configuracoes permite testar integracoes diretamente:

TesteDescricaoEndpoint
Teste de emailEnvia email de teste para um endereco informado. Recarrega configs SMTP do banco antes de enviarPOST /api/v1/admin/settings/test-email
Teste de WhatsAppEnvia mensagem de teste para um numero informadoPOST /api/v1/admin/settings/test-whatsapp

Notificacoes

Configuracao de canais de notificacao por tipo de evento, agrupados por perfil (produtor, fornecedor, admin).

Cada tipo de notificacao pode ser habilitado/desabilitado por canal:

  • In-app (notificacao na plataforma)
  • Email
  • WhatsApp

Endpoints: GET /api/v1/admin/notification-channels, PUT /api/v1/admin/notification-channels


Paginas CMS (/pages)

Gestao de paginas estaticas do sistema (ex: Termos de Uso, Politica de Privacidade).

  • Tabela static_pages com campos: titulo, slug, conteudo HTML, status (ativo/inativo)
  • Registro de quem editou por ultimo (edited_by)
  • Seeds iniciais: termos-de-uso e politica-de-privacidade

Controller: StaticPageController


Relatorios e Rankings (/reports)

Analytics

Painel de relatorios com filtros por periodo, gerando datasets para 5 visoes:

VisaoDescricao
ordersCotacoes criadas no periodo
proposalsPropostas enviadas
producersProdutores cadastrados
suppliersFornecedores cadastrados
consultantsConsultores e vinculos

Exportacao

FormatoDescricaoEndpoint
CSV individualExporta uma visao especifica em CSV (UTF-8 BOM)GET /api/v1/admin/reports/export/csv?view=orders
ZIP completoExporta todas as visoes em um arquivo ZIPGET /api/v1/admin/reports/export/zip

Controller: AdminReportController


Cadastros Auxiliares

Tabelas de referencia gerenciadas pelo admin:

PaginaTabelaDescricao
/brandsbrandsMarcas de produtos
/active-ingredientsactive_ingredientsPrincipios ativos
/unitsmeasurement_unitsUnidades de medida
/culturesplantation_culturesCulturas agricolas
/product-typesproduct_typesTipos de produto
/productsproductsCatalogo de produtos

Cada cadastro possui:

  • Listagem com busca e filtro por status
  • CRUD completo (criar, editar, ativar/desativar)
  • Exportacao CSV individual
  • Contagem de registros relacionados

Controller: AdminCadastrosController


Importacao CSV

O sistema permite importacao em massa de dados via arquivos CSV.

Fluxo

  1. Download do template — modelo CSV com colunas esperadas para o tipo de importacao
  2. Preview — upload do CSV para validacao previa (sem persistir). Retorna status de cada linha (sucesso/erro)
  3. Processamento — apos aprovacao do preview, efetiva a importacao

Detalhes Tecnicos

  • Separador: ; (ponto e virgula)
  • Encoding: UTF-8 (com tratamento de BOM)
  • Headers normalizados automaticamente (acentos, caixa)
  • Numero da linha original preservado para rastreabilidade de erros

Endpoints:

  • GET /api/v1/admin/import/template/{type} — download do template
  • POST /api/v1/admin/import/preview — validacao do CSV
  • POST /api/v1/admin/import/process — processamento efetivo

Service: ImportService


Logs de Auditoria (/logs)

Registro de acoes administrativas na tabela audit_logs.

Service: AuditService


Consultores (/consultants)

CRUD de consultores agricolas com funcionalidades de:

  • Listagem, criacao e edicao
  • Vinculo consultor-produtor via tabela consultant_producer_links
  • Tokens de ativacao via consultant_activation_tokens

Controller: AdminConsultantController


Arquivos Principais

CaminhoDescricao
apps/admin/pages/Paginas Nuxt do painel admin
apps/api/app/Http/Controllers/Api/AdminPagesController.phpCRUD de produtores e fornecedores
apps/api/app/Http/Controllers/Api/AdminSubscriptionController.phpPlanos, assinaturas e pagamentos
apps/api/app/Http/Controllers/Api/AdminSettingsController.phpConfiguracoes e notificacoes
apps/api/app/Http/Controllers/Api/AdminReportController.phpRelatorios e exportacao
apps/api/app/Http/Controllers/Api/AdminCadastrosController.phpCadastros auxiliares (marcas, unidades, etc.)
apps/api/app/Http/Controllers/Api/AdminConsultantController.phpGestao de consultores
apps/api/app/Http/Controllers/Api/ImportController.phpImportacao CSV
apps/api/app/Services/SubscriptionService.phpRegras de negocio de assinaturas
apps/api/app/Services/ImportService.phpParsing e processamento de CSV
Copyright © 2026