Mermaid fluxo api lote

sequenceDiagram
    autonumber
    participant Usuário
    participant API
    activate Usuário
    Usuário->>+API: verificaAtualizacoes
    API-->>+Usuário: retorna lista de hashes de capítulos ou fundamentos legais para o dia atual  
    Usuário->>+API: obterHash
    API-->>+Usuário: retorna mensagem informando que o hash será gerado em instantes
    Usuário->>+API: obterHash
    API-->>+Usuário: retorna hash do arquivo solicitado
    Usuário->>+API: realizar download
    API-->>+Usuário: retorna arquivo solicitado
sequenceDiagram
    participant U as Usuário Importador
    participant API as API

    %% NCM - Capitulos
    U->>API: GET /ncm-capitulos/hashes
    API-->>U: Lista de capítulos + hashes

    loop Para cada capítulo desejado
        U->>API: GET /ncm-capitulos/{capitulo}/tratamentos-tributarios?data&hash
        API-->>U: Arquivo do capítulo
    end

    %% Nomenclaturas Alternativas
    U->>API: GET /fundamentos-legais/nomenclaturas-alternativas/hashes
    API-->>U: Lista de fundamentos legais + hashes

    loop Para cada fundamento legal desejado
        U->>API: GET /fundamentos-legais/{codigoFundamentoLegal}/nomenclaturas-alternativas/tratamentos-tributarios?data&hash
        API-->>U: Arquivo de nomenclatura alternativa
    end
sequenceDiagram
    participant U as Usuário Importador
    participant API as API
    participant LOCAL as Base Local

    %% Verificar hashes
    U->>API: GET /ncm-capitulos/hashes
    API-->>U: Lista de capítulos + hashes

    %% Comparação
    U->>LOCAL: Comparar hashes recebidos vs armazenados

    alt Existe capítulo com hash diferente
        loop Para cada capítulo desatualizado
            U->>API: GET /ncm-capitulos/{capitulo}/tratamentos-tributarios?data&hash
            API-->>U: Arquivo atualizado
            U->>LOCAL: Atualizar base local + novo hash
        end
    else Nenhuma atualização
        U->>LOCAL: Nenhuma ação necessária
    end
sequenceDiagram
    participant U as Usuário Importador
    participant API as API
    participant LOCAL as Base Local

    %% Verificar hashes
    U->>API: GET /fundamentos-legais/nomenclaturas-alternativas/hashes
    API-->>U: Lista de fundamentos legais + hashes

    %% Comparação
    U->>LOCAL: Comparar hashes recebidos vs armazenados

    alt Existe fundamento legal com hash diferente
        loop Para cada fundamento legal desatualizado
            U->>API: GET /fundamentos-legais/{codigoFundamentoLegal}/nomenclaturas-alternativas/tratamentos-tributarios?data&hash
            API-->>U: Arquivo atualizado
            U->>LOCAL: Atualizar base local + novo hash
        end
    else Nenhuma atualização
        U->>LOCAL: Nenhuma ação necessária
    end
sequenceDiagram
    participant U as Usuário Importador
    participant API as API
    participant LOCAL as Base Local

    %% Execução inicial
    U->>API: Executar processo DUIMP
    API-->>U: Erro de parâmetros (possível TTCE desatualizado)

    %% Atualização NCM (3.2)
    U->>API: GET /ncm-capitulos/hashes
    API-->>U: Lista de capítulos + hashes
    U->>LOCAL: Comparar hashes NCM

    alt Existe capítulo desatualizado
        loop Para cada capítulo desatualizado
            U->>API: GET /ncm-capitulos/{capitulo}/tratamentos-tributarios?data&hash
            API-->>U: Arquivo atualizado
            U->>LOCAL: Atualizar base NCM
        end
    end

    %% Atualização Nomenclaturas Alternativas (3.3)
    U->>API: GET /fundamentos-legais/nomenclaturas-alternativas/hashes
    API-->>U: Lista de fundamentos legais + hashes
    U->>LOCAL: Comparar hashes nomenclaturas

    alt Existe fundamento legal desatualizado
        loop Para cada fundamento legal desatualizado
            U->>API: GET /fundamentos-legais/{codigoFundamentoLegal}/nomenclaturas-alternativas/tratamentos-tributarios?data&hash
            API-->>U: Arquivo atualizado
            U->>LOCAL: Atualizar base nomenclaturas
        end
    end

    %% Reprocessamento
    U->>LOCAL: Corrigir dados com base atualizada
    U->>API: Reexecutar processo DUIMP
    API-->>U: Sucesso
sequenceDiagram
    participant U as Usuário Importador
    participant API as API
    participant LOCAL as Base Local

    %% Execução inicial
    U->>API: Executar processo DUIMP
    API-->>U: Erro de parâmetros (possível TTCE desatualizado)

    %% Verificação inicial NCM
    U->>API: GET /ncm-capitulos/hashes
    API-->>U: Lista de capítulos + hashes (status G)

    alt Arquivos em geração (status G)
        U->>U: Aguardar alguns minutos
        U->>API: GET /ncm-capitulos/hashes (retry)
        API-->>U: Lista atualizada (status concluído)
    end

    %% Comparação NCM
    U->>LOCAL: Comparar hashes NCM

    alt Existe capítulo desatualizado
        loop Para cada capítulo desatualizado
            U->>API: GET /ncm-capitulos/{capitulo}/tratamentos-tributarios?data&hash
            API-->>U: Arquivo atualizado
            U->>LOCAL: Atualizar base NCM
        end
    end

    %% Nomenclaturas Alternativas
    U->>API: GET /fundamentos-legais/nomenclaturas-alternativas/hashes
    API-->>U: Lista de fundamentos legais + hashes

    U->>LOCAL: Comparar hashes nomenclaturas

    alt Existe fundamento legal desatualizado
        loop Para cada fundamento legal desatualizado
            U->>API: GET /fundamentos-legais/{codigoFundamentoLegal}/nomenclaturas-alternativas/tratamentos-tributarios?data&hash
            API-->>U: Arquivo atualizado
            U->>LOCAL: Atualizar base nomenclaturas
        end
    end

    %% Reprocessamento
    U->>LOCAL: Corrigir dados com base atualizada
    U->>API: Reexecutar processo DUIMP
    API-->>U: Sucesso
sequenceDiagram
    participant U as Usuário Importador
    participant API as API

    %% Solicitação de hash
    U->>API: GET /ncm-capitulos/{capitulo}/hash?data
    API-->>U: Resposta inicial

    alt Arquivo  disponível
        API-->>U: Retorna hash do arquivo
    else Arquivo ainda não disponível
        API-->>U: Mensagem: arquivo em geração
        U->>U: Aguardar alguns instantes
        U->>API: GET /ncm-capitulos/{capitulo}/hash?data (retry)
        API-->>U: Retorna hash do arquivo
    end

    %% Download do arquivo
    U->>API: GET /ncm-capitulos/{capitulo}/tratamentos-tributarios?data&hash
    API-->>U: Arquivo solicitado
sequenceDiagram
    participant U as Usuário Importador
    participant API as API

    %% Solicitação de hash
    U->>API: GET /fundamentos-legais/{codigoFundamentoLegal}/nomenclaturas-alternativas/hash?data
    API-->>U: Resposta inicial

    alt Arquivo  disponível
        API-->>U: Retorna hash do arquivo
    else Arquivo ainda não disponível
        API-->>U: Mensagem: arquivo em geração
        U->>U: Aguardar alguns instantes
        U->>API: GET /fundamentos-legais/{codigoFundamentoLegal}/nomenclaturas-alternativas/hash?data (retry)
        API-->>U: Retorna hash do arquivo
    end

    %% Download do arquivo
    U->>API: GET /fundamentos-legais/{codigoFundamentoLegal}/nomenclaturas-alternativas/tratamentos-tributarios?data&hash
    API-->>U: Arquivo solicitado