Awesome CopilotAdventures

Documentación del producto verificada

Analizar y documentar la biblioteca en Python

Explica la implementación que tienes, no la aplicación que un modelo espera. Las variantes de Python y C# tienen conceptos similares, pero no se garantiza que tengan API, sensibilidad a mayúsculas o gestión de errores idénticas.

Resumen del laboratorio

Un marco de módulos de código fuente se conecta mediante rutas trazadas a dos pilas de registros almacenados.

Ilustración conceptual original (SVG)

Explica la raíz de importación real y el flujo de datos.

De un vistazo Tu ruta
Nivel y tiempo 200; 45 minutos (estimación de facilitación)
Acción inicial Traza return_loan y distingue los errores registrados de las excepciones propagadas.
Materiales del aprendiz Descarga 02-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] Las fixtures de Python y C# comparten un dominio, no necesariamente un comportamiento idéntico.

Conceptos · Primera tarea · Lista de evidencias · Restablecer

Objetivos de aprendizaje

  • Identifica la raíz correcta de importación y ejecución de Python.
  • Rastrea las acciones de la consola a través de los servicios hasta el almacenamiento JSON.
  • Documenta el comportamiento probado y las limitaciones sin inventar garantías.

Antes de empezar

Completa la configuración de Python y prepara 02-python. Usa el fixture de biblioteca en Python incluido. Ejecuta los comandos siguientes desde su directorio library.

Conceptos y casos de uso

Carpeta Función
console Construir dependencias, leer entradas y presentar resultados
application_core Entidades, interfaces y decisiones de servicios
infrastructure Carga de JSON, resolución de referencias y persistencia
tests Escenarios de servicios con unittest y mocks

Escenario del ejercicio

Un compañero necesita instrucciones fiables para empezar a usar la biblioteca. Documenta la búsqueda de usuarios, la renovación de membresías, la devolución o ampliación de préstamos y las limitaciones que presenta realmente el código fuente.

Tarea 1 - Ejecutar e inspeccionar la línea base

python -m unittest discover -s tests -p "test_*.py" -v
python console/main.py
  1. Registra los nombres de las pruebas y los códigos de salida.
  2. Lee console/main.py y rastrea cómo se construyen JsonData, los repositorios y los servicios.
  3. Inspecciona las rutas del cargador relativas a su módulo. No presupongas que la convención de configuración de C# se aplica a Python.
  4. Usa solo los registros sintéticos proporcionados. Los flujos de devolución o renovación pueden persistir cambios.

Tarea 2 - Investigar un flujo de trabajo

Trace return_loan from the console into LoanService and JsonLoanRepository.
Identify populated entities and when data is saved. Cite source paths.
What happens when an ID is missing or a file cannot be loaded? Do not edit.

Verifica con el código. Un error mostrado por JsonData no implica que se haya propagado una excepción ni que un objeto cargado parcialmente sea utilizable.

Tarea 3 - Modelar los datos

---
config:
  theme: base
  look: classic
  themeVariables:
    darkMode: false
    background: "#ffffff"
    primaryColor: "#f5f5f5"
    primaryTextColor: "#111111"
    primaryBorderColor: "#555555"
    secondaryColor: "#e0e0e0"
    secondaryTextColor: "#111111"
    secondaryBorderColor: "#666666"
    tertiaryColor: "#bdbdbd"
    tertiaryTextColor: "#111111"
    tertiaryBorderColor: "#444444"
    lineColor: "#444444"
    textColor: "#111111"
    mainBkg: "#f5f5f5"
    nodeBorder: "#555555"
    clusterBkg: "#ffffff"
    clusterBorder: "#999999"
    edgeLabelBackground: "#ffffff"
    actorBkg: "#e0e0e0"
    actorBorder: "#555555"
    actorTextColor: "#111111"
    actorLineColor: "#777777"
    signalColor: "#333333"
    signalTextColor: "#111111"
    labelBoxBkgColor: "#f5f5f5"
    labelBoxBorderColor: "#777777"
    labelTextColor: "#111111"
    loopTextColor: "#111111"
    activationBkgColor: "#bdbdbd"
    activationBorderColor: "#555555"
    noteBkgColor: "#f5f5f5"
    noteTextColor: "#111111"
    noteBorderColor: "#777777"
    attributeBackgroundColorOdd: "#f5f5f5"
    attributeBackgroundColorEven: "#e0e0e0"
---
erDiagram
    accTitle: Títulos de biblioteca, ejemplares físicos y préstamos
    accDescr: Un libro puede tener varios ejemplares físicos; cada préstamo asocia un ejemplar físico con un usuario de la biblioteca.
    BOOK ||--o{ BOOK_ITEM : tiene
    BOOK_ITEM ||--o{ LOAN : aparece_en
    PATRON ||--o{ LOAN : toma_prestado
    BOOK {
        int id
        string title
    }
    BOOK_ITEM {
        int id
        int book_id
    }
    LOAN {
        int id
        int book_item_id
        int patron_id
    }
    PATRON {
        int id
        string name
    }

Leyenda. Los recuadros son tipos conceptuales de registros; las patas de cuervo indican varios registros relacionados. Los nombres de campos corresponden a las entidades de Python.

Explicación. La disponibilidad pertenece a un ejemplar físico y a su préstamo activo, no a todos los ejemplares de un título. Este modelo no crea restricciones de clave externa en JSON.

Tarea 4 - Producir documentación con una edición acotada

  1. Pide a Plan secciones del README con referencias al código fuente y comandos exactos.
  2. Revisa la configuración, la raíz de importación, los flujos implementados, los efectos secundarios sobre JSON, el alcance de las pruebas y el restablecimiento.
  3. Pide a Agent que edite únicamente el README.
  4. Ejecuta sus comandos desde el directorio documentado. Registra los errores en lugar de modificar silenciosamente la aplicación durante la documentación.
  5. Compara el README con las pruebas reales; evita afirmaciones como «totalmente cubierto».

Verifica tu trabajo

  • La raíz de importación y el comando de consola son reproducibles.
  • Las relaciones de datos son precisas.
  • El comportamiento actual y las mejoras propuestas están separados.
  • Las limitaciones del cargador y la persistencia son explícitas.
  • Solo aparecen en el diff los cambios previstos de documentación o exploración de datos.

Solución de problemas

Si no puede importarse application_core, comprueba que el directorio de trabajo sea library. Si no se encuentran pruebas, inspecciona el ejecutor y el patrón de archivos. Si un flujo modifica JSON, restaura únicamente el archivo del fixture copiado después de guardar la evidencia.

Práctica independiente

Compara un flujo de trabajo con la variante de C#. Indica una diferencia real de implementación en lugar de afirmar que ambas pilas son semánticamente idénticas.

Restablecimiento

Cierra la consola, conserva el README y la evidencia y después restaura solo los archivos modificados en la copia desechable. No modifiques el contenido formativo fuente.

Referencias oficiales

Buscar

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