Awesome CopilotAdventures

Documentación del producto verificada

Desarrollar la disponibilidad de libros en C#

Añadir una función abarca la entrada, la recuperación de datos, la interpretación del dominio y la salida. Un auxiliar que nunca se conecta al menú no es una función completada.

Resumen del laboratorio

Una lupa de búsqueda y un panel de resultados distinguen ejemplares individuales en una estantería de biblioteca.

Ilustración conceptual original (SVG)

Muestra la disponibilidad de cada copia física, no del título completo.

De un vistazo Tu ruta
Nivel y tiempo 200; 70 minutos (estimación de facilitación)
Acción inicial Especifica el caso de dos copias antes de conectar la nueva acción de consola.
Materiales del aprendiz Descarga 03-csharp.zip
Espacio de trabajo Abre la raíz del kit extraído; ejecuta la baseline desde . relativa a esa raíz
Comprobación inicial esperada Las pruebas suministradas pasan. Los nuevos requisitos de funcionalidad siguen necesitando sus propias pruebas.
Ayuda de configuración Descarga, extrae, Git local y GitHub opcional

[!NOTE] Un préstamo vencido y no devuelto sigue haciendo que esa copia no esté disponible.

Conceptos · Primera tarea · Lista de evidencias · Restablecer

Objetivos de aprendizaje

  • Convierte una solicitud de usuario en casos de aceptación explícitos.
  • Modela la disponibilidad por ejemplar físico, no por título.
  • Conecta la función a través del flujo existente de la consola.
  • Preserva el comportamiento de devoluciones y membresías ajeno a la función.

Antes de empezar

Prepara 03-csharp usando la configuración común. Usa el fixture de funciones de la biblioteca incluido. El laboratorio de configuración de C# describe el SDK, las cachés y los directorios de ejecución.

Conceptos y casos de uso

Book describe un título; BookItem identifica un ejemplar físico; Loan registra el historial de préstamos de un ejemplar. Un préstamo devuelto no hace que un ejemplar deje de estar disponible. Un préstamo vencido pero no devuelto sigue activo.

Escenario del ejercicio

Un bibliotecario necesita una búsqueda de títulos sin distinguir mayúsculas de minúsculas y una vista de la disponibilidad de cada ejemplar físico. Los préstamos, las reservas, la migración de bases de datos y la autenticación no forman parte de esta función.

Tarea 1 - Investigar y ejecutar la línea base

  1. Inspecciona CommonActions.cs, ConsoleApp.cs, las entidades del núcleo y JsonData.

  2. Ejecuta desde la raíz del proyecto copiado:

    dotnet test tests/UnitTests/UnitTests.csproj -m:1 -p:UseSharedCompilation=false
    
  3. En Ask, rastrea la ruta existente del menú de búsqueda de usuarios. Identifica los puntos de inserción equivalentes para la búsqueda de libros sin duplicar el bucle de entrada.

  4. Registra la semántica de préstamo activo a partir de ReturnDate, no de una suposición basada en la fecha de vencimiento.

Tarea 2 - Definir la aceptación antes del código

ID Caso Observable esperado
BOOK-1 Título parcial, distinta combinación de mayúsculas y espacios en los extremos Títulos coincidentes tras la normalización definida
BOOK-2 Búsqueda vacía Solicitud de entrada o error claro, sin volcar accidentalmente todo el catálogo
BOOK-3 Título desconocido Mensaje explícito de ausencia de resultados
BOOK-4 Dos ejemplares; uno con préstamo activo Un ejemplar no disponible y otro disponible
BOOK-5 Préstamo histórico devuelto El ejemplar sigue disponible
BOOK-6 Préstamo activo vencido Sigue sin estar disponible; la fecha de vencimiento se muestra como dato histórico

Usa registros sintéticos recién construidos en las pruebas en lugar de depender de fechas obsoletas de los archivos JSON. Especifica un orden determinista de títulos y ejemplares.

Tarea 3 - Planificar la ruta completa

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.

Revisa los límites entre repositorios y servicios. Si usas JsonData directamente en la consola para ajustarte al proyecto inicial, explica el acoplamiento; no lo describas como un diseño ideal de producción.

Tarea 4 - Implementar empezando por una prueba de regresión que falle

  1. Añade una prueba para el caso de dos ejemplares y confirma que falla por la ausencia de la función.
  2. Pide a Agent que implemente únicamente la parte revisada de la función.
  3. Inspecciona las coincidencias, la gestión de espacios, los préstamos activos y el orden de resultados.
  4. Conecta la presentación del menú, el mapeo de entradas y el despacho de acciones. Conserva los valores de acciones existentes.
  5. Añade los casos límite restantes y ejecuta juntas las pruebas existentes y nuevas.
  6. Inicia la aplicación desde src/Library.Console y prueba el menú manualmente.
  7. Registra la salida real y confirma que la función no realiza escrituras.

Verifica tu trabajo

  • Todos los casos BOOK tienen evidencia ejecutable o manual claramente etiquetada.
  • Dos ejemplares físicos pueden tener distinta disponibilidad.
  • Se distinguen los préstamos devueltos de los vencidos que siguen activos.
  • El menú llega a la implementación.
  • Las pruebas existentes siguen pasando y la búsqueda no modifica los datos JSON.

Solución de problemas

Si un préstamo activo oculta todos los ejemplares, comprueba las uniones por BookItemId. Si un método supera las pruebas unitarias, pero el menú nunca lo llama, inspecciona el despacho de acciones. Si una fecha de vencimiento es antigua, no cambies las fechas del fixture solo para ocultar un error.

Práctica independiente

Diseña las reservas como una función separada: estados, solicitudes en conflicto, caducidad y persistencia. No la añadas de forma oportunista a este cambio de búsqueda.

Restablecimiento

Conserva la tabla de aceptación y la salida; después restaura únicamente los archivos de la función y sus pruebas en la copia desechable. Una rama remota o un repositorio público son opcionales, no obligatorios.

Referencias oficiales

Buscar

Búsqueda en español. Las rutas y los ejemplos ejecutables conservan el texto original.