Skip to content

Perguntas para Validação — canta-igreja

Gerado pelo Revisor (Reversa) em 2026-05-11 doc_level: detalhado | answer_mode: file

Preencha o campo Resposta de cada pergunta e avise com reversa quando terminar.


Pergunta 1

Contexto: BibliotecaRepository.registrarObra — linha 195 de src/repository/BibliotecaRepository.ts

await Banco.execute(this.disableExemplarObra.query, []);

A query SQL preparada é:

UPDATE exemplar_biblioteca SET ativo=false WHERE id_obra=? and ativo

O ? requer um parâmetro, mas o array passado está vazio ([]). Em SQLite, parâmetro não ligado pode resultar em comportamento indefinido (bind nulo) ou erro de driver.

Spec afetada: [docs/reversa/biblioteca/baixar-obra/requirements.md]

Pergunta: O comportamento atual de passar [] para uma query com WHERE id_obra=? é intencional? O efeito esperado é desativar apenas o exemplar da obra sendo baixada, ou desativar todos os exemplares ativos simultaneamente?

Impacto: Se for bug, a correção é Banco.execute(this.disableExemplarObra.query, [obra.id_obra]). Se for intencional (reset global), a spec deve documentar esse comportamento e as implicações para downloads simultâneos.

✅ Respondida Resposta: Era um bug. Eu corrigi, obrigado.


Pergunta 2

Contexto: src/store/Livros/Livros.selector.ts — linha 12

static readonly allIds = (it: RootState) => it.repertorios.ids;

O seletor allIds do slice de Livros retorna it.repertorios.ids (IDs de repertórios) em vez de it.livros.ids. A LivrosScreen usa este seletor para renderizar a FlatList.

Spec afetada: [docs/reversa/livros/listar-livros/requirements.md], [docs/reversa/livros/edge-cases.md]

Pergunta: Este seletor é um bug conhecido ou existe alguma razão deliberada para apontar para repertorios.ids? A tela de Livros está exibindo itens incorretos em produção?

Impacto: Se bug: a spec deve listar esta correção como tarefa prioritária (T-00) em livros/listar-livros/tasks.md. Se intencional (cenário improvável), a spec deve explicar o motivo.

✅ Respondida Resposta: Era um bug. Eu acabei de corrigir. A maior parte das funcionalidades envolvendo livros estão desabilitadas (exceto a busca de músicas pelo índice da música no livro), por isso esse bug passou despercebido por tanto tempo.


Pergunta 3

Contexto: src/view/fragment/Musica/LeituraDia/LeituraDiaView.tsx — não lido durante a extração.

Spec afetada: [docs/reversa/liturgia/exibir-liturgia/requirements.md], [docs/reversa/liturgia/exibir-liturgia/design.md]

Pergunta: O componente LeituraDiaView exibe estados distintos de carregamento, vazio e erro? Especificamente:

  • Há skeleton/spinner enquanto carrega?
  • Há mensagem específica quando não há liturgia para a data (404)?
  • Há banner/toast de erro quando a rede falha e o cache está expirado?

Impacto: Os requisitos RF-02, RF-03 e RF-04 de exibir-liturgia têm confiança 🟡. As respostas permitem promovê-los para 🟢 ou identificar divergência com o código.

✅ Respondida Resposta: É uma funcionalidade que ainda está sendo desenvolvida. Pelo que verifiquei:

  • não existe indicativo ainda enquanto ainda carrega
  • existe mensagem específica em caso de erro+cache com opção de tentar novamente
  • existe mensagem de aviso em caso de repertório não encontrado

Mas você pode/deve acessar o arquivo para obter detalhes


Pergunta 4

Contexto: src/view/fragment/Youtube/useMiniPlayerDrag.tsresetPosition — lida parcialmente.

Spec afetada: [docs/reversa/youtube-player/modo-mini/requirements.md]

Pergunta: O que dispara resetPosition() no mini player? Acontece somente ao retornar ao modo full, ou também em outros eventos (ex.: rotação de tela, abrir outra música, fechar e reabrir)?

Impacto: A regra resetPosition restaura posição inicial ao voltar para modo full está marcada como 🟡. A resposta permite confirmar ou expandir o comportamento esperado.

✅ Respondida Resposta: O código do youtube está meio bagunçado. Existem na verdade duas implementações misturadas. A primeira implementação que foi feita, era um miniplayer que poderia ser expandido para um player completo. Sobre ele que sua pergunta se refere. A funcionalidade foi deixada de lado, pois não demonstrou ter uma boa usabilidade.

A segunda implementação que é a hoje ativa é de barra do youtube (YoutubeBarPlayerVideo) app/src/view/fragment/Youtube/bar.

Respondendo a pergunta, não sei responder pois a funcionalidade foi deixada de lado.


Pergunta 5

Contexto: src/store/Livros/Livros.reducer.ts — handler de carregarLivro.

Spec afetada: [docs/reversa/livros/edge-cases.md] — EC-02

Pergunta: Quando LivrosAction.carregarLivro é rejeitado (ID inexistente ou erro de banco), o slice atualiza o estado para FALHOU? A UI de LivroScreen trata o estado FALHOU para carregarLivro com algum feedback ao usuário (ex.: tela de erro, navegação de volta)?

Impacto: EC-02 está marcado como 🟡. Se não há handler rejected, é uma lacuna a documentar em tasks.md para tratamento de erro.

✅ Respondida Resposta: Não sei, é algo que será necessário ser verificado caso as funcionalidades de livro sejam reabilitadas.


Pergunta 6

Contexto: src/store/Repertorios/Repertorios.action.tscriarPorSugestao — lido parcialmente, marcado como 🟡 em converter-em-repertorio/requirements.md.

Spec afetada: [docs/reversa/sugestao-repertorio/converter-em-repertorio/requirements.md]

Pergunta: Após criarPorSugestao criar o repertório com sucesso, o app navega automaticamente para a tela de detalhe do repertório criado? Se sim, qual rota é usada?

Impacto: RF-04 ("O repertório criado é navegado automaticamente após a criação") está marcado como 🟢, mas a lógica de navegação não foi lida diretamente — confirmar o comportamento real.

✅ Respondida Resposta: Sim. No fluxo de criação de repertório a partir de sugestão, o aplicativo navega para a visualização do repertório recém criado.

Além disso, o histórico de navegação é alterado de modo que, caso a pessoa volte a tela, ele vá para a aba de repertórios (como se ele tivesse acessado o repertório pelo fluxo padrão, não pelo fluxo de cadastro). A ideia é evitar deixar a pessoa confusa ao voltar para a tela de criação e pense que o repertório ainda não foi criado.


Pergunta 7

Contexto: src/model/repertorio/Repertorio.ts — campo ordem_musicas (JSON array de IDs) — EC-04 de repertorios/edge-cases.md.

Spec afetada: [docs/reversa/repertorios/edge-cases.md] — EC-04

Pergunta: Se ordem_musicas contiver um id_item_repertorio que não existe mais na tabela item_repertorio (dessincronização), o app filtra silenciosamente, exibe undefined, ou gera erro? Há alguma sanitização defensiva ao ler a lista de itens de um repertório?

Impacto: EC-04 está marcado como 🔴 LACUNA. A resposta define o comportamento esperado e se uma tarefa de correção/sanitização é necessária.

✅ Respondida Resposta: Não existe tratamento. Talvez exiba undefined, mas provavelmente gerará erro. Se você verificar a última linha de RepertorioRepository.findItensRepertorio(), notará que ele retorna undefined nesses casos e provavelmente alguma tela que tente usar o ItemRepertorio que na verdade é undefined irá disparar um erro. É provável que nesse caso, a tela de repertório fique inutilizada para repertórios com tal problema.