Skip to content

Repertórios — Tarefas de Implementação

Gerado pelo Writer (Reversa) em 2026-05-11 doc_level: detalhado

Camada: Dados

ID Tarefa Arquivo de origem Critério de pronto Confiança
T-01 Garantir schema SQL com CHECK length(titulo) <= 50 e length(termo) <= 300 src/arch/persistence/migration/ (migration v8) Migration v8 executada; violações lançam erro SQL 🟢
T-02 Implementar findAllBy() retornando apenas repertórios com data_exclusao IS NULL RepertoriosRepository.ts Repertórios excluídos não aparecem na lista 🟢
T-03 Implementar createRepertorio(titulo) com ordem_musicas = '[]' e tipo_repertorio = 0 RepertoriosRepository.ts INSERT retorna id_repertorio; tipo_repertorio padrão é 0 🟢
T-04 Implementar deactivateRepertorio(id) com guard: tipo_repertorio != 1 RepertoriosRepository.ts Repertórios padrão (id=1, id=2) rejeitam soft-delete com erro explícito 🟢
T-05 Implementar updateOrdemMusicas(id_repertorio, ordem: number[]) serializando para JSON RepertoriosRepository.ts ordem_musicas reflete a nova ordem após UPDATE 🟢
T-06 Implementar createItemRepertorio aceitando { id_musica?, termo?, momento?, tonalidade? } RepertoriosRepository.ts Item criado com id_musica OU termo, nunca ambos vazios 🟢
T-07 Implementar trim automático de momento e tonalidade antes do UPDATE RepertoriosRepository.ts Valores com espaços nas extremidades são persistidos sem espaços 🟢
T-08 Implementar findRepertorioSimilar(slug) para importação: busca local por slug_referencia ou slug_corrente src/service/RepertorioService.ts Retorna id local se já existe; evita duplicação por importação repetida 🟢

Camada: Serviços

ID Tarefa Arquivo de origem Critério de pronto Confiança
T-09 Implementar gerarMensagemCompartilhamento(repertorio, itens, url) src/service/RepertorioService.ts Mensagem contém título, metadata pt-BR, itens em Markdown WhatsApp e URL 🟢
T-10 Implementar CompartilharService.getToken() com fallback para Auth.autenticar() src/service/CompartilharService.ts Token válido retornado; se usuário cancela auth, fluxo é abortado com Toast 🟢
T-11 Implementar CompartilharService.repertorio(id) com POST/PUT à API e update do slug.corrente src/service/CompartilharService.ts slug.corrente atualizado localmente após resposta da API 🟢
T-12 Implementar FolhetoService com as 3 estratégias: ComSlug, Base64, Noop src/service/FolhetoService.ts Cada estratégia abre a URL correta; Noop não causa erro 🟢
T-13 Implementar Base64Unicode.encode(query) para serialização do repertório sem autenticação src/service/FolhetoService.ts ou util URL gerada é acessível em livreto.canta.app/?repertorio=<base64> 🟢

Camada: Store (Redux)

ID Tarefa Arquivo de origem Critério de pronto Confiança
T-14 Implementar thunk criarRepertorio(titulo) com despacho de Metricas.repertorioCriado() src/store/Repertorios/Repertorios.action.ts Store atualizado; métrica registrada; Toast de sucesso exibido 🟢
T-15 Implementar thunk desativarRepertorio(id) com verificação de tipo_repertorio src/store/Repertorios/Repertorios.action.ts Repertório removido do store; erro explícito se tipo_repertorio = 1 🟢
T-16 Implementar thunk duplicarRepertorio(id) com slug undefined e despacho de métrica src/store/Repertorios/Repertorios.action.ts Nova cópia no store sem slug; Metricas.repertorioDuplicado() chamado 🟢
T-17 Implementar thunk compartilharRepertorio(id) integrando CompartilharService e Share.share src/store/Repertorios/Repertorios.action.ts Dialog nativo abre com mensagem Markdown; erro de rede exibe Toast 🟢
T-18 Implementar thunk importarRepertorioPorSlug(slug) com deduplicação local src/store/Repertorios/Repertorios.action.ts Repertório importado aparece no store; slug já existente redireciona sem duplicar 🟢

Camada: UI (Views)

ID Tarefa Arquivo de origem Critério de pronto Confiança
T-19 Implementar tela de lista de repertórios com suporte a criar, editar e excluir src/view/screen/repertorio/ CRUD refletido em tempo real no store; repertórios padrão exibidos mas protegidos 🟢
T-20 Implementar tela de detalhe do repertório com lista de itens e ações por item src/view/screen/repertorio/ Itens exibidos na ordem de ordem_musicas; botões de edição/remoção funcionais 🟢
T-21 Implementar campos editáveis de momento e tonalidade com sugestões de histórico src/view/fragment/ AutoComplete exibe últimos valores usados; trim aplicado ao salvar 🟡
T-22 Exibir sigla e índice do livro ao lado da música no detalhe do repertório src/view/screen/repertorio/ Sigla e índice visíveis se a música tem livro associado 🟢
T-23 Desabilitar botão de reordenação na UI (DT-08 ativo) src/view/screen/repertorio/ Botão de reordenação ausente ou visualmente desabilitado 🟢