Awesome CopilotAdventures

Documentación del producto verificada

Desarrollar la disponibilidad de libros en Python

Esta es una función nueva en una aplicación existente, no una solicitud para regenerar toda la biblioteca. Sigue el cambio desde la entrada del menú hasta el resultado observado.

Resumen del laboratorio

Tarjetas de consulta atraviesan un módulo de normalización y una lupa de búsqueda hacia ejemplares individuales de biblioteca.

Ilustración conceptual original (SVG)

Conecta la búsqueda normalizada con la disponibilidad por copia.

De un vistazo Tu ruta
Nivel y tiempo 200; 70 minutos (estimación de facilitación)
Acción inicial Usa fechas controladas y prueba una copia disponible y una prestada.
Materiales del aprendiz Descarga 03-python.zip
Espacio de trabajo Abre la raíz del kit extraído; ejecuta la baseline desde library relativa a esa raíz
Comprobación inicial esperada Las pruebas unittest existentes se descubren y pasan.
Ayuda de configuración Descarga, extrae, Git local y GitHub opcional

[!NOTE] Un helper que pasa sigue incompleto hasta que el menú de consola llega a él.

Conceptos · Primera tarea · Lista de evidencias · Restablecer

Objetivos de aprendizaje

  • Define la semántica de búsqueda y disponibilidad antes de implementar.
  • Usa las interfaces y la raíz de importación reales de Python.
  • Conecta una función probada con las acciones existentes de la consola.

Antes de empezar

Prepara 03-python usando la configuración común y abre únicamente la copia. Ejecuta los siguientes comandos desde su directorio library. El fixture de funciones incluido usa datos JSON sintéticos.

Conceptos y casos de uso

La búsqueda normaliza la entrada para encontrar coincidencias, no necesariamente para almacenarla. La disponibilidad pertenece a un book_item, no a todos los ejemplares de un book. Un préstamo activo es aquel sin fecha de devolución; una fecha de vencimiento pasada no lo devuelve.

Escenario del ejercicio

El bibliotecario solicita búsqueda parcial de títulos y disponibilidad por ejemplar. Los nuevos préstamos, las reservas, las cuentas y los cambios de persistencia quedan fuera del alcance.

Tarea 1 - Inspeccionar el flujo de trabajo y la línea base

python -m unittest discover -s tests -p "test_*.py" -v
  1. Registra el descubrimiento de pruebas y los resultados.
  2. Lee console/common_actions.py, console/console_app.py, las entidades y los métodos del repositorio JSON.
  3. Solicita un recorrido de la búsqueda existente de usuarios y de los puntos de inserción propuestos para buscar libros. Verifica los nombres de métodos con este fixture de Python.
  4. Inspecciona cómo se vinculan los préstamos con book_item y patron.

Tarea 2 - Establecer el contrato

ID Caso Comportamiento esperado
BOOK-1 Mayúsculas y minúsculas mezcladas y espacios en los extremos Coincidencia parcial normalizada definida
BOOK-2 Entrada vacía Solicitud de entrada o error explícito; ninguna alternativa silenciosa
BOOK-3 Título inexistente Mensaje de ausencia de resultados
BOOK-4 Dos ejemplares, uno prestado Disponibilidad separada para cada ejemplar
BOOK-5 Préstamo histórico devuelto No bloquea la disponibilidad
BOOK-6 Préstamo vencido sin devolver Sigue sin estar disponible

Construye estos escenarios en pruebas con fechas controladas. Elige explícitamente el orden de resultados. No afirmes que lower() y casefold() se comporten igual para todas las cadenas Unicode; registra la normalización que elijas para la función.

Tarea 3 - Planificar 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.

Inspecciona el acceso a datos, las uniones de préstamos activos y la conexión con el menú. Un diseño que vincule un préstamo con un título en lugar de con un ejemplar no puede satisfacer BOOK-4.

Tarea 4 - Implementar y probar

  1. Escribe la prueba de regresión de dos ejemplares antes de implementar.
  2. Pide a Agent que implemente una parte revisada y que no realice limpiezas ajenas al alcance.
  3. Conecta la nueva acción con la solicitud de entrada, el mapeo de entradas y el despacho de acciones.
  4. Añade pruebas de límites y ejecuta toda la pequeña batería del fixture.
  5. Ejecuta python console/main.py y prueba la búsqueda manualmente.
  6. Compara los archivos JSON antes y después de buscar; la búsqueda no debe persistir cambios.
  7. Trata temporalmente todas las fechas de vencimiento pasadas como devoluciones. Confirma que BOOK-6 falla y después restaura la implementación correcta.

Verifica tu trabajo

  • El menú llega a la función.
  • El comportamiento y el orden de búsqueda son explícitos.
  • La disponibilidad se calcula para cada ejemplar físico.
  • Se detecta una mutación negativa.
  • Los préstamos, las membresías y las pruebas existentes permanecen sin cambios.

Solución de problemas

Ejecuta desde library para las importaciones. Distingue una respuesta sin resultados de un fallo del cargador. Si todas las pruebas proporcionadas pasan antes de que exista la función, añade la prueba de regresión que falta en lugar de suponer que cubren el comportamiento nuevo.

Práctica independiente

Añade un filtro de autor como una función especificada por separado. Conserva la normalización existente de títulos y declara cómo se comportan los filtros combinados.

Restablecimiento

Detén la consola, guarda la evidencia y restaura únicamente los archivos de la función y las pruebas que hayas nombrado en la copia desechable. No cambies los datos originales ni publiques un repositorio automáticamente.

Referencias oficiales

Buscar

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