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 administradorprodutor()- Usuário produtorfornecedor()- Usuário fornecedorinactive()- Usuário inativounverified()- Email não verificado
AccessTypeFactory (4 states)
cliente()- Tipo Clientefornecedor()- Tipo Fornecedoradministrador()- Tipo Administradorinactive()- Tipo inativo
CustomerFactory (3 states)
pf()- Pessoa Físicapj()- Pessoa Jurídicainactive()- Cliente inativo
SupplierFactory (2 states)
withSite()- Fornecedor com websiteinactive()- Fornecedor inativo
ManagerFactory (4 states)
solteiro()- Estado civil Solteirocasado()- Estado civil Casadodivorciado()- Estado civil Divorciadoinactive()- Manager inativo
OrderFactory (3 states)
urgent()- Pedido com data limite próxima (urgente)rejected()- Pedido rejeitadoinactive()- 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 entradasaida()- Transação de saídapending()- Status pendenteapproved()- Status aprovadorejected()- 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:
- ProductFactory → cria
ProductType - OrderFactory → cria
Customer - 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();
Popular Banco Completo
php artisan migrate:fresh --seed
Arquivos de Documentação
- 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
- FACTORY_TESTS.md - Guia de testes
- Como testar via Tinker
- Testes automatizados
- Seeders de teste
- Resultados esperados
- Problemas comuns
- Checklist de validação
- 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
- Desenvolvimento Ágil
- Criação rápida de dados de teste
- Não precisa inserir dados manualmente
- Facilita testes locais
- Qualidade de Código
- Dados consistentes nos testes
- Testes automatizados confiáveis
- Facilita refatoração
- Documentação Viva
- Factories servem como exemplos de uso
- Mostram estrutura dos dados
- Facilitam onboarding de novos devs
- Produtividade
- Economiza tempo de setup
- Facilita debugging
- Agiliza demonstrações
- 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