Awesome CopilotAdventures

Documentação do produto verificada

Desenvolva a disponibilidade de livros em Python

Esta é uma nova funcionalidade em uma aplicação existente, não uma solicitação para regenerar toda a biblioteca. Acompanhe a alteração desde a entrada do menu até o resultado observado.

Resumo do laboratório

Cartões de consulta passam por um módulo de normalização e uma lupa de busca em direção a exemplares individuais da biblioteca.

Ilustração conceitual original (SVG)

Conecte a busca normalizada à disponibilidade por cópia.

Em resumo Sua rota
Nível e tempo 200; 70 minutos (estimativa de facilitação)
Ação inicial Use datas controladas e teste uma cópia disponível e uma emprestada.
Materiais do aluno Baixe 03-python.zip
Workspace Abra a raiz do kit extraído; execute a baseline de library relativa a essa raiz
Verificação inicial esperada Os testes unittest existentes são descobertos e passam.
Ajuda de configuração Baixe, extraia, Git local e GitHub opcional

[!NOTE] Um helper aprovado ainda está incompleto até o menu de console alcançá-lo.

Conceitos · Primeira tarefa · Lista de evidências · Redefinir

Objetivos de aprendizagem

  • Defina a semântica de busca e disponibilidade antes da implementação.
  • Use as interfaces e a raiz de importação reais do Python.
  • Conecte uma funcionalidade testada às ações existentes do console.

Antes de começar

Prepare 03-python usando a configuração comum e abra somente a cópia. Execute os comandos a seguir a partir do diretório library dela. A fixture da funcionalidade incluída usa dados JSON sintéticos.

Conceitos e casos de uso

A busca normaliza a entrada para correspondência, não necessariamente para armazenamento. A disponibilidade pertence a um book_item, não a todos os exemplares de um book. Um empréstimo ativo é aquele sem data de devolução; uma data de vencimento no passado não o devolve.

Cenário do exercício

A pessoa bibliotecária solicita busca parcial por título e disponibilidade por exemplar. Novos empréstimos, reservas, contas e alterações de persistência estão fora do escopo.

Tarefa 1 - Inspecione o fluxo e a linha de base

python -m unittest discover -s tests -p "test_*.py" -v
  1. Registre a descoberta de testes e os resultados.
  2. Leia console/common_actions.py, console/console_app.py, as entidades e os métodos dos repositórios JSON.
  3. Peça um rastreamento da busca existente de usuários e dos pontos propostos de inserção da busca de livros. Verifique os nomes dos métodos nesta fixture Python.
  4. Inspecione como os empréstimos são vinculados a book_item e patron.

Tarefa 2 - Estabeleça o contrato

ID Caso Comportamento esperado
BOOK-1 Mistura de maiúsculas e minúsculas e espaços nas extremidades Correspondência parcial normalizada conforme definido
BOOK-2 Entrada em branco Solicitação/erro explícito; sem alternativa silenciosa
BOOK-3 Título inexistente Mensagem de ausência de resultados
BOOK-4 Dois exemplares, um emprestado Disponibilidade separada para cada exemplar
BOOK-5 Empréstimo histórico devolvido Não bloqueia a disponibilidade
BOOK-6 Empréstimo vencido não devolvido Continua indisponível

Construa esses cenários nos testes com datas controladas. Escolha explicitamente a ordenação dos resultados. Não alegue que lower() e casefold() têm comportamento idêntico para todas as strings Unicode; registre a normalização escolhida para a funcionalidade.

Tarefa 3 - Planeje antes de editar

Plan the book-availability feature in the current Python library. Reuse the
existing input loop and repository contracts. Map BOOK-1..6 to tests, distinguish
Book from BookItem, and keep search read-only. Do not implement loans/reservations.

Inspecione o acesso a dados, as junções de empréstimos ativos e a conexão com o menu. Um projeto que relacione um empréstimo a um título em vez de um exemplar não consegue atender a BOOK-4.

Tarefa 4 - Implemente e teste

  1. Escreva o teste de regressão de dois exemplares antes da implementação.
  2. Peça a Agent que implemente um recorte revisado, sem limpeza sem relação com a tarefa.
  3. Conecte a nova ação à solicitação de entrada, ao mapeamento de entrada e ao despacho.
  4. Adicione testes de limite e execute toda a pequena suíte da fixture.
  5. Execute python console/main.py e exercite a busca manualmente.
  6. Compare os arquivos JSON antes/depois da busca; ela não deve persistir alterações.
  7. Temporariamente, trate toda data de vencimento passada como devolução. Confirme que BOOK-6 falha e restaure a implementação correta.

Verifique seu trabalho

  • O menu alcança a funcionalidade.
  • O comportamento da busca e a ordenação são explícitos.
  • A disponibilidade é calculada para cada exemplar físico.
  • Uma mutação negativa é detectada.
  • Empréstimos, associações e testes existentes permanecem inalterados.

Solução de problemas

Execute a partir de library para as importações. Diferencie uma resposta sem resultados de uma falha do carregador. Se todos os testes fornecidos passarem antes de a funcionalidade existir, adicione o teste de regressão ausente em vez de presumir que eles cobrem o novo comportamento.

Prática independente

Adicione um filtro por autor como uma funcionalidade especificada separadamente. Preserve a normalização existente dos títulos e declare como os filtros combinados se comportam.

Restauração

Pare o console, salve as evidências e restaure somente os arquivos nomeados da funcionalidade/testes na cópia descartável. Não altere os dados originais nem publique um repositório automaticamente.

Referências oficiais

Buscar

Busca em português do Brasil. Os caminhos e os exemplos executáveis mantêm o texto original.