6.1 · Cas concrets

Niveau 6 · Dans la pratique

6.1Cas concrets

Objectif : voir comment les compétences des niveaux 0 à 5 s'enchaînent sur des cas réels.
Temps estimé : 14 min · Si vous n'avez que 5 min : lisez « L'essentiel en 30s » + le schéma.

L'essentiel en 30 secondes

  • Ancrer : le suivi de dépenses enchaîne fonctions → dataclass + JSON → venv + pytest → FastAPI → Docker + CI jusqu'au déploiement.
  • Automatiser : le rapport CSV hebdo greffe pandas, graphique Matplotlib, cron avec logs et envoi e-mail sur ces fondamentaux.
  • Livrer : venv reconstruit, requirements figé, tests au vert et logs vérifiés le premier mois.

Fil Nabil — un an après : deux chantiers qui tournent à Alger

Nabil, data analyst junior à Alger, relit ses deux chantiers marquants de l'année : le suivi de dépenses né carnet console devenu API déployée, puis le rapport hebdo des ventes CSV entièrement automatisé. Les deux cas ci-dessous reprennent son enchaînement : découper, typer, tester, isoler, livrer.

Chaque cas suit le déroulé Contexte → Étapes → Résultat : rejouez-le sur vos projets.

Mettre les briques bout à bout

Les niveaux précédents ont posé les briques (bases, structures, POO, erreurs, modules, venv, tests, web, data, déploiement) ; ici on les assemble en conditions réelles : on part d'un besoin concret, on découpe, on type, on teste, on isole et on livre. Deux cas déroulés de A à Z.

Cas 1 — Suivi de dépenses : du carnet à l'API déployée

Contexte : Le projet fil rouge : un suivi de dépenses né carnet console (N1), devenu persistant (N2), testé (N3), exposé en API (N4) et déployé (N5).

Déroulé :

  1. N1 : fonctions ajouter/lister/total, menu main(), 80 lignes découpées.
  2. N2 : dataclass Dépense, JSON via pathlib, try/except sur la saisie.
  3. N3 : modules + venv + requirements, hints, tests pytest du total.
  4. N4 : FastAPI (GET/POST) pour exposer les dépenses.
  5. N5 : Dockerfile slim, CI ruff + pytest, déploiement à chaque push.

Résultat : Une URL qui liste vos dépenses, testée en CI, redéployée à chaque push.

Cas 2 — Rapport hebdo automatisé d'un CSV

Contexte : Chaque lundi, un export CSV des ventes doit devenir un résumé chiffré envoyé par e-mail.

Déroulé :

  1. pandas : lire, inspecter (isna), groupby par ville, top 5.
  2. Matplotlib : une barre titrée-message, export PNG.
  3. Script planifié (cron) avec logging + try ciblés, testé sur copies.
  4. E-mail du résumé + PNG en pièce jointe, logs vérifiés le premier mois.

Résultat : Zéro lundi manuel : le rapport arrive seul, avec ses logs.

Erreur d'interprétation fréquente : « recopier les cas à l'identique ». Non. Les cas montrent un ordre d'assemblage (découper, typer, tester, isoler, livrer), pas une recette à copier : reprenez l'ordre, adaptez la donnée, le framework et l'hébergement à votre projet.
Version texte du schéma (SEO / lecteurs d'écran / traduction) : Chaîne complète : 1) Découper (fonctions courtes, main, modules). 2) Persister (dataclass, pathlib, JSON, try ciblés). 3) Isoler et prouver (venv, requirements figé, hints, pytest). 4) Exposer (FastAPI GET/POST). 5) Automatiser (pandas groupby, Matplotlib, cron, logging). 6) Livrer (Dockerfile slim, CI ruff + pytest, déploiement, logs vérifiés). Leçon : l'enchaînement découper → typer → tester → isoler → livrer distingue une application qui tourne d'un script qu'on n'ose plus toucher.

Script prêt à dire — cadrer un projet Python avant de coder (30 s)

« Notre besoin : [suivi de dépenses exposé en API]. Nos fondations : [fonctions découpées + hints + pytest + venv]. On persiste en JSON, on expose en FastAPI, on livre via Docker + CI. »

Modèle copier-coller — API de suivi minimale (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 / petit budget

Un seul cas rejoué sur un besoin simple : suivi à une ressource, rapport CSV minimal, déploiement direct.

PME Alger

Adapter le déploiement aux réalités locales : postes partagés, pics du lundi, sauvegardes et référent nommé.

Remote / hybride

Doubler la traçabilité à distance : requirements figé documenté, pipeline CI et accès écrits.

Interculturel

Vérifier les usages locaux avant de transposer un cas : intitulés, villes et règles de regroupement doivent parler à l'équipe.

Prudence : Rappel générique : les secrets (clés e-mail, jetons cloud) et les données utilisateurs engagent votre responsabilité — placez-les en variables d'environnement jamais versionnées, régénérez toute clé exposée et faites valider par le référent désigné ; ce guide ne donne pas d'avis juridique.

Défi 48h — appliquez demain

Prenez 1 projet réel et écrivez sa chaîne en 5 temps (découper → typer → tester → isoler → livrer). Identifiez la prochaine étape.

Checklist sortie de section
  • Je sais assembler les briques en une application complète, du carnet à l'API déployée.
  • J'ai un modèle FastAPI rejouable pour mon projet.
  • J'ai fait le défi 48h ou planifié sa date.
Auto-évaluation 1-5 : enchaînement des étapes ?automatisation et livraison couvertes ?
Vérifiez votre compréhension

Nabil fait grandir son suivi de dépenses jusqu'à l'API déployée. Quel enchaînement respecte le guide ?