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])