πŸ“ Camadas - ecosif-compliance

πŸ“‹ VisΓ£o Geral

O serviΓ§o ecosif-compliance segue uma arquitetura em camadas focada em validaΓ§Γ£o de conformidade, utilizando Flask para API REST e SQLAlchemy para persistΓͺncia.


πŸ—οΈ Estrutura de Camadas

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Camada de ApresentaΓ§Γ£o (REST)               β”‚
β”‚                                                          β”‚
β”‚  Flask + Flask-RESTX                                    β”‚
β”‚  β€’ starter.py                                           β”‚
β”‚  β€’ Endpoints REST (@api.route)                          β”‚
β”‚  β€’ Swagger UI automΓ‘tico                                β”‚
β”‚                                                          β”‚
β”‚  Responsabilidades:                                     β”‚
β”‚  β€’ Receber requisiΓ§Γ΅es HTTP                             β”‚
β”‚  β€’ ValidaΓ§Γ£o de entrada                                 β”‚
β”‚  β€’ SerializaΓ§Γ£o de respostas                            β”‚
β”‚  β€’ Tratamento de erros HTTP                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β”‚ chama
                     β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚            Camada de AplicaΓ§Γ£o (Services)               β”‚
β”‚                                                          β”‚
β”‚  Services                                              β”‚
β”‚  β€’ compliance.py - ValidaΓ§Γ£o principal                 β”‚
β”‚  β€’ rule.py - Gerenciamento de regras                   β”‚
β”‚  β€’ account.py - OperaΓ§Γ΅es com contas                   β”‚
β”‚                                                          β”‚
β”‚  Responsabilidades:                                     β”‚
β”‚  β€’ LΓ³gica de validaΓ§Γ£o                                 β”‚
β”‚  β€’ ExecuΓ§Γ£o de regras DSL                              β”‚
β”‚  β€’ Processamento de dados                              β”‚
β”‚  β€’ OrquestraΓ§Γ£o de operaΓ§Γ΅es                           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β”‚ usa
                     β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           Camada de PersistΓͺncia (DAOs)                 β”‚
β”‚                                                          β”‚
β”‚  Data Access Objects                                   β”‚
β”‚  β€’ RuleDao                                             β”‚
β”‚  β€’ DocumentDao                                         β”‚
β”‚  β€’ ProcessDao                                          β”‚
β”‚  β€’ ClueTypeDao                                         β”‚
β”‚                                                          β”‚
β”‚  Responsabilidades:                                     β”‚
β”‚  β€’ Acesso a dados                                      β”‚
β”‚  β€’ Queries otimizadas                                  β”‚
β”‚  β€’ Mapeamento objeto-relacional                        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β”‚ usa
                     β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Camada de Dados (ORM)                      β”‚
β”‚                                                          β”‚
β”‚  SQLAlchemy Entities                                   β”‚
β”‚  β€’ RuleEntity                                          β”‚
β”‚  β€’ DocumentEntity                                      β”‚
β”‚  β€’ ProcessEntity                                       β”‚
β”‚  β€’ ...                                                 β”‚
β”‚                                                          β”‚
β”‚  Responsabilidades:                                     β”‚
β”‚  β€’ Mapeamento ORM                                      β”‚
β”‚  β€’ ValidaΓ§Γ΅es de modelo                                β”‚
β”‚  β€’ Relacionamentos                                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β”‚ persiste
                     β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                 PostgreSQL Database                      β”‚
β”‚  β€’ Tabelas de regras                                   β”‚
β”‚  β€’ Tabelas de processos                                β”‚
β”‚  β€’ Dados contΓ‘beis                                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ”„ Fluxo de Dados: ExecuΓ§Γ£o de ValidaΓ§Γ£o

Cliente HTTP
    β”‚
    β–Ό
Flask Endpoint (POST /api/compliance/run)
    β”‚ Valida parΓ’metros
    β”‚
    β–Ό
ComplianceService.run()
    β”‚ Busca regras aplicΓ‘veis via RuleDao
    β”‚
    β–Ό
RuleDao
    β”‚ Query SQLAlchemy
    β”‚
    β–Ό
PostgreSQL
    β”‚ Dados de regras
    β”‚
    β–Ό
ComplianceService
    β”‚ Para cada regra:
    β”‚   - Compila script DSL (PLY parser)
    β”‚   - Executa sobre dados contΓ‘beis
    β”‚   - Coleta resultados
    β”‚
    β–Ό
ProcessDao
    β”‚ Persiste resultados
    β”‚
    β–Ό
PostgreSQL
    β”‚ Dados persistidos
    β”‚
    β–Ό
Flask
    β”‚ Retorna JSON com resultados
    β”‚
    β–Ό
Cliente HTTP

Última Atualização: 2025-12-01