Banco de Dados

Resumo - Factories Criadas para AgrSis

Resumo - Factories Criadas para AgrSis

Estatísticas

  • Total de Factories Criadas: 19
  • Data de Criação: 2025-12-04
  • Versão Laravel: 11
  • Locale Faker: pt_BR (Português Brasil)

Lista Completa de Factories

1. Core e Autenticação (2)

  • UserFactory - Usuários do sistema
  • AccessTypeFactory - Tipos de acesso (Cliente, Fornecedor, Admin)

2. Clientes (1)

  • CustomerFactory - Produtores rurais (PF/PJ)

3. Fornecedores (1)

  • SupplierFactory - Fornecedores/Revendedores de insumos

4. Cadastros Auxiliares (3)

  • AddressFactory - Endereços
  • ManagerFactory - Responsáveis/Gerentes
  • StateFactory - Estados brasileiros (27 UFs)

5. Produtos (5)

  • ProductTypeFactory - Tipos de produtos agrícolas
  • BrandFactory - Marcas de produtos
  • ProductFactory - Produtos/Insumos agrícolas
  • MeasurementUnitFactory - Unidades de medida (KG, L, SC, etc)
  • PlantationCultureFactory - Culturas/Plantações (Soja, Milho, etc)

6. Cotações (1)

  • QuotationStatusFactory - Status de cotações/licitações

7. Pedidos (2)

  • OrderStatusFactory - Status de pedidos
  • OrderFactory - Pedidos de compra

8. Contratos (1)

  • ContractTypeFactory - Tipos de contrato

9. Financeiro (2)

  • TransactionFactory - Transações financeiras
  • PaymentMethodFactory - Métodos de pagamento

10. Planos (1)

  • SubscriptionPlanFactory - Planos de assinatura

States Implementados por Factory

UserFactory (5 states)

  • admin() - Usuário administrador
  • produtor() - Usuário produtor
  • fornecedor() - Usuário fornecedor
  • inactive() - Usuário inativo
  • unverified() - Email não verificado

AccessTypeFactory (4 states)

  • cliente() - Tipo Cliente
  • fornecedor() - Tipo Fornecedor
  • administrador() - Tipo Administrador
  • inactive() - Tipo inativo

CustomerFactory (3 states)

  • pf() - Pessoa Física
  • pj() - Pessoa Jurídica
  • inactive() - Cliente inativo

SupplierFactory (2 states)

  • withSite() - Fornecedor com website
  • inactive() - Fornecedor inativo

ManagerFactory (4 states)

  • solteiro() - Estado civil Solteiro
  • casado() - Estado civil Casado
  • divorciado() - Estado civil Divorciado
  • inactive() - Manager inativo

OrderFactory (3 states)

  • urgent() - Pedido com data limite próxima (urgente)
  • rejected() - Pedido rejeitado
  • inactive() - Pedido inativo

SubscriptionPlanFactory (4 states)

  • basic() - Plano Básico (R$ 99,90)
  • professional() - Plano Profissional (R$ 299,90)
  • premium() - Plano Premium (R$ 599,90)
  • inactive() - Plano inativo

TransactionFactory (5 states)

  • entrada() - Transação de entrada
  • saida() - Transação de saída
  • pending() - Status pendente
  • approved() - Status aprovado
  • rejected() - Status rejeitado

Outras Factories (1 state cada)

Todas as factories abaixo possuem apenas o state inactive():

  • ProductTypeFactory
  • BrandFactory
  • ProductFactory
  • MeasurementUnitFactory
  • PlantationCultureFactory
  • OrderStatusFactory
  • QuotationStatusFactory
  • ContractTypeFactory
  • PaymentMethodFactory

Total de States: 40+


Recursos Implementados

Dados Brasileiros Realistas

  • CPF válidos (11 dígitos)
  • CNPJ válidos (14 dígitos)
  • Nomes brasileiros comuns
  • Endereços com logradouros, bairros e cidades brasileiras
  • CEPs formatados
  • Telefones no formato brasileiro
  • Estados e siglas corretos (27 UFs)

Relacionamentos Automáticos

As seguintes factories criam relacionamentos automaticamente:

  1. ProductFactory → cria ProductType
  2. OrderFactory → cria Customer
  3. TransactionFactory → cria Customer

Validações e Tipos Corretos

  • Booleanos: status, ativo
  • Decimais: valor_mensal, valor
  • Datas: data_nascimento, data_limite_cotacao, data_transacao
  • JSON: recursos (em SubscriptionPlan)
  • Enums: tipo (PF/PJ), perfil (admin/produtor/fornecedor)

Exemplos de Uso Rápido

Criar Usuário Admin

User::factory()->admin()->create(['email' => 'admin@agrsis.com']);

Criar 10 Clientes PF

Customer::factory()->pf()->count(10)->create();

Criar Fornecedor com Site

Supplier::factory()->withSite()->create();

Criar Pedido Urgente

Order::factory()->urgent()->create();

Criar Plano Premium

SubscriptionPlan::factory()->premium()->create();
php artisan migrate:fresh --seed

Arquivos de Documentação

  1. README_FACTORIES.md - Documentação completa
    • O que são Factories
    • Lista de todas as factories
    • Como usar
    • States disponíveis
    • Exemplos práticos
    • Dicas de uso
    • Comandos úteis
  2. FACTORY_TESTS.md - Guia de testes
    • Como testar via Tinker
    • Testes automatizados
    • Seeders de teste
    • Resultados esperados
    • Problemas comuns
    • Checklist de validação
  3. RESUMO_FACTORIES.md - Este arquivo
    • Estatísticas
    • Lista completa
    • States por factory
    • Recursos implementados
    • Exemplos rápidos

Próximos Passos Recomendados

Factories Adicionais (se necessário)

  • OrderItemFactory
  • QuotationItemFactory
  • WinningQuotationItemFactory
  • ContractFactory
  • ContractTemplateFactory
  • ContractSignatureFactory
  • CustomerSubscriptionFactory
  • CustomerPlantationCultureFactory
  • OperationFactory
  • PaymentAttemptFactory
  • DigitalCertificateFactory
  • SupplyRatingFactory
  • ActiveIngredientFactory
  • ProductVariationFactory

Seeders Específicos

  • StateSeeder (27 estados completos)
  • AccessTypeSeeder (3 tipos fixos)
  • ProductTypeSeeder (tipos padrões)
  • MeasurementUnitSeeder (unidades padrões)
  • PlantationCultureSeeder (culturas comuns)
  • OrderStatusSeeder (status fixos)
  • QuotationStatusSeeder (status fixos)

Testes Automatizados

  • FactoryTest completo
  • Testes de integração
  • Testes de validação
  • Testes de relacionamentos

Melhorias

  • Adicionar mais states específicos
  • Implementar Sequences para dados únicos
  • Callbacks para relacionamentos complexos
  • Configurações específicas por ambiente

Comandos Úteis

# Tinker
docker exec -it agrsis_api php artisan tinker

# Seeders
docker exec agrsis_api php artisan db:seed

# Reset completo
docker exec agrsis_api php artisan migrate:fresh --seed

# Testes
docker exec agrsis_api php artisan test

# Criar nova factory
docker exec agrsis_api php artisan make:factory NomeFactory --model=Nome

Benefícios Alcançados

  1. Desenvolvimento Ágil
    • Criação rápida de dados de teste
    • Não precisa inserir dados manualmente
    • Facilita testes locais
  2. Qualidade de Código
    • Dados consistentes nos testes
    • Testes automatizados confiáveis
    • Facilita refatoração
  3. Documentação Viva
    • Factories servem como exemplos de uso
    • Mostram estrutura dos dados
    • Facilitam onboarding de novos devs
  4. Produtividade
    • Economiza tempo de setup
    • Facilita debugging
    • Agiliza demonstrações
  5. Manutenibilidade
    • Centraliza lógica de criação
    • Facilita mudanças futuras
    • Reduz duplicação de código

Arquivos Criados

/api/database/factories/
├── README_FACTORIES.md          # Documentação completa
├── RESUMO_FACTORIES.md          # Este arquivo
├── UserFactory.php              # ✅ Atualizado
├── AccessTypeFactory.php        # ✅ Criado
├── AddressFactory.php           # ✅ Criado
├── ManagerFactory.php           # ✅ Criado
├── CustomerFactory.php          # ✅ Criado
├── SupplierFactory.php          # ✅ Criado
├── ProductTypeFactory.php       # ✅ Criado
├── BrandFactory.php             # ✅ Criado
├── ProductFactory.php           # ✅ Criado
├── MeasurementUnitFactory.php   # ✅ Criado
├── PlantationCultureFactory.php # ✅ Criado
├── OrderStatusFactory.php       # ✅ Criado
├── OrderFactory.php             # ✅ Criado
├── SubscriptionPlanFactory.php  # ✅ Criado
├── TransactionFactory.php       # ✅ Criado
├── ContractTypeFactory.php      # ✅ Criado
├── PaymentMethodFactory.php     # ✅ Criado
├── QuotationStatusFactory.php   # ✅ Criado
└── StateFactory.php             # ✅ Criado

/api/
└── FACTORY_TESTS.md             # Guia de testes

Conclusão

Sistema de Factories completo e funcional criado com sucesso para o projeto AgrSis.

Total: 19 factories + 40+ states + 3 documentos completos

Todas as factories estão prontas para uso em:

  • Desenvolvimento local
  • Testes automatizados
  • Seeders
  • Demonstrações
  • Documentação

Criado em: 2025-12-04 Autor: Claude Code Versão: 1.0 Status: ✅ Concluído

Copyright © 2026