Painel Administrativo
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)
| Metrica | Descricao |
|---|---|
| Usuarios Cadastrados | Donut chart com distribuicao por perfil (produtores, fornecedores, consultores, admins) e total |
| Cotacoes | Total de cotacoes criadas e quantidade de ativas |
| Propostas | Total de propostas recebidas e quantidade de aceitas |
| Total Movimentado | Valor financeiro total das propostas aceitas, com indicador de crescimento percentual |
Metricas Adicionais (segunda linha)
| Metrica | Descricao |
|---|---|
| Duracao Media das Cotacoes | Tempo medio em dias das cotacoes finalizadas |
| Tempo Medio de Aprovacao | Tempo medio para produtor aprovar proposta (referencia: prazo de 48h) |
| Tempo Medio para 1a Proposta | Intervalo entre publicacao da cotacao e recebimento da primeira proposta |
| Cobertura de Propostas | Percentual de cotacoes publicadas que receberam pelo menos uma proposta |
Metricas de Assinaturas e Receita (terceira linha)
| Metrica | Descricao |
|---|---|
| Assinantes ativos | Total de assinaturas ativas (pagos + trial), com alerta de vencimentos proximos |
| Em trial | Quantidade em periodo de teste e expirados |
| ARR | Annual Recurring Revenue - receita anual recorrente calculada a partir das assinaturas ativas |
| Receita do mes | Soma 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:
| KPI | Descricao |
|---|---|
| Cotacoes por status | Contagem por: rascunho, pendente, publicada, em analise, adjudicada, finalizada, cancelada, revogada, expirada |
| Economia gerada | Valor total das propostas aceitas em cotacoes finalizadas |
| Total de propostas | Quantidade de propostas recebidas nas cotacoes do produtor |
| Fornecedores unicos | Quantidade 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:
| KPI | Descricao |
|---|---|
| Propostas enviadas | Total, pendentes, aceitas, rejeitadas |
| Licitacoes participadas | Quantidade de cotacoes em que participou |
| Licitacoes ganhas | Cotacoes com proposta aceita |
| Volume negociado | Valor total das propostas aceitas |
| Produtores atendidos | Quantidade 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
| Acao | Descricao | Endpoint |
|---|---|---|
| Prorrogar trial | Adiciona dias ao trial (1-365). Funciona para assinaturas em trial ou expiradas | POST /api/v1/admin/subscriptions/{id}/extend-trial |
| Estornar pagamento | Estorno total ou parcial de pagamentos confirmados. Opcao de cancelar assinatura junto | POST /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_orderpara 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 (
limitouboolean), 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:
| Teste | Descricao | Endpoint |
|---|---|---|
| Teste de email | Envia email de teste para um endereco informado. Recarrega configs SMTP do banco antes de enviar | POST /api/v1/admin/settings/test-email |
| Teste de WhatsApp | Envia mensagem de teste para um numero informado | POST /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)
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_pagescom campos: titulo, slug, conteudo HTML, status (ativo/inativo) - Registro de quem editou por ultimo (
edited_by) - Seeds iniciais:
termos-de-usoepolitica-de-privacidade
Controller: StaticPageController
Relatorios e Rankings (/reports)
Analytics
Painel de relatorios com filtros por periodo, gerando datasets para 5 visoes:
| Visao | Descricao |
|---|---|
orders | Cotacoes criadas no periodo |
proposals | Propostas enviadas |
producers | Produtores cadastrados |
suppliers | Fornecedores cadastrados |
consultants | Consultores e vinculos |
Exportacao
| Formato | Descricao | Endpoint |
|---|---|---|
| CSV individual | Exporta uma visao especifica em CSV (UTF-8 BOM) | GET /api/v1/admin/reports/export/csv?view=orders |
| ZIP completo | Exporta todas as visoes em um arquivo ZIP | GET /api/v1/admin/reports/export/zip |
Controller: AdminReportController
Cadastros Auxiliares
Tabelas de referencia gerenciadas pelo admin:
| Pagina | Tabela | Descricao |
|---|---|---|
/brands | brands | Marcas de produtos |
/active-ingredients | active_ingredients | Principios ativos |
/units | measurement_units | Unidades de medida |
/cultures | plantation_cultures | Culturas agricolas |
/product-types | product_types | Tipos de produto |
/products | products | Catalogo 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
- Download do template — modelo CSV com colunas esperadas para o tipo de importacao
- Preview — upload do CSV para validacao previa (sem persistir). Retorna status de cada linha (sucesso/erro)
- 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 templatePOST /api/v1/admin/import/preview— validacao do CSVPOST /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
| Caminho | Descricao |
|---|---|
apps/admin/pages/ | Paginas Nuxt do painel admin |
apps/api/app/Http/Controllers/Api/AdminPagesController.php | CRUD de produtores e fornecedores |
apps/api/app/Http/Controllers/Api/AdminSubscriptionController.php | Planos, assinaturas e pagamentos |
apps/api/app/Http/Controllers/Api/AdminSettingsController.php | Configuracoes e notificacoes |
apps/api/app/Http/Controllers/Api/AdminReportController.php | Relatorios e exportacao |
apps/api/app/Http/Controllers/Api/AdminCadastrosController.php | Cadastros auxiliares (marcas, unidades, etc.) |
apps/api/app/Http/Controllers/Api/AdminConsultantController.php | Gestao de consultores |
apps/api/app/Http/Controllers/Api/ImportController.php | Importacao CSV |
apps/api/app/Services/SubscriptionService.php | Regras de negocio de assinaturas |
apps/api/app/Services/ImportService.php | Parsing e processamento de CSV |