π Camadas - ecosif-angular
π VisΓ£o Geral
Este documento detalha a arquitetura em camadas do ecosif-angular, explicando responsabilidades e interaΓ§Γ΅es entre as camadas.
ποΈ Camadas da AplicaΓ§Γ£o
1. Camada de ApresentaΓ§Γ£o (Presentation Layer)
Responsabilidades
- β RenderizaΓ§Γ£o da interface do usuΓ‘rio
- β Captura de interaΓ§Γ΅es do usuΓ‘rio
- β ValidaΓ§Γ£o de formulΓ‘rios (template-driven e reactive)
- β ExibiΓ§Γ£o de dados formatados
Componentes
src/app/
βββ pages/ # ~87 componentes de pΓ‘ginas
β βββ login/
β βββ dashboard/
β βββ companydetails/
β βββ ...
βββ views/ # Views lazy-loaded
β βββ dashboard/
β βββ base/
β βββ notifications/
βββ containers/ # Layout containers
β βββ default-layout/
βββ shared/components/ # Componentes reutilizΓ‘veis
PadrΓ΅es
- Smart/Dumb Components - SeparaΓ§Γ£o de lΓ³gica e apresentaΓ§Γ£o
- Component Communication - @Input/@Output, Services
- Change Detection - OnPush onde possΓvel
2. Camada de AplicaΓ§Γ£o (Application Layer)
Responsabilidades
- β LΓ³gica de negΓ³cio da aplicaΓ§Γ£o
- β ComunicaΓ§Γ£o HTTP com backends
- β TransformaΓ§Γ£o de dados (DTO β Model)
- β Gerenciamento de estado
- β ValidaΓ§Γ΅es de negΓ³cio
Services
src/app/service/
βββ auth.service.ts # AutenticaΓ§Γ£o
βββ company.service.ts # Empresas
βββ chartofaccount.service.ts # Planos de contas
βββ entries.service.ts # LanΓ§amentos
βββ balanceinquiry.service.ts # Consultas
βββ relatorios.service.ts # RelatΓ³rios
βββ ... (41 services)
PadrΓ΅es
- Injectable Root -
providedIn: 'root' - Observable-based - RxJS para assΓncrono
- Error Handling - Try/catch + error callbacks
3. Camada de Infraestrutura (Infrastructure Layer)
Responsabilidades
- β ConfiguraΓ§Γ£o da aplicaΓ§Γ£o
- β InterceptaΓ§Γ£o de requisiΓ§Γ΅es HTTP
- β ProteΓ§Γ£o de rotas
- β Gerenciamento de erros globais
- β Logging e monitoramento
Componentes
src/app/
βββ core/
β βββ config/ # AppConfigService
β βββ services/ # Core services
β βββ validators/ # Validadores customizados
βββ guard/
β βββ auth.guard.ts # Route guard
βββ interceptor/
β βββ auth.interceptor.ts # HTTP interceptor
βββ custom_exception/ # Exception handling
4. Camada de Dados (Data Layer)
Responsabilidades
- β DefiniΓ§Γ£o de modelos/interfaces
- β Tipagem TypeScript
- β ValidaΓ§Γ£o de estruturas de dados
Models
src/app/model/
βββ user.ts
βββ company.detail.ts
βββ chartofaccount.ts
βββ entries.ts
βββ ... (27 models)
π Fluxo de Dados entre Camadas
Exemplo: Buscar Empresas
βββββββββββββββββββββββββββββββββββββββββββ
β 1. Presentation Layer β
β CompanydetailsComponent β
β β’ ngOnInit() β
β β’ Template chama service β
ββββββββββββββββββββ¬βββββββββββββββββββββββ
β
β this.companyService.getCompanies()
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β 2. Application Layer β
β CompanyService β
β β’ getCompanies(): Observable β
β β’ Faz requisiΓ§Γ£o HTTP β
ββββββββββββββββββββ¬βββββββββββββββββββββββ
β
β this.http.get<Company[]>(url)
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β 3. Infrastructure Layer β
β AuthInterceptor β
β β’ Adiciona token JWT β
β β’ Adiciona headers β
ββββββββββββββββββββ¬βββββββββββββββββββββββ
β
β HTTP Request
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β 4. Backend Service β
β ecosif-masterdata β
β β’ Processa requisiΓ§Γ£o β
β β’ Retorna dados β
ββββββββββββββββββββ¬βββββββββββββββββββββββ
β
β HTTP Response
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β 3. Infrastructure Layer (retorno) β
β β’ Interceptor processa response β
β β’ Error handling se necessΓ‘rio β
ββββββββββββββββββββ¬βββββββββββββββββββββββ
β
β Observable<Company[]>
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β 2. Application Layer (retorno) β
β CompanyService β
β β’ Transforma dados se necessΓ‘rio β
β β’ Retorna Observable β
ββββββββββββββββββββ¬βββββββββββββββββββββββ
β
β Observable<Company[]>
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β 1. Presentation Layer (retorno) β
β CompanydetailsComponent β
β β’ Atualiza propriedades β
β β’ UI atualiza via bindings β
βββββββββββββββββββββββββββββββββββββββββββ
π― PrincΓpios de SeparaΓ§Γ£o
Single Responsibility
Cada camada tem uma responsabilidade ΓΊnica:
- Presentation: UI e interaΓ§Γ£o
- Application: LΓ³gica de negΓ³cio
- Infrastructure: ConfiguraΓ§Γ£o e infraestrutura
- Data: Estruturas de dados
Dependency Inversion
Camadas superiores dependem de abstraΓ§Γ΅es:
// Component depende de Service (abstraΓ§Γ£o)
constructor(private service: CompanyService) {}
// Service depende de HttpClient (abstraΓ§Γ£o)
constructor(private http: HttpClient) {}
π Resumo de Camadas
| Camada | Arquivos | Responsabilidade Principal |
|---|---|---|
| Presentation | ~200 componentes | UI e interaΓ§Γ£o |
| Application | 41 services | LΓ³gica de negΓ³cio |
| Infrastructure | Core + Guards + Interceptors | ConfiguraΓ§Γ£o e infraestrutura |
| Data | 27 models | Estruturas de dados |
Γltima AtualizaΓ§Γ£o: 2025-12-01