Elegir espacio

Dos espacios

¿Qué quieres consultar?

Elige el espacio al que quieres entrar.

Recorrido · FastAPIMP-B2-R

Miniproyecto recomendado · Bloque 2

MP-B2-R · Media-alta

Validador de expedientes internos

Construye una API pequeña que admita expedientes sintéticos, los valide y publique una representación segura antes de incorporar persistencia.

Este encargo no publica solución. Trabaja en un workspace temporal, conserva evidencia de cada hito y pide revisión contra los criterios.

Contexto

Un equipo recibe expedientes JSON de varias áreas. Algunos contienen campos ausentes, null explícito, estados desconocidos o periodos imposibles.

Necesita crear, consultar y filtrar expedientes en memoria, con un contrato público estable y errores que permitan corregir cada petición.

Entorno: Python 3.10+, uv, FastAPI y Pydantic 2 en un workspace temporal; colección reiniciable en memoria.

Reinicio: Detener el proceso elimina el estado; para reinicio completo, borrar el workspace y volver a descargar starter y dataset.

Paquete de trabajo

Requisitos funcionales

  1. `POST /expedientes` crea un recurso en memoria a partir de JSON.
  2. `GET /expedientes/{expediente_id}` devuelve su representación pública o un error estable.
  3. `GET /expedientes` admite filtros opcionales de estado y área, además de límite acotado.
  4. Los modelos incluyen al menos un enum, un objeto anidado, restricciones de campo y una regla cruzada.
  5. Create, update opcional y public son contratos separados.
  6. La creación devuelve `201`, `Location` y el modelo público.
  7. Conflicto, ausencia y validación tienen formas públicas consistentes.
  8. OpenAPI describe modelos, operaciones y respuestas relevantes.

Hitos

Hito 1 · Ejecutar y observar

  1. Arranca el starter, conserva el OpenAPI inicial y verifica `/health`.
  2. Clasifica cada requisito por fuente HTTP y resultado observable.

Hito 2 · Modelar y validar

  1. Diseña modelos anidados, enums y reglas sin consultar estado externo.
  2. Ejecuta el dataset y registra ubicaciones de error.

Hito 3 · Operar en memoria

  1. Implementa creación, consulta y listado filtrado.
  2. Separa duplicados y ausencias de los fallos Pydantic.

Hito 4 · Cerrar el contrato

  1. Aplica modelos públicos, status, Location y manejadores.
  2. Revisa OpenAPI y ejecuta la matriz completa desde estado limpio.

Entrega y evidencia

  • Código ejecutable y `README` de arranque.
  • OpenAPI guardado como evidencia.
  • Matriz de al menos 10 peticiones: casos felices, límites y errores.
  • Nota de diseño con tres decisiones y dos límites reconocidos.
  • Repositorio de trabajo temporal con comandos de arranque documentados.
  • OpenAPI final y matriz de peticiones válidas e inválidas.
  • Informe breve de decisiones sobre fuentes, modelos, estados y errores.

Revisión: con Codex contra esta página; no existe una respuesta oficial oculta.

Criterios de aceptación

  • Los 16 documentos pueden clasificarse por resultado sin modificar el dataset.
  • Ningún campo interno aparece en las respuestas públicas.
  • Ausente y null tienen comportamiento documentado.
  • Los errores de validación conservan ubicación y no reflejan datos sensibles.
  • Reiniciar el proceso devuelve el sistema a un estado conocido.
  • No aparecen base de datos, login, Docker, routers o servicios prematuros.

Pistas graduadas

Pista 1 · Matriz de propiedad
  • Marca cada campo como asignado por cliente, servidor o estado interno.
  • Deriva create y public de esa matriz, no de un único modelo universal.
Pista 2 · Dataset como evidencia
  • No corrijas los JSON anómalos: deben demostrar cómo responde tu frontera.
  • Compara la localización del error con el campo que esperabas rechazar.
Extensión opcional
  • Solo después de aceptar el núcleo, permite adjuntar un documento mediante multipart.
  • Mantén la metadata como una parte de formulario y valídala explícitamente.

Fuera de alcance

  • Base de datos, archivos persistentes o migraciones.
  • Usuarios, autenticación, autorización o secretos.
  • Docker, despliegue, workers o colas.
  • APIRouter, capa de servicios o patrón repositorio.
  • Pruebas automatizadas exhaustivas; la matriz manual es la evidencia de este bloque.