Skip to content

Flowchart — Módulo: repertorios

Gerado pelo Archaeologist (Reversa) em 2026-05-11


Fluxo Geral do Módulo

flowchart TD
    A([Usuário acessa Meus Repertórios]) --> B[findAllBy: lista todos não excluídos]
    B --> C([Lista de repertórios])
    C --> D{Ação do usuário}
    D -- Criar --> E[createRepertorio: INSERT com Timestamp.now]
    D -- Abrir --> F[findById: carrega itens]
    D -- Editar título --> G[updateRepertorio]
    D -- Excluir --> H[deactivateRepertorio: SET data_exclusao]
    D -- Compartilhar --> I[CompartilharService.repertorio]
    D -- Gerar folheto --> J[FolhetoService: GerarFolhetoStrategy]

Fluxo: Compartilhamento de Repertório

flowchart TD
    A([Compartilhar repertório]) --> B[CompartilharService.getToken]
    B --> C{Usuário autenticado?}
    C -- Não --> D[Auth.autenticar]
    D --> E{OAuth OK?}
    E -- Não --> F([Toast: erro de autenticação])
    E -- Sim --> G[Api.compartilharRepertorio POST/PUT]
    C -- Sim --> G
    G --> H{Erro de rede?}
    H -- Sim --> I([Toast: sem internet])
    H -- Não --> J[Recebe conta.slug + slug do servidor]
    J --> K[Atualiza slug.corrente localmente]
    K --> L[RepertorioService.gerarMensagemCompartilhamento]
    L --> M[Share.share: dialog nativo]
    M --> N[Metricas.compartilharRepertorio]
    N --> O([Concluído])

Fluxo: Geração de Mensagem de Compartilhamento

flowchart TD
    A([repertorio + itens]) --> B[RepertorioService.gerarMensagemCompartilhamento]
    B --> C[formatarMetadata: data pt-BR longa + dia litúrgico romcal]
    C --> D[Título do repertório]
    D --> E[Para cada ItemRepertorio: toMarkdown]
    E --> F[tonalidade: código inline, momento: italic, título]
    F --> G[Se tem livro: sigla + índice]
    G --> H[toUrl: https://canta.app/repertorios/?conta:slug]
    H --> I([Texto WhatsApp completo])

Fluxo: Geração de Folheto

flowchart TD
    A([Gerar folheto]) --> B{Modo}
    B -- ComSlug --> C[Auth.autenticar]
    C --> D[Api.compartilharRepertorio]
    D --> E[openLink livreto.canta.app/?conta:slug]
    B -- Base64 --> F[RepertorioService.convertToQuery]
    F --> G[Base64Unicode.encode]
    G --> H[openLink livreto.canta.app/?repertorio=BASE64]
    B -- Noop --> I([Sem ação])
    E & H --> J[Metricas.gerarFolheto]

Fluxo: Importar Repertório por Slug

flowchart TD
    A([URL: canta.app/repertorios/?conta:slug]) --> B[RepertorioService.findRepertorioSimilar]
    B --> C{Slug já existe localmente?}
    C -- Sim --> D([Abre repertório existente])
    C -- Não --> E[Api.getRepertorioPorSlug]
    E --> F[Mapeia RepertorioPersistidoResponse → Repertorio]
    F --> G[createRepertorio INSERT]
    G --> H[Para cada item: createItemRepertorio]
    H --> I([Repertório importado])