Banco de Dados

Seeders Criados - AgrSis v1

Seeders Criados - AgrSis v1

Resumo Executivo

Foram criados 8 seeders essenciais para popular o banco de dados do AgrSis com dados iniciais necessários para o funcionamento do sistema.


Lista de Seeders Criados

1. GeographySeeder ✅

Arquivo: /api/database/seeders/GeographySeeder.php

Popula:

  • 27 Estados brasileiros (tabela states)
  • ~220 Cidades principais (tabela state_cities)

Total de registros: ~247


2. AccessTypeSeeder ✅

Arquivo: /api/database/seeders/AccessTypeSeeder.php

Popula:

  • Tipos de acesso ao sistema (tabela access_types)
    • ID 1: Acesso de Cliente
    • ID 2: Acesso de Fornecedor
    • ID 9: Acesso de Administrador

Total de registros: 3

Características:

  • IDs fixos para manter consistência
  • Idempotente (pode ser executado múltiplas vezes)

3. ProductTypeSeeder ✅

Arquivo: /api/database/seeders/ProductTypeSeeder.php

Popula:

  • Tipos de produtos agrícolas (tabela product_types)
    • Fertilizantes
    • Defensivos Agrícolas
    • Herbicidas, Inseticidas, Fungicidas
    • Sementes, Mudas
    • Equipamentos (Irrigação, EPIs)
    • Produtos Veterinários
    • E muitos outros...

Total de registros: 21


4. MeasurementUnitSeeder ✅

Arquivo: /api/database/seeders/MeasurementUnitSeeder.php

Popula:

  • Unidades de medida (tabela measurement_units)
    • Peso: kg, g, ton, mg
    • Volume: L, mL, gal
    • Quantidade: un, dz, cx, sc, pac, fd, bomb, bd, tamb, barr
    • Área: ha, m², alq
    • Comprimento: m, cm, km, mm
    • Específicas do agro: @, sc 60kg, sc 50kg, etc.

Total de registros: 31


5. PaymentMethodSeeder ✅

Arquivo: /api/database/seeders/PaymentMethodSeeder.php

Popula:

  • Métodos de pagamento (tabela payment_methods)
    • Boleto Bancário
    • PIX
    • Cartão de Crédito/Débito
    • Transferência Bancária
    • Dinheiro
    • Depósito em Conta
    • Cheque (desativado)

Total de registros: 8


6. OrderStatusSeeder ✅

Arquivo: /api/database/seeders/OrderStatusSeeder.php

Popula:

  • Status de pedidos (tabela order_statuses)
    • Rascunho
    • Aguardando Aprovação
    • Aprovado
    • Em Licitação
    • Licitação Finalizada
    • Aguardando/Pagamento Confirmado
    • Em Fornecimento (Parcial/Completo)
    • Finalizado
    • Cancelado/Rejeitado/Devolvido

Total de registros: 14


7. QuotationStatusSeeder ✅

Arquivo: /api/database/seeders/QuotationStatusSeeder.php

Popula:

  • Status de cotações/licitações (tabela quotation_statuses)
    • ID 1 a 16: Fluxo completo de cotação
    • Desde "Enviada para Fornecedor" até "Cancelada pelo Cliente"
    • Inclui status de pagamento, contrato, fornecimento, etc.

Total de registros: 16

Características:

  • IDs fixos conforme constantes no Model
  • Idempotente

8. SettingsSeeder ✅

Arquivo: /api/database/seeders/SettingsSeeder.php

Popula:

  • Configurações do sistema (tabela settings)

Grupos de configurações:

  • Sistema: Nome, versão, contatos
  • Licitação: Prazos, permissões, lances
  • Financeiro: Taxas, multas, juros
  • Entrega: Raio, frete
  • Notificação: Preferências
  • Contrato: Geração, assinatura
  • Assinatura: Trial, cancelamentos
  • Segurança: Sessão, login
  • API: Integrações externas
  • Manutenção: Modo de manutenção

Total de registros: 41

Características:

  • Chaves únicas para cada configuração
  • Idempotente (usa chave como identificador)
  • Todas editáveis exceto versão do sistema

9. DatabaseSeeder (Atualizado) ✅

Arquivo: /api/database/seeders/DatabaseSeeder.php

Função:

  • Orquestra a execução de todos os seeders na ordem correta
  • Exibe mensagens informativas no console
  • Sugere próximos passos após conclusão

Documentação Criada

README.md ✅

Arquivo: /api/database/seeders/README.md

Documentação completa contendo:

  • Descrição detalhada de cada seeder
  • Instruções de uso
  • Ordem de execução
  • Comandos para execução individual
  • Troubleshooting
  • Estatísticas totais
  • Próximos passos

Estatísticas Totais

SeederTabela(s)Registros
GeographySeederstates, state_cities27 + ~220
AccessTypeSeederaccess_types3
ProductTypeSeederproduct_types21
MeasurementUnitSeedermeasurement_units31
PaymentMethodSeederpayment_methods8
OrderStatusSeederorder_statuses14
QuotationStatusSeederquotation_statuses16
SettingsSeedersettings41
TOTAL8 tabelas~381 registros

Como Executar

Pré-requisitos

  1. Configurar banco de dados:

Edite o arquivo .env:

# Para PostgreSQL (padrão atual)
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=agrsis_db
DB_USERNAME=seu_usuario
DB_PASSWORD=sua_senha

# OU para MySQL
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=agrsis_db
DB_USERNAME=seu_usuario
DB_PASSWORD=sua_senha
  1. Criar o banco de dados:

PostgreSQL:

# Entrar no PostgreSQL
psql -U postgres

# Criar usuário e banco
CREATE USER agrsis_user WITH PASSWORD 'agrsis_password';
CREATE DATABASE agrsis_db OWNER agrsis_user;
\q

MySQL:

# Entrar no MySQL
mysql -u root -p

# Criar banco e usuário
CREATE DATABASE agrsis_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'agrsis_user'@'localhost' IDENTIFIED BY 'agrsis_password';
GRANT ALL PRIVILEGES ON agrsis_db.* TO 'agrsis_user'@'localhost';
FLUSH PRIVILEGES;
exit
  1. Executar migrations:
cd /Users/gustavocarneiro/EMPRESA/web/agrsis/agrsis-v1/api
php artisan migrate

Execução dos Seeders

Executar todos:

php artisan db:seed

Executar com reset completo do banco:

php artisan migrate:fresh --seed

⚠️ ATENÇÃO: Este comando apaga TODOS os dados!

Executar seeder específico:

php artisan db:seed --class=GeographySeeder
php artisan db:seed --class=AccessTypeSeeder
# ... etc

Ordem de Execução Recomendada

Os seeders devem ser executados nesta ordem (já configurada no DatabaseSeeder):

  1. GeographySeeder
  2. AccessTypeSeeder
  3. ProductTypeSeeder
  4. MeasurementUnitSeeder
  5. PaymentMethodSeeder
  6. OrderStatusSeeder
  7. QuotationStatusSeeder
  8. SettingsSeeder

Idempotência

Os seeders foram desenvolvidos para serem idempotentes:

  • AccessTypeSeeder: Verifica existência por ID antes de inserir/atualizar
  • QuotationStatusSeeder: Verifica existência por ID antes de inserir/atualizar
  • SettingsSeeder: Verifica existência por chave antes de inserir/atualizar
  • Demais seeders: Inserem novos registros (use migrate:fresh para limpar antes)

Verificação

Após executar, verifique os registros:

php artisan tinker

# Verificar registros
>>> \App\Models\State::count()
=> 27

>>> \App\Models\StateCity::count()
=> ~220

>>> \App\Models\AccessType::count()
=> 3

>>> \App\Models\ProductType::count()
=> 21

>>> \App\Models\MeasurementUnit::count()
=> 31

>>> \App\Models\PaymentMethod::count()
=> 8

>>> \App\Models\OrderStatus::count()
=> 14

>>> \App\Models\QuotationStatus::count()
=> 16

>>> \App\Models\Setting::count()
=> 41

Próximos Passos

Após popular o banco com os seeders, você deve:

  1. Criar usuário administrador:
php artisan tinker
>>> $user = \App\Models\User::create([
    'name' => 'Administrador',
    'email' => 'admin@agrsis.com.br',
    'password' => bcrypt('senha_segura_aqui'),
]);
>>> \App\Models\UserAccess::create([
    'user_id' => $user->id,
    'access_type_id' => 9, // Administrador
    'status' => true,
]);
  1. Configurar planos de assinatura (se necessário)
  2. Cadastrar modelos de contrato (se necessário)
  3. Cadastrar culturas agrícolas (plantation_cultures)
  4. Personalizar configurações através da tabela settings

Observações Importantes

  1. Geografia: O GeographySeeder contém apenas as principais cidades de cada estado. Para ter todas as ~5.570 cidades brasileiras, você pode:
    • Usar a API do IBGE para popular dinamicamente
    • Importar de um arquivo JSON completo
    • Usar um package Laravel específico para geografia brasileira
  2. Configurações: As configurações do SettingsSeeder são valores padrão. Ajuste conforme necessário para sua operação.
  3. IDs Fixos: Os seeders AccessTypeSeeder e QuotationStatusSeeder usam IDs fixos que correspondem às constantes definidas nos Models. NÃO altere esses IDs.
  4. Performance: Para grandes volumes de dados (como todas as cidades), considere:
    • Usar DB::table()->insert() em batch
    • Desabilitar logs temporariamente
    • Usar DB::statement('SET FOREIGN_KEY_CHECKS=0;') se necessário

Arquivos Criados

/api/database/seeders/
├── DatabaseSeeder.php (atualizado)
├── GeographySeeder.php
├── AccessTypeSeeder.php
├── ProductTypeSeeder.php
├── MeasurementUnitSeeder.php
├── PaymentMethodSeeder.php
├── OrderStatusSeeder.php
├── QuotationStatusSeeder.php
├── SettingsSeeder.php
└── README.md

Data de Criação: 2025-12-04 Versão: 1.0.0 Status: ✅ Todos os seeders criados e documentados

Copyright © 2026