6.1 · Casos concretos

Nivel 6 · En la práctica

6.1Casos concretos

Objetivo: ver cómo las competencias de los niveles 0 a 5 se encadenan en casos reales.
Tiempo estimado: 14 min · Si solo tienes 5 min: lee «Lo esencial en 30s» + el esquema.

Lo esencial en 30 segundos

  • Fijar : el seguimiento de gastos encadena funciones → dataclass + JSON → venv + pytest → FastAPI → Docker + CI hasta el despliegue.
  • Automatizar : el informe CSV semanal injerta pandas, gráfico Matplotlib, cron con logs y envío por e-mail sobre estos fundamentos.
  • Entregar : venv reconstruido, requirements fijado, pruebas en verde y logs verificados el primer mes.

Hilo Nabil — un año después : dos proyectos que funcionan en Argel

Nabil, data analyst junior en Argel, repasa sus dos proyectos destacados del año : el seguimiento de gastos nacido cuaderno consola convertido en API desplegada, y luego el informe semanal de ventas CSV totalmente automatizado. Los dos casos siguientes retoman su encadenamiento : dividir, tipar, probar, aislar, entregar.

Cada caso sigue el desarrollo Contexto → Etapas → Resultado : repítelo en tus proyectos.

Ensamblar las piezas

Los niveles anteriores pusieron las piezas (bases, estructuras, POO, errores, módulos, venv, pruebas, web, data, despliegue) ; aquí las ensamblamos en condiciones reales : partimos de una necesidad concreta, dividimos, tipamos, probamos, aislamos y entregamos. Dos casos desarrollados de la A a la Z.

Caso 1 — Seguimiento de gastos : del cuaderno a la API desplegada

Contexto: El proyecto hilo : un seguimiento de gastos nacido cuaderno consola (N1), vuelto persistente (N2), probado (N3), expuesto en API (N4) y desplegado (N5).

Déroulé :

  1. N1 : funciones añadir/listar/total, menú main(), 80 líneas divididas.
  2. N2 : dataclass Gasto, JSON vía pathlib, try/except en la entrada.
  3. N3 : módulos + venv + requirements, hints, pruebas pytest del total.
  4. N4 : FastAPI (GET/POST) para exponer los gastos.
  5. N5 : Dockerfile slim, CI ruff + pytest, despliegue en cada push.

Resultado: Una URL que lista tus gastos, probada en CI, redesplegada en cada push.

Caso 2 — Informe semanal automatizado de un CSV

Contexto: Cada lunes, una exportación CSV de ventas debe convertirse en un resumen cifrado enviado por e-mail.

Déroulé :

  1. pandas : leer, inspeccionar (isna), groupby por ciudad, top 5.
  2. Matplotlib : una barra con título-mensaje, exportación PNG.
  3. Script planificado (cron) con logging + try específicos, probado en copias.
  4. E-mail del resumen + PNG adjunto, logs verificados el primer mes.

Resultado: Cero lunes manual : el informe llega solo, con sus logs.

Error frecuente de interpretación: « copiar los casos tal cual ». No. Los casos muestran un orden de ensamblaje (dividir, tipar, probar, aislar, entregar), no una receta para copiar : retoma el orden, adapta el dato, el framework y el alojamiento a tu proyecto.
Versión en texto del esquema (SEO / lectores de pantalla / traducción): Cadena completa : 1) Dividir (funciones cortas, main, módulos). 2) Persistir (dataclass, pathlib, JSON, try específicos). 3) Aislar y probar (venv, requirements fijado, hints, pytest). 4) Exponer (FastAPI GET/POST). 5) Automatizar (pandas groupby, Matplotlib, cron, logging). 6) Entregar (Dockerfile slim, CI ruff + pytest, despliegue, logs verificados). Lección : el encadenamiento dividir → tipar → probar → aislar → entregar distingue una aplicación que funciona de un script que ya no nos atrevemos a tocar.

Guion listo para decir — enmarcar un proyecto Python antes de programar (30 s)

« Nuestra necesidad : [seguimiento de gastos expuesto en API]. Nuestros cimientos : [funciones divididas + hints + pytest + venv]. Persistimos en JSON, exponemos en FastAPI, entregamos vía Docker + CI. »

Modelo copiar-pegar — API de seguimiento mínima (FastAPI)

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()
depenses: list[dict] = []


class Depense(BaseModel):
    motif: str
    montant: float


@app.get("/depenses")
def lister() -> list[dict]:
    return depenses


@app.post("/depenses", status_code=201)
def ajouter(depense: Depense) -> dict:
    item = depense.model_dump()
    depenses.append(item)
    return item

TPE / presupuesto pequeño

Un solo caso repetido sobre una necesidad simple : seguimiento de un recurso, informe CSV mínimo, despliegue directo.

Pyme Argel

Adaptar el despliegue a las realidades locales : puestos compartidos, picos del lunes, copias de seguridad y responsable designado.

Remoto / híbrido

Duplicar la trazabilidad a distancia : requirements fijado documentado, pipeline CI y accesos escritos.

Intercultural

Verificar los usos locales antes de trasladar un caso : títulos, ciudades y reglas de agrupación deben hablar al equipo.

Prudencia: Recordatorio genérico : los secretos (claves e-mail, tokens cloud) y los datos de usuarios comprometen tu responsabilidad — colócalos en variables de entorno nunca versionadas, regenera toda clave expuesta y haz que lo valide el responsable designado ; esta guía no da asesoramiento jurídico.

Desafío 48h — aplica mañana

Toma 1 proyecto real y escribe su cadena en 5 tiempos (dividir → tipar → probar → aislar → entregar). Identifica el próximo paso.

Lista de salida de la sección
  • Sé ensamblar las piezas en una aplicación completa, del cuaderno a la API desplegada.
  • Tengo un modelo FastAPI reutilizable para mi proyecto.
  • Hice el desafío 48h o planifiqué su fecha.
Autoevaluación 1-5 : ¿encadenamiento de las etapas ?¿automatización y entrega cubiertas ?
Comprueba tu comprensión

Nabil hace crecer su seguimiento de gastos hasta la API desplegada. ¿Qué encadenamiento respeta la guía ?