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 |
🟢 |