Elegir espacio

Dos espacios

¿Qué quieres consultar?

Elige el espacio al que quieres entrar.

Biblioteca FastAPIComposición

Checkpoint independiente · Bloque 3 · Unidad 3.1

EX-B3-S01-01

Separar routers y schemas

Recibes una API distinta a la del ejemplo: registra solicitudes de cumplimiento, permite consultarlas y tomar una decisión. Funciona y está probada, pero vive en un único módulo.

  • Escribir y ejecutar código
  • Checkpoint acumulativo
  • Media-alta
  • Apoyo autónomo
  • Starter ejecutable

Cómo abordarla

Separa responsabilidades conservando el contrato

Inténtalo desde el starter nuevo y sin copiar el ensayo anterior. La estructura y el orden del cambio son tuyos; los tests deben demostrar el contrato.

Evidencia objetivo: En un dominio distinto y sin una secuencia de archivos prescrita, modularizas la aplicación y justificas su grafo de imports.

Abrir práctica extendida: base común y 1 parte

Base común

  • El starter arranca y sus tests deben estar verdes antes de editar.
  • El contrato público y los datos sintéticos son distintos al ejercicio guiado.
  • Cada parte declara qué mecanismo puede añadirse; persistencia, autenticación, servicios y auto-registro siguen fuera.
  • Los criterios dicen qué conservar, no qué carpetas debes crear.

Paquete de trabajo

Entorno, evidencia y reinicio

Entorno: Python 3.10+ en un workspace temporal; FastAPI, Pydantic 2, pytest y httpx2 instalados por el paquete con uv.

  • Commit o diff del refactor sin cambios funcionales.
  • Salida completa de pytest antes y después.
  • Fingerprint OpenAPI y diagrama de imports final.

Revisión: con Codex, utilizando los artefactos y criterios de cada parte; no se publica una solución oficial.

Reinicio: Descomprimir de nuevo el starter en otro directorio temporal; cada intento empieza con el monolito y sus tests verdes.

Parte 1 · Apoyo autónomo

EX-B3-S01-01 · Separar routers y schemas

Modularizar un contexto nuevo sin copiar el árbol del ejemplo y defender cada frontera mediante evidencia de regresión.

Qué debes hacer
  1. Sin abrir las pistas de EX-B3-01, predice las rutas finales y dibuja el grafo de imports que quieres conseguir.
  2. Ejecuta el baseline y guarda el fingerprint de operaciones y operationId.
  3. Separa composición, frontera HTTP y schemas con la estructura mínima que puedas justificar.
  4. Repite la regresión, inspecciona OpenAPI y documenta una separación que decidiste no hacer.
Entrega esperada
  • Repositorio refactorizado sin funcionalidad nueva.
  • before-after.md con comandos, resultados y diferencias observadas.
  • Diagrama breve de imports y nota de decisión arquitectónica.
Criterios de aceptación
  • Los seis tests suministrados pasan antes y después.
  • Los cuatro pares método/path y sus operationId no cambian.
  • No hay imports desde routers o schemas hacia main.py.
  • La aplicación registra routers de forma explícita y un módulo omitido desaparece de OpenAPI de forma diagnosticable.
  • La entrega explica por qué la estructura elegida es suficiente ahora y dónde se detuvo el refactor.
Evidencia para revisión
  • Predicción y fingerprint previos al cambio.
  • Diff, árbol y grafo de imports finales.
  • Misma salida de pytest y mismo contrato público al terminar.

Reinicio de esta parte: Volver a descomprimir el starter; no reutilizar módulos del ejercicio guiado.