O SSAG3.0 é uma solução modular de ERP estruturada em duas principais soluções:
- SSAG3.0Core: Define a arquitetura geral do sistema, regras de nomenclatura, módulos base e funcionalidades compartilhadas.
- SSAG3.0ERP: Gerencia funcionalidades específicas do negócio e processos empresariais.
Ambos os sistemas foram desenvolvidos com foco em:
- Centralização: Uma base sólida (Core) para unificar regras e arquitetura.
- Customização: Adaptações no ERP para atender necessidades específicas de clientes ou grupos.
- Escalabilidade: Suporte ao crescimento funcional e técnico.
A estrutura do projeto segue os padrões de arquitetura DDD (Domain-Driven Design) e é dividida em pastas organizadas de acordo com as camadas e responsabilidades.
SSAG3.0Core/
├── UI/ # Camada de Interface do Usuário
│ ├── Components/ # Componentes reutilizáveis de UI
│ ├── Pages/ # Páginas principais da aplicação
│ ├── Layouts/ # Layouts globais da aplicação
│ ├── Styles/ # Arquivos CSS ou SCSS (se aplicável)
│ ├── Shared/ # Recursos compartilhados entre componentes
│ └── wwwroot/ # Arquivos estáticos (imagens, JS, CSS)
├── Application/ # Camada de Aplicação
│ ├── DTOs/ # Objetos de Transferência de Dados
│ ├── Interfaces/ # Interfaces para serviços e handlers
│ ├── Services/ # Serviços de Aplicação
│ └── UseCases/ # Casos de Uso
├── Domain/ # Camada de Domínio
│ ├── Aggregates/ # Agregados do sistema
│ ├── Entities/ # Entidades principais
│ ├── ValueObjects/ # Objetos de Valor
│ ├── Repositories/ # Interfaces de repositórios
│ ├── Services/ # Serviços de domínio
│ ├── Events/ # Eventos do domínio
│ └── Specifications/ # Regras complexas do domínio
├── Infrastructure/ # Camada de Infraestrutura
│ ├── Persistence/ # Persistência de dados
│ │ ├── EFCore/ # Implementação para Entity Framework Core
│ │ ├── SqlServer/ # Configuração para SQL Server
│ └── ExternalIntegrations/ # Integrações externas
├── Shared/ # Recursos compartilhados entre camadas
│ ├── Utilities/ # Métodos auxiliares e ferramentas
│ ├── Enums/ # Enumerações globais
│ ├── Constants/ # Constantes globais
├── Tests/ # Testes Automatizados
│ ├── UnitTests/ # Testes unitários
│ ├── IntegrationTests/ # Testes de integração
├── Docs/ # Documentação do Projeto
└── README.md # Descrição geral do projeto
O pipeline segue os seguintes passos principais:
-
Configuração Inicial
- Criação da solução e estrutura de pastas (DDD).
- Configuração de dependências entre projetos.
-
Domínio
- Definição de entidades principais (Ex.:
Cliente, Produto, Pedido).
- Criação de Objetos de Valor (Ex.:
CPF, Email).
- Implementação de regras de negócio e validações.
-
Aplicação
- Criação de casos de uso (UseCases) e DTOs.
- Implementação de serviços orquestradores.
-
Infraestrutura
- Configuração de persistência (EF Core, SQL Server).
- Criação de repositórios e serviços externos.
-
UI
- Implementação de páginas e componentes Blazor Server.
- Conexão da camada de aplicação com a interface.
-
Testes
- Desenvolvimento de testes unitários e de integração.
- ID da Tabela:
[3 dígitos módulo]_[2 dígitos tabela/contexto + hierarquia]
- Exemplo:
CAD_CLH – Cadastro de Clientes.
- ID do Campo:
[3 últimos dígitos tabela]_[nome do campo]
- Classes: Devem seguir o padrão PascalCase.
- Arquivos: Nomeados com a respectiva entidade (Ex.:
Cliente.cs).
A customização permite adaptar o sistema às necessidades específicas de cada cliente, grupo de empresas ou usuário.
-
Core vs ERP:
- Core: Responsável por fornecer estrutura base e validações.
- ERP: Permite customizações, mantendo a compatibilidade com o Core.
-
Níveis de Customização:
- Global: Alterações válidas para todo o sistema.
- Grupo de Empresas: Configurações específicas para um conjunto de empresas.
- Usuário: Preferências individuais.
- Márcio Costa: Gestor do Projeto, responsável por aprovações e roadmap.
- Renato Vilar: Backend, responsável pela camada de aplicação e infraestrutura.
- Jhonatas Araújo: Frontend, responsável pela camada de interface (Blazor Server).
| Critério |
Carregamento Dinâmico |
Geração de Arquivos |
Híbrido (Escolhido) |
| Performance |
Alta, mas com trade-offs. |
Média, devido ao processamento. |
Alta, com uso otimizado. |
| Escalabilidade |
Complexa em customizações. |
Facilmente escalável. |
Balanceada. |
| Manutenção |
Mais custosa. |
Simples, mas rígida. |
Intermediária. |
| Adaptação |
Alta flexibilidade. |
Limitada às gerações. |
Balanceada. |
| Responsável |
Cargo |
Aprovação |
| Márcio Costa |
Gestor do Projeto |
[X] Aprovado |
| Renato Vilar |
Sócio, Backend |
[_] Aprovado |
| Jhonatas Araújo |
Sócio, Frontend |
[X] Aprovado |
- Descrição: Banco de dados central para definições, nomenclaturas e regras gerais.
- Uso: Exclusivo para gestores do projeto e equipe do núcleo.
- Acesso: Altamente restrito.
- Objetivo: Controlar as bases do sistema (tabelas, dicionários, consultas padrão).
- Descrição: Banco de dados dos módulos do ERP em desenvolvimento.
- Uso: Exclusivo para gestores e desenvolvedores.
- Acesso: Restrito.
- Objetivo: Permitir desenvolvimento de módulos do ERP.
- Descrição: Banco de dados Identity para controle de usuários, roles e claims.
- Uso: Exclusivo para gestores e desenvolvedores.
- Acesso: Restrito.
- Objetivo: Centralizar a autenticação e autorização.
- Descrição: Banco de dados de auditoria e logs do sistema.
- Uso: Exclusivo para gestores e desenvolvedores.
- Acesso: Restrito.
- Objetivo: Registro de ações e eventos do sistema.
- Descrição: Banco de dados central para definições e nomenclaturas.
- Uso: Acesso somente por gestores do núcleo.
- Status: Não disponível em produção.
- Descrição: Banco de dados dedicado aos módulos do ERP para cada cliente.
- Uso: Customizações e configurações exclusivas por cliente.
- Acesso: Restrito aos gestores e desenvolvedores.
- Objetivo: Prover flexibilidade e personalização para os clientes.
- Descrição: Banco único para gerenciar usuários, roles e claims de todos os clientes.
- Vantagem: Controle centralizado e fácil gerenciamento.
- Desvantagem: Possível dependência crítica em falhas.
- Descrição: Cada cliente possui seu próprio banco de dados Identity.
- Vantagem: Maior isolamento e controle local por cliente.
- Desvantagem: Maior complexidade para manutenção e suporte.
- Descrição: Banco de dados para armazenar os logs de cada cliente.
- Uso: Controle e auditoria de eventos específicos de cada cliente.
- Acesso: Apenas o cliente e administradores autorizados.
- Objetivo: Garantir rastreabilidade e segurança.
- SDBCore (Dev) gera scripts de inicialização para SDBERP_[IdCliente] em produção.
- SDBUSR em produção realiza autenticação e autorização centralizadas ou segregadas.
- SDBLog_[IdCliente] registra eventos do cliente em tempo real.
- SDBERP_[IdCliente] personaliza módulos, tabelas e funcionalidades específicas por cliente.