Article image
Marcio Gil
Marcio Gil03/11/2025 12:48
Compartilhe

🏢 Sistema Integrador Empresarial

    🏢 Sistema Integrador Empresarial


    Plataforma completa de gestão empresarial integrada


    image image image image image

    👨‍💻 Sobre o Desenvolvedor

    Márcio Gil

    Embaixador da Turma 14 - DIO Campus Expert

    Estudante de Engenharia de Software

    Apaixonado por tecnologia, inovação e justiça social

    image image image image

    📋 Índice

    🎯 Sobre o Projeto

    O Sistema Integrador Empresarial é uma solução completa e moderna para gestão empresarial, desenvolvido com as melhores práticas de engenharia de software. O sistema integra diferentes setores da empresa em uma única plataforma, proporcionando eficiência operacional, controle financeiro e tomada de decisões baseada em dados.

    🌟 Diferenciais

    • 🔐 Autenticação JWT - Sistema seguro com tokens de acesso e refresh
    • 📊 Dashboard Analítico - Visualização de métricas e KPIs em tempo real
    • 🔄 API RESTful Completa - Documentação automática com Swagger/ReDoc
    • 📱 Responsive Design - Interface adaptável para desktop, tablet e mobile
    • 🎨 UI/UX Moderna - Design limpo e intuitivo com Tailwind CSS
    • ⚡ Performance - Otimizações de query com select_related e prefetch_related
    • 🔍 Busca Avançada - Filtros dinâmicos e busca full-text
    • 📝 Auditoria Completa - Rastreamento de todas as operações do sistema
    • 🌐 Internacionalização - Preparado para múltiplos idiomas (PT-BR)
    • 🔧 Extensível - Arquitetura modular e escalável

    🏗️ Arquitetura

    O projeto segue uma arquitetura moderna baseada em:

    ┌─────────────────────────────────────────────────────────────┐
    │                        FRONTEND (React)                      │
    │  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐     │
    │  │   Dashboard  │  │    Módulos   │  │   Relatórios │     │
    │  └──────────────┘  └──────────────┘  └──────────────┘     │
    └─────────────────────────────────────────────────────────────┘
                              ▲ │
                       HTTP   │ │  JSON
                              │ ▼
    ┌─────────────────────────────────────────────────────────────┐
    │                    API REST (Django DRF)                     │
    │  ┌──────────────────────────────────────────────────────┐  │
    │  │  JWT Auth │ Serializers │ ViewSets │ Permissions     │  │
    │  └──────────────────────────────────────────────────────┘  │
    └─────────────────────────────────────────────────────────────┘
                              ▲ │
                      ORM     │ │  SQL
                              │ ▼
    ┌─────────────────────────────────────────────────────────────┐
    │                   BANCO DE DADOS (SQLite)                    │
    │  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐      │
    │  │Clientes │  │Produtos │  │ Vendas  │  │Financeiro│      │
    │  └─────────┘  └─────────┘  └─────────┘  └─────────┘      │
    └─────────────────────────────────────────────────────────────┘
    

    Padrões Utilizados

    • MVC/MVT - Model-View-Template (Django)
    • Repository Pattern - Camada de acesso a dados
    • Service Layer - Lógica de negócio isolada
    • DTOs - Serializers para transferência de dados
    • Dependency Injection - Injeção de dependências
    • SOLID Principles - Código limpo e manutenível

    🚀 Tecnologias

    Backend

    TecnologiaVersãoDescriçãoimage3.13.3Linguagem principalimage5.0.7Framework webimage3.15.2API REST frameworkimage5.3.1Autenticaçãoimage3.xBanco de dados

    Frontend (Planejado - ETAPA 5)

    TecnologiaVersãoDescriçãoimage18.3Biblioteca UIimage5.xBuild toolimage3.xFramework CSSimage1.xHTTP clientimage6.xRoteamento

    DevOps & Tools

    • Git - Controle de versão
    • GitHub - Repositório remoto
    • VS Code - IDE
    • Postman - Testes de API
    • Django Debug Toolbar - Debug e profiling
    • drf-spectacular - Documentação automática (Swagger/ReDoc)

    📸 Screenshots

    🔐 Tela de Login


    Interface moderna com validação em tempo real

    image

    📊 Dashboard Analítico


    Visão geral com métricas, gráficos e estatísticas em tempo real

    image

    👥 Gestão de Clientes


    CRUD completo com busca, filtros e validação de CPF/CNPJ

    image

    📦 Controle de Produtos


    Gestão de produtos com categorias, preços e imagens

    image

    📊 Controle de Estoque


    Movimentações, alertas de estoque mínimo e histórico completo

    image

    🛒 Sistema de Vendas


    Carrinho interativo com cálculo automático de totais

    image

    💰 Gestão Financeira


    Contas a pagar/receber com controle de vencimentos e status

    image

    📚 API Documentation (Swagger)


    Documentação interativa automática com drf-spectacular

    image

    📝 Nota: Para visualizar o sistema em ação localmente, siga as instruções de Instalação ou acesse a demo online (em breve).

    ✨ Funcionalidades

    📦 Módulos Implementados

    1. 👥 Gestão de Clientes

    • ✅ Cadastro de clientes Pessoa Física (CPF) e Jurídica (CNPJ)
    • ✅ Validação automática de CPF/CNPJ
    • ✅ Histórico completo de interações
    • ✅ Busca avançada por múltiplos campos
    • ✅ Status ativo/inativo

    2. 📦 Gestão de Produtos

    • ✅ Categorias hierárquicas (pai/filho)
    • ✅ Código SKU automático
    • ✅ Preço de custo e venda
    • ✅ Cálculo de margem de lucro
    • ✅ Unidades de medida customizáveis
    • ✅ Código de barras (EAN13)

    3. 📊 Controle de Estoque

    • ✅ Movimentações de entrada/saída
    • ✅ Estoque mínimo e máximo
    • ✅ Alertas de reposição
    • ✅ Rastreamento de localização
    • ✅ Histórico completo de movimentações
    • ✅ Status do estoque (adequado/baixo/crítico/excesso)

    4. 🛒 Vendas

    • ✅ Pedidos com múltiplos itens
    • ✅ Cálculo automático de totais
    • ✅ Status do pedido (pendente/confirmado/em separação/enviado/entregue/cancelado)
    • ✅ Formas de pagamento diversas
    • ✅ Data de entrega prevista
    • ✅ Ações customizadas (confirmar/cancelar pedido)

    5. 💰 Financeiro

    • ✅ Faturas vinculadas a pedidos
    • ✅ Contas a receber
    • ✅ Contas a pagar
    • ✅ Controle de juros, multas e descontos
    • ✅ Identificação de contas atrasadas
    • ✅ Múltiplas formas de pagamento
    • ✅ Categorização de despesas

    6. 🏭 Fornecedores

    • ✅ Cadastro completo com CNPJ
    • ✅ Dados bancários
    • ✅ Sistema de avaliação (0-5)
    • ✅ Categorização por tipo
    • ✅ Histórico de compras

    7. 👨‍💼 Usuários e Departamentos

    • ✅ Gestão de usuários (admin/gerente/vendedor/operador)
    • ✅ Departamentos com hierarquia
    • ✅ Controle de permissões granular
    • ✅ Alteração de senha segura
    • ✅ Endpoint /me para dados do usuário logado

    8. 📝 Auditoria

    • ✅ Logs de todas as operações (CREATE/UPDATE/DELETE)
    • ✅ Rastreamento de IP e User Agent
    • ✅ Versionamento de dados (antes/depois)
    • ✅ Apenas leitura para administradores

    📁 Estrutura do Projeto

    Sistema_Integrador_Empresarial/
    ├── 📂 backend/
    │   ├── 📂 config/               # Configurações do Django
    │   │   ├── settings.py          # Settings principal
    │   │   ├── urls.py              # URLs raiz + Swagger
    │   │   └── wsgi.py
    │   ├── 📂 clientes/             # App de Clientes
    │   │   ├── models.py            # Model Cliente
    │   │   ├── serializers.py       # Serializers DRF
    │   │   ├── views.py             # ViewSets
    │   │   ├── urls.py              # Rotas
    │   │   └── admin.py             # Admin Django
    │   ├── 📂 produtos/             # App de Produtos
    │   ├── 📂 estoque/              # App de Estoque
    │   ├── 📂 vendas/               # App de Vendas
    │   ├── 📂 financeiro/           # App Financeiro
    │   ├── 📂 fornecedores/         # App de Fornecedores
    │   ├── 📂 usuarios/             # App de Usuários
    │   ├── 📂 auditoria/            # App de Auditoria
    │   ├── 📂 logs/                 # Logs do sistema
    │   ├── 📂 media/                # Uploads de arquivos
    │   ├── 📂 staticfiles/          # Arquivos estáticos
    │   ├── 📄 manage.py             # CLI do Django
    │   ├── 📄 db.sqlite3            # Banco de dados
    │   ├── 📄 requirements.txt      # Dependências Python
    │   ├── 📄 API_TESTS.http        # Testes HTTP (47 exemplos)
    │   └── 📄 populate_db.py        # Script de seed
    ├── 📂 frontend/                 # React App (ETAPA 5)
    │   └── (Em breve)
    ├── 📂 docs/                     # Documentação
    │   ├── PLANEJAMENTO.md          # Planejamento geral
    │   ├── DIAGRAMA_ER.md           # Diagrama ER
    │   ├── ETAPA_2_CONCLUIDA.md     # Conclusão ETAPA 2
    │   ├── ETAPA_3_CONCLUIDA.md     # Conclusão ETAPA 3
    │   └── TAREFAS.md               # Lista de tarefas
    ├── 📄 README.md                 # Este arquivo
    ├── 📄 .gitignore                # Arquivos ignorados
    └── 📄 LICENSE                   # Licença MIT
    

    🔧 Instalação

    Pré-requisitos

    • Python 3.13+
    • pip (gerenciador de pacotes Python)
    • Git
    • Virtualenv (recomendado)

    Passo a Passo

    1. Clone o repositório
    git clone https://github.com/MarcioGil/Sistema_Integrador_Empresarial.git
    cd Sistema_Integrador_Empresarial
    
    1. Crie e ative o ambiente virtual
    # Windows
    cd backend
    python -m venv venv
    .\venv\Scripts\activate
    
    # Linux/Mac
    cd backend
    python3 -m venv venv
    source venv/bin/activate
    
    1. Instale as dependências
    pip install -r requirements.txt
    
    1. Configure as variáveis de ambiente

    Crie um arquivo .env na pasta backend/:

    SECRET_KEY=sua-chave-secreta-aqui
    DEBUG=True
    ALLOWED_HOSTS=localhost,127.0.0.1
    DATABASE_URL=sqlite:///db.sqlite3
    CORS_ALLOWED_ORIGINS=http://localhost:3000,http://127.0.0.1:3000
    JWT_ACCESS_TOKEN_LIFETIME=60
    JWT_REFRESH_TOKEN_LIFETIME=10080
    
    1. Execute as migrações
    python manage.py makemigrations
    python manage.py migrate
    
    1. Crie um superusuário
    python manage.py createsuperuser
    # Username: admin
    # Email: admin@admin.com
    # Password: admin123
    
    1. Execute o servidor
    python manage.py runserver
    
    1. Acesse a aplicação

    💻 Uso

    1. Obter Token JWT

    POST http://127.0.0.1:8000/api/token/
    Content-Type: application/json
    
    {
    "username": "admin",
    "password": "admin123"
    }
    

    Response:

    {
    "refresh": "eyJ0eXAiOiJKV1QiLCJhbGc...",
    "access": "eyJ0eXAiOiJKV1QiLCJhbGc..."
    }
    

    2. Usar o token nas requisições

    GET http://127.0.0.1:8000/api/clientes/
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGc...
    

    3. Exemplos Práticos

    Criar Cliente:

    POST http://127.0.0.1:8000/api/clientes/
    Authorization: Bearer {seu-token}
    Content-Type: application/json
    
    {
    "tipo": "PF",
    "nome_completo": "João Silva",
    "cpf": "12345678901",
    "email": "joao@email.com",
    "telefone": "(11) 98765-4321",
    "endereco": "Rua A, 123",
    "cidade": "São Paulo",
    "estado": "SP",
    "cep": "01000-000",
    "ativo": true
    }
    

    Criar Pedido com Itens:

    POST http://127.0.0.1:8000/api/pedidos/
    Authorization: Bearer {seu-token}
    Content-Type: application/json
    
    {
    "cliente": 1,
    "forma_pagamento": "cartao_credito",
    "itens": [
      {
        "produto": 1,
        "quantidade": 2,
        "preco_unitario": 3500.00
      }
    ]
    }
    

    📚 API Endpoints

    🔐 Autenticação

    MétodoEndpointDescriçãoPOST/api/token/Obter access e refresh tokenPOST/api/token/refresh/Renovar access tokenPOST/api/token/verify/Verificar validade do token

    👥 Clientes

    MétodoEndpointDescriçãoGET/api/clientes/Listar clientesPOST/api/clientes/Criar clienteGET/api/clientes/{id}/Detalhes do clientePUT/api/clientes/{id}/Atualizar clientePATCH/api/clientes/{id}/Atualizar parcialmenteDELETE/api/clientes/{id}/Deletar cliente

    📦 Produtos

    MétodoEndpointDescriçãoGET/api/categorias/Listar categoriasPOST/api/categorias/Criar categoriaGET/api/produtos/Listar produtosPOST/api/produtos/Criar produtoGET/api/produtos/{id}/Detalhes do produtoPUT/PATCH/api/produtos/{id}/Atualizar produtoDELETE/api/produtos/{id}/Deletar produto

    📊 Estoque

    MétodoEndpointDescriçãoGET/api/estoques/Listar estoquePOST/api/estoques/Criar registro de estoqueGET/api/estoques/necessita_reposicao/Produtos com estoque baixoPOST/api/movimentacoes/Criar movimentaçãoGET/api/movimentacoes/Histórico de movimentações

    🛒 Vendas

    MétodoEndpointDescriçãoGET/api/pedidos/Listar pedidosPOST/api/pedidos/Criar pedido com itensGET/api/pedidos/{id}/Detalhes do pedidoPOST/api/pedidos/{id}/confirmar/Confirmar pedidoPOST/api/pedidos/{id}/cancelar/Cancelar pedido

    💰 Financeiro

    MétodoEndpointDescriçãoGET/api/faturas/Listar faturasGET/api/faturas/atrasadas/Faturas atrasadasGET/api/contas-receber/Contas a receberPOST/api/contas-receber/Criar conta a receberPOST/api/contas-receber/{id}/receber/Marcar como recebidaGET/api/contas-pagar/Contas a pagarPOST/api/contas-pagar/Criar conta a pagarPOST/api/contas-pagar/{id}/pagar/Marcar como paga

    🏭 Fornecedores

    MétodoEndpointDescriçãoGET/api/fornecedores/Listar fornecedoresPOST/api/fornecedores/Criar fornecedorGET/PUT/DELETE/api/fornecedores/{id}/Operações CRUD

    👨‍💼 Usuários

    MétodoEndpointDescriçãoGET/api/usuarios/Listar usuáriosPOST/api/usuarios/Criar usuário (admin)GET/api/usuarios/me/Dados do usuário logadoPOST/api/usuarios/{id}/alterar_senha/Alterar senhaGET/api/departamentos/Listar departamentos

    📝 Auditoria

    MétodoEndpointDescriçãoGET/api/logs/Logs de auditoria (admin)GET/api/logs/{id}/Detalhes do log

    💡 Dica: Consulte o arquivo API_TESTS.http para 47 exemplos completos de requisições!

    📖 Documentação

    Swagger UI (Interativo)

    Acesse http://127.0.0.1:8000/api/docs/ para visualizar e testar todos os endpoints interativamente.

    image

    ReDoc (Documentação Limpa)

    Acesse http://127.0.0.1:8000/api/redoc/ para uma documentação mais limpa e organizada.

    image

    Django Admin

    Acesse http://127.0.0.1:8000/admin/ para gerenciar dados via interface administrativa.

    🧪 Testes

    Testes Automatizados (Em breve)

    python manage.py test
    

    Testes de API com arquivo HTTP

    Use a extensão REST Client do VS Code com o arquivo API_TESTS.http:

    1. Instale a extensão REST Client no VS Code
    2. Abra backend/API_TESTS.http
    3. Clique em "Send Request" acima de cada requisição
    4. Substitua {{token}} pelo seu access token

    Coverage (Em breve)

    coverage run --source='.' manage.py test
    coverage report
    coverage html
    

    🚀 Deploy

    Heroku

    # Instalar Heroku CLI
    heroku login
    heroku create sistema-integrador-empresarial
    git push heroku main
    heroku run python manage.py migrate
    heroku run python manage.py createsuperuser
    

    Docker (Em breve)

    docker-compose up --build
    

    Variáveis de Ambiente para Produção

    SECRET_KEY=chave-super-secreta-em-producao
    DEBUG=False
    ALLOWED_HOSTS=seudominio.com,www.seudominio.com
    DATABASE_URL=postgresql://user:pass@host:5432/dbname
    CORS_ALLOWED_ORIGINS=https://seudominio.com
    

    🗺️ Roadmap

    ✅ Fase 1 - Planejamento (Concluída)

    •  Definição de escopo e módulos
    •  Modelagem do banco de dados
    •  Diagrama ER completo
    •  Documentação técnica

    ✅ Fase 2 - Setup do Ambiente (Concluída)

    •  Configuração Django
    •  Criação de 8 apps
    •  Configuração de CORS e JWT
    •  Django Admin customizado

    ✅ Fase 3 - Models e Database (Concluída)

    •  14 models criados
    •  Migrações aplicadas
    •  Validações de negócio
    •  Properties calculadas

    ✅ Fase 4 - API REST (Concluída)

    •  Serializers com validações
    •  ViewSets com CRUD completo
    •  Filtros, busca e ordenação
    •  Documentação Swagger/ReDoc
    •  Autenticação JWT
    •  Actions customizadas

    🔄 Fase 5 - Frontend React (Em Progresso)

    •  Setup Vite + React
    •  Configuração Tailwind CSS
    •  Sistema de autenticação
    •  Dashboard com gráficos
    •  CRUD de todos os módulos
    •  Relatórios em PDF
    •  Componentes reutilizáveis

    📅 Fase 6 - Features Avançadas (Planejado)

    •  WebSockets para notificações em tempo real
    •  Exportação de relatórios (PDF, Excel)
    •  Integração com APIs externas (CEP, nota fiscal)
    •  Sistema de permissões granulares
    •  Multi-tenancy (suporte a múltiplas empresas)
    •  Internacionalização (i18n)

    📅 Fase 7 - Testes e Qualidade (Planejado)

    •  Testes unitários (>80% coverage)
    •  Testes de integração
    •  Testes E2E com Cypress
    •  CI/CD com GitHub Actions
    •  Code quality com SonarQube

    📅 Fase 8 - Deploy e Produção (Planejado)

    •  Dockerfile e docker-compose
    •  Deploy em cloud (AWS/Heroku/DigitalOcean)
    •  Monitoramento com Sentry
    •  Logs centralizados
    •  Backup automatizado

    🤝 Contribuindo

    Contribuições são sempre bem-vindas! Siga os passos abaixo:

    1. Fork o projeto
    2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
    3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
    4. Push para a branch (git push origin feature/AmazingFeature)
    5. Abra um Pull Request

    Guidelines

    • Siga o padrão de código PEP 8 (Python)
    • Adicione testes para novas funcionalidades
    • Atualize a documentação conforme necessário
    • Commit messages em português ou inglês
    • Use commits semânticos (feat:, fix:, docs:, etc.)

    📄 Licença

    Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

    🙏 Agradecimentos

    📞 Contato

    Márcio Gil - marciopaivagil@gmail.com

    image image image

    Project Link: https://github.com/MarcioGil/Sistema_Integrador_Empresarial

    ⭐ Se este projeto foi útil para você, considere dar uma estrela!

    Desenvolvido com ❤️ por Márcio Gil

    Embaixador DIO Campus Expert - Turma 14

    Compartilhe
    Comentários (3)
    Marcio Gil
    Marcio Gil - 03/11/2025 15:27

    Muito obrigado pelo elogio e pela leitura atenta!

    Acredito que o maior desafio em projetos que seguem o padrão MVC é manter a disciplina arquitetural resistir à tentação de “encurtar caminhos” e acabar misturando responsabilidades entre as camadas. Exige maturidade técnica e cuidado constante para garantir que cada parte do sistema cumpra seu papel com clareza e coesão, evitando o acoplamento excessivo. No fim, é essa separação bem executada que transforma código em engenharia. 

    Gostaria muito de agradecer a DIO por ter me dado a base técnica e a coragem de criar projetos e ter autonomia pra mostra-los, mesmo ainda estando engatinhando no mundo tecnológico. Essa coragem vem muito do modelo de ensino único da DIO e a ajuda da Comunidade.

    Marcio Gil
    Marcio Gil - 03/11/2025 15:27


    DIO Community
    DIO Community - 03/11/2025 14:17

    Excelente, Marcio! Que artigo épico, detalhado e de altíssimo valor de negócio! Você tocou no ponto crucial da Engenharia de Software moderna: a necessidade de um Sistema Integrador Empresarial robusto e escalável.

    É fascinante ver como você aborda o tema, mostrando que a integração de diferentes setores (Clientes, Estoque, Vendas, Financeiro) em uma única plataforma é a chave para a eficiência operacional e a tomada de decisão baseada em dados.

    Qual você diria que é o maior desafio para um desenvolvedor ao trabalhar com um projeto que usa o padrão MVC, em termos de manter a separação de responsabilidades e de evitar o acoplamento entre as três camadas, em vez de apenas focar em fazer a aplicação funcionar?