Skip to content

Livros

Gerado pelo Writer (Reversa) em 2026-05-11 doc_level: detalhado | Granularidade: híbrida (módulo + casos de uso)

Visão Geral

Módulo responsável por gerenciar o catálogo de hinários (livros de cânticos) e suas edições. Os livros são somente-leitura para o usuário — vêm do banco de dados embarcado e são atualizados via download de obras (módulo Biblioteca). A entidade central de uso é EdicaoLivro, que é utilizada como chave de filtro na busca de músicas.

Responsabilidades

  • Listar edições de livros disponíveis no catálogo local
  • Expor id_edicao_livro como chave de filtro para o módulo de Músicas
  • Exibir sigla, editora, edição e ano de cada livro

Regras de Negócio

  • Livros são somente-leitura para o usuário — jamais editados diretamente no app 🟢
  • id_edicao_livro é a entidade central usada como chave de filtro na busca de músicas 🟢
  • detalhes ->> 'sigla' é uma coluna JSON virtual que expõe a sigla do livro na listagem 🟢
  • Um livro pode ter múltiplas edições (ex.: "Canto Eucarístico 4ª ed." e "5ª ed.") — cada uma é um EdicaoLivro distinto 🟢
  • Uma música pode aparecer em múltiplos livros com índices diferentes 🟢

Requisitos Funcionais

ID Requisito Prioridade Critério de Aceite
RF-01 Listar edições de livros disponíveis no catálogo local Must Lista exibe título, editora, edição, ano e sigla de cada EdicaoLivro
RF-02 Selecionar uma edição de livro para filtrar a busca de músicas Must id_edicao_livro selecionado é repassado ao módulo de Músicas como filtro
RF-03 Exibir sigla do livro extraída do campo JSON detalhes Should Sigla aparece corretamente mesmo quando o campo é um JSON virtual
RF-04 Suportar múltiplas edições do mesmo livro Must Cada edição aparece como entrada separada na lista

Requisitos Não Funcionais

Tipo Requisito inferido Evidência no código Confiança
Performance Query de listagem de livros não precisa de paginação (catálogo pequeno) Ausência de paginação no repo 🟡
Integridade Livros são atualizados apenas via importação de obras (ATTACH/DETACH) BibliotecaService.importarObra 🟢

Critérios de Aceitação

Dado que o banco local tem 3 edições de livros
Quando o usuário abre a tela de seleção de livro
Então 3 entradas são exibidas com título, editora, edição e sigla

Dado que o usuário seleciona "Canto Eucarístico 5ª ed."
Quando a seleção é confirmada
Então o módulo de Músicas filtra resultados usando id_edicao_livro correspondente

Dado que o campo detalhes JSON contém '{"sigla": "CE"}'
Quando a lista de livros é renderizada
Então a sigla "CE" aparece ao lado do título do livro

Rastreabilidade de Código

Arquivo Função / Classe Cobertura
src/model/Livro.ts EdicaoLivro 🟢
src/repository/LivrosRepository.ts findAll, findById 🟢
src/store/Livros/ Thunks Redux e reducer 🟢