Práctica extendida · Bloque 2
EX-B2-S02
Incidentes en una API de reparaciones
Una API pequeña arranca, pero interpreta mal entradas, acepta estados imposibles, devuelve errores incompatibles y filtra datos de taller.
Cómo abordarla
Aplicación progresiva sobre una base ejecutable
Mantén el mismo workspace entre partes y cierra cada checkpoint con código ejecutable, pruebas y una respuesta HTTP o traza.
Abrir práctica extendida: base común y 4 partes
Base común
- Cada parte corrige una frontera y añade una regresión.
- No se permite una reescritura total: primero se demuestra la causa.
- El estado continúa en memoria y todas las personas y referencias son sintéticas.
Paquete de trabajo
- API defectuosa de reparacionesStarter, matriz de incidentes y tráfico capturado.
Entorno, evidencia y reinicio
Entorno: Workspace temporal con una aplicación FastAPI deliberadamente defectuosa y datos sintéticos.
- Cuatro checkpoints de reparación.
- Registro de hipótesis, cambios mínimos y regresiones.
Revisión: con Codex, utilizando los artefactos y criterios de cada parte; no se publica una solución oficial.
Reinicio: Restaurar el starter descargado y repetir desde la petición que reproduce el incidente.
Parte 1 · Apoyo alto
EX-B2-S02-P1 · Entradas en la fuente equivocada
Corregir path, query y header a partir del tráfico observado.
Qué debes hacer
- Clasifica dos fallos como enrutado o extracción.
- Modifica firmas y orden con el cambio mínimo.
- Añade peticiones de regresión.
Entrega esperada
- Checkpoint P1
- incident-log-p1.md
Criterios de aceptación
- La causa se reproduce antes de editar.
- OpenAPI y tráfico esperado coinciden.
Evidencia para revisión
- Reproducción de los fallos de fuente.
- OpenAPI corregido sin cambios de dominio.
Reinicio de esta parte: Conservar el checkpoint anterior fuera del starter o volver a descomprimir una copia limpia para repetir esta parte.
Pista
- Una respuesta 404 no demuestra un fallo de validación.
Parte 2 · Apoyo moderado
EX-B2-S02-P2 · La frontera de validación
Reubicar restricciones, enums y una relación de fechas.
Qué debes hacer
- Separa reglas de campo, modelo y negocio.
- Cierra el vocabulario de estados.
- Demuestra tres errores con ubicaciones diferentes.
Entrega esperada
- Checkpoint P2
- validation-evidence.md
Criterios de aceptación
- No hay estado externo en validadores.
- Las reglas cruzadas se ejecutan sobre datos ya tipados.
Evidencia para revisión
- Errores Pydantic localizables.
- Matriz de reglas antes/después.
Reinicio de esta parte: Conservar el checkpoint anterior fuera del starter o volver a descomprimir una copia limpia para repetir esta parte.
Pista
- Usa `Field` antes de escribir lógica imperativa.
Parte 3 · Apoyo ligero
EX-B2-S02-P3 · Contrato de excepciones
Unificar conflictos, ausencias y validación sin perder señal.
Qué debes hacer
- Define códigos estables y status por condición.
- Implementa manejadores proporcionados.
- Verifica que la respuesta no refleja excepciones internas.
Entrega esperada
- Checkpoint P3
- error-contract.md
Criterios de aceptación
- Cada condición tiene una única forma pública.
- La validación conserva localización.
Evidencia para revisión
- Errores públicos equivalentes por condición.
- Ausencia de detalles internos en respuestas.
Reinicio de esta parte: Conservar el checkpoint anterior fuera del starter o volver a descomprimir una copia limpia para repetir esta parte.
Pista
- El texto humano puede cambiar; el código de error no debería.
Parte 4 · Apoyo autónomo
EX-B2-S02-P4 · Filtrado y regresión final
Cerrar la fuga de salida y probar el contrato completo.
Qué debes hacer
- Predice qué campos pertenecen a cada respuesta pública y qué fuga debe detectar la regresión.
- Define y aplica contratos de salida por operación sin modificar las rutas existentes.
- Ejecuta la matriz de incidentes completa desde un estado limpio y conserva el caso negativo de exposición.
- Compara OpenAPI y respuestas antes/después y explica dónde termina esta reparación.
Entrega esperada
- Checkpoint P4
- openapi-final.json
- regression-report.md
Criterios de aceptación
- El campo interno no aparece en respuestas ni schemas públicos.
- Todas las regresiones anteriores siguen pasando.
Evidencia para revisión
- Regresión que falla antes y pasa después.
- OpenAPI final sin campos internos.
Reinicio de esta parte: Conservar el checkpoint anterior fuera del starter o volver a descomprimir una copia limpia para repetir esta parte.