Awesome CopilotAdventures

Documentação do produto verificada

Desenvolva a disponibilidade de livros em C#

Adicionar uma funcionalidade envolve entrada, recuperação de dados, interpretação do domínio e saída. Uma função auxiliar que nunca é conectada ao menu não é uma funcionalidade concluída.

Resumo do laboratório

Uma lupa de busca e um painel de resultados distinguem exemplares individuais em uma estante de biblioteca.

Ilustração conceitual original (SVG)

Mostre a disponibilidade de cada cópia física, não do título inteiro.

Em resumo Sua rota
Nível e tempo 200; 70 minutos (estimativa de facilitação)
Ação inicial Especifique o caso de duas cópias antes de conectar a nova ação de console.
Materiais do aluno Baixe 03-csharp.zip
Workspace Abra a raiz do kit extraído; execute a baseline de . relativa a essa raiz
Verificação inicial esperada Os testes fornecidos passam. Os novos requisitos de funcionalidade ainda precisam de testes próprios.
Ajuda de configuração Baixe, extraia, Git local e GitHub opcional

[!NOTE] Um empréstimo vencido e não devolvido ainda torna aquela cópia indisponível.

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

Objetivos de aprendizagem

  • Transforme uma solicitação de usuário em casos explícitos de aceitação.
  • Modele a disponibilidade por exemplar físico, não por título.
  • Conecte a funcionalidade pelo fluxo de console existente.
  • Preserve o comportamento de devolução e associação sem relação com a tarefa.

Antes de começar

Prepare 03-csharp usando a configuração comum. Use a fixture de funcionalidade da biblioteca incluída. O laboratório de configuração de C# descreve SDK, caches e diretórios de execução.

Conceitos e casos de uso

Book descreve um título; BookItem identifica um exemplar físico; Loan registra o histórico de empréstimos de um exemplar. Um empréstimo devolvido não torna um exemplar indisponível. Um empréstimo vencido, mas não devolvido, permanece ativo.

Cenário do exercício

Uma pessoa bibliotecária precisa de busca por título sem diferenciar maiúsculas e minúsculas e de uma visualização da disponibilidade de cada exemplar físico. Empréstimos, reservas, migração de banco de dados e autenticação não fazem parte desta funcionalidade.

Tarefa 1 - Investigue e execute a linha de base

  1. Inspecione CommonActions.cs, ConsoleApp.cs, as entidades do núcleo e JsonData.

  2. Execute a partir da raiz do projeto copiado:

    dotnet test tests/UnitTests/UnitTests.csproj -m:1 -p:UseSharedCompilation=false
    
  3. Em Ask, rastreie o caminho existente de busca de usuários no menu. Identifique os pontos equivalentes de inserção para busca de livros sem duplicar o ciclo de entrada.

  4. Registre a semântica de empréstimo ativo a partir de ReturnDate, não de uma suposição baseada no vencimento.

Tarefa 2 - Defina a aceitação antes do código

ID Caso Resultado observável esperado
BOOK-1 Título parcial, caixa diferente, espaços nas extremidades Títulos correspondentes após a normalização definida
BOOK-2 Busca em branco Solicitação/erro claro, sem despejo acidental do catálogo inteiro
BOOK-3 Título desconhecido Mensagem explícita de ausência de resultados
BOOK-4 Dois exemplares; um empréstimo ativo Um exemplar indisponível e outro disponível
BOOK-5 Empréstimo histórico devolvido O exemplar permanece disponível
BOOK-6 Empréstimo ativo vencido Continua indisponível; data de vencimento exibida como dado histórico

Use registros sintéticos recém-criados nos testes em vez de depender de datas desatualizadas em arquivos JSON. Especifique uma ordenação determinística de títulos/exemplares.

Tarefa 3 - Planeje o caminho completo

Plan title search and per-copy availability in the existing C# library.
Map BOOK-1..6 to tests and source files. Reuse existing input handling and JSON
loading. Add a distinct CommonActions flag without renumbering existing flags.
Keep return, extension and membership behavior unchanged. Do not edit yet.

Revise os limites de repositório/serviço. Se usar JsonData diretamente no console para seguir o projeto inicial, explique o acoplamento; não o chame de projeto ideal para produção.

Tarefa 4 - Implemente começando por um teste de regressão que falha

  1. Adicione um teste para o caso de dois exemplares e confirme que ele falha pela ausência da funcionalidade.
  2. Peça a Agent que implemente somente o recorte revisado da funcionalidade.
  3. Inspecione a correspondência, o tratamento de espaços em branco, os empréstimos ativos e a ordenação dos resultados.
  4. Conecte a exibição do menu, o mapeamento de entrada e o despacho. Preserve os valores existentes das ações.
  5. Adicione os casos de limite restantes e execute os testes existentes e novos juntos.
  6. Inicie a aplicação a partir de src/Library.Console e exercite o menu manualmente.
  7. Registre a saída real e confirme que a funcionalidade não faz gravações.

Verifique seu trabalho

  • Todos os casos BOOK têm evidências executáveis ou manuais claramente identificadas.
  • Dois exemplares físicos podem ter disponibilidades diferentes.
  • Empréstimos devolvidos e empréstimos ativos vencidos são diferenciados.
  • O menu alcança a implementação.
  • Os testes existentes continuam passando e a busca não modifica os dados JSON.

Solução de problemas

Se um empréstimo ativo ocultar todos os exemplares, verifique as junções por BookItemId. Se um método passar nos testes unitários, mas o menu nunca o chamar, inspecione o despacho das ações. Se uma data de vencimento for antiga, não altere as datas da fixture apenas para esconder um bug.

Prática independente

Projete reservas como uma funcionalidade separada: estados, solicitações conflitantes, expiração e persistência. Não a adicione de forma oportunista a esta alteração de busca.

Restauração

Preserve a tabela de aceitação e a saída e restaure somente os arquivos da funcionalidade/testes na cópia descartável. Uma branch remota ou um repositório público é opcional, não obrigatório.

Referências oficiais

Buscar

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