🔄 Fluxos - ecosif-compliance

📋 Visão Geral

Este documento descreve os principais fluxos de validação do serviço ecosif-compliance.


🔄 Fluxo 1: Executar Validação de Conformidade

Descrição

Validação de documentos contábeis usando regras configuradas.

Diagrama de Sequência

sequenceDiagram
    participant Client as Cliente
    participant Flask as Flask API
    participant Service as ComplianceService
    participant RuleDao as RuleDao
    participant Parser as PLY Parser
    participant AccountService as AccountService
    participant ProcessDao as ProcessDao
    participant DB as PostgreSQL

    Client->>Flask: POST /api/compliance/run
    Flask->>Flask: Validar parâmetros
    Flask->>Service: run(company_id, branch_id, ref_date)
    Service->>RuleDao: list_applicable_rules(...)
    RuleDao->>DB: SELECT * FROM rule WHERE ...
    DB-->>RuleDao: List<RuleEntity>
    RuleDao-->>Service: Regras aplicáveis

    loop Para cada regra
        Service->>Parser: compilar(regra.script)
        Parser-->>Service: AST compilado

        Service->>Service: executar_regra(AST, dados)
        Service->>AccountService: SALDO_CONTA(...)
        AccountService->>DB: SELECT saldo FROM ...
        DB-->>AccountService: Saldo
        AccountService-->>Service: Saldo calculado

        Service->>Service: avaliar_condicoes(...)
        Service-->>Service: Resultado (OK/ERRO)
    end

    Service->>ProcessDao: create_process(...)
    ProcessDao->>DB: INSERT INTO process ...
    DB-->>ProcessDao: ProcessEntity

    Service->>ProcessDao: create_process_rules(...)
    ProcessDao->>DB: INSERT INTO process_rule ...

    Service-->>Flask: Resultado da validação
    Flask-->>Client: 200 OK (JSON)

🔄 Fluxo 2: Adicionar Nova Regra

Descrição

Cadastro de uma nova regra de validação.

Diagrama de Sequência

sequenceDiagram
    participant Client as Cliente
    participant Flask as Flask API
    participant Service as RuleService
    participant RuleDao as RuleDao
    participant Parser as PLY Parser
    participant DB as PostgreSQL

    Client->>Flask: POST /api/compliance/rule/add
    Flask->>Flask: Validar parâmetros (form data)
    Flask->>Service: add_rule(...)
    Service->>Service: Validar dados

    Service->>Parser: validar_script(script)
    Parser-->>Service: Script válido ou erro

    alt Script válido
        Service->>RuleDao: create(rule_data)
        RuleDao->>DB: INSERT INTO rule ...
        DB-->>RuleDao: RuleEntity
        RuleDao-->>Service: Regra criada
        Service-->>Flask: Regra criada
    else Script inválido
        Service-->>Flask: BadRequestException
    end

    Flask-->>Client: 200 OK ou 400 Bad Request

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