Skip to content

Visualizar Livro — Tarefas de Implementação

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

Pré-requisitos

  • [ ] LivrosRepository.findById implementado e funcional
  • [ ] livrosSlice configurado no store root com livrosAdapter
  • [ ] BuscaMusicasView disponível e aceitando prop livro: EdicaoLivro | undefined
  • [ ] Rotas AppStack.Livro e AppStack.LivroDetalhes definidas

Tarefas

  • [ ] T-01 — Implementar LivrosRepository.findById(id) com JOIN livro + editora + edicao_livro
  • Origem no legado: src/repository/LivrosRepository.tsfindById + findAllWithWhere
  • Critério de pronto: Retorna EdicaoLivro correto para ID existente; undefined para ID inexistente
  • Confiança: 🟢

  • [ ] T-02 — Implementar thunk LivrosAction.carregarLivro com guard condition

  • Origem no legado: src/store/Livros/Livros.action.tscarregarLivro
  • Critério de pronto: Thunk só executa quando livro não está no store; rejectWithValue('not found') em caso de ausência
  • Confiança: 🟢

  • [ ] T-03 — Adicionar handler rejected para carregarLivro no slice

  • Origem no legado: src/store/Livros/Livros.reducer.tsextraReducers (handler ausente)
  • Critério de pronto: Estado passa para FALHOU quando livro não é encontrado
  • Confiança: 🟡

  • [ ] T-04 — Implementar LivroScreen com LivroHeader e BuscaMusicasView

  • Origem no legado: src/view/screen/LivroScreen.tsx
  • Critério de pronto: Header exibe título, edição, editora; BuscaMusicasView filtra por idEdicaoLivro
  • Confiança: 🟢

  • [ ] T-05 — Adicionar feedback visual (loading indicator) enquanto livro carrega

  • Origem no legado: Não implementado na LivroScreen
  • Critério de pronto: Skeleton ou spinner exibido quando livro === undefined e estado é CARREGANDO
  • Confiança: 🟡

  • [ ] T-06 — Tratar erro de livro não encontrado na UI

  • Origem no legado: Não implementado
  • Critério de pronto: Quando thunk é rejeitado com 'not found', usuário vê mensagem de erro e botão para voltar
  • Confiança: 🟡

Tarefas de Teste

  • [ ] TT-01 — Happy path: livro não está no store → fetch → header renderizado
  • [ ] TT-02 — Cache hit: livro já no store → sem fetch → header imediato
  • [ ] TT-03 — ID inexistente: thunk rejeitado → UI exibe feedback de erro

Ordem Sugerida

  1. T-01 (repositório)
  2. T-02 (thunk)
  3. T-03 (reducer — completar handlers)
  4. T-04 (UI principal)
  5. T-05, T-06 (UX polish)

Lacunas Pendentes (🔴)

  • Comportamento de BuscaMusicasView com livro={undefined} não confirmado — validar integração
  • Não há decisão de design para o estado de livro não encontrado (navegar de volta? exibir erro inline?)