Rapports de test automatisés avec TofuPilot
Les rapports de test sont nécessaires. Les construire manuellement ne l'est pas. TofuPilot stocke toutes vos données de test dans un format structuré, ce qui permet de générer les rapports automatiquement au lieu de les assembler à la main dans Excel chaque vendredi.
Le problème des rapports manuels
Un rapport qualité hebdomadaire typique nécessite :
- Exporter les données de chaque station de test (15 min par station)
- Fusionner les exports dans un seul tableur (30 min)
- Calculer le FPY, le Pareto des défaillances et les statistiques de mesure (45 min)
- Construire les graphiques (30 min)
- Rédiger le résumé et les observations (30 min)
- Mettre en forme et distribuer (15 min)
Cela représente plus de 3 heures chaque semaine. Pour un ingénieur qualité qui devrait analyser les données, pas formater des cellules.
Ce que TofuPilot automatise
TofuPilot remplace entièrement les étapes 1 à 4. Les données sont déjà centralisées. Les indicateurs sont déjà calculés. Les graphiques sont déjà tracés.
| Étape manuelle | Équivalent TofuPilot |
|---|---|
| Exporter depuis chaque station | Les données sont envoyées automatiquement |
| Fusionner dans un seul tableur | Déjà dans une seule base de données |
| Calculer le FPY | Calculé en temps réel |
| Construire les graphiques | Tableaux de bord intégrés |
| Pareto des défaillances | Généré automatiquement à partir des résultats de test |
| Distributions des mesures | Histogrammes par mesure |
Types de rapports de test
Rapport de test par unité
Un enregistrement complet des résultats de test d'une unité. Utile pour :
- La documentation d'acceptation client
- Les dossiers de garantie
- Les soumissions réglementaires
Contenu : numéro de série, toutes les procédures de test exécutées, toutes les mesures avec limites, statut pass/fail, horodatages.
Rapport de synthèse de lot
Données qualité agrégées pour un lot de production. Utile pour :
- Les décisions de libération de production
- Les revues qualité fournisseur
- Les tableaux de bord de direction
Contenu : taille du lot, FPY, Pareto des défaillances, distributions des mesures, valeurs Cpk.
Rapport de performance des stations
Performance de chaque station de test. Utile pour :
- La planification de la maintenance
- La planification de la capacité
- La qualification des stations
Contenu : FPY par station, temps de cycle, modes de défaillance, distributions des mesures.
Générer des rapports via l'API
Utilisez l'API de TofuPilot pour extraire les données dans des formats de rapport personnalisés.
from tofupilot import TofuPilotClient
from datetime import datetime, timedelta
client = TofuPilotClient()
# Récupérer tous les runs d'une procédure sur les 7 derniers jours
runs = client.get_runs(
procedure_id="FINAL-FUNCTIONAL-V3",
limit=500,
)
# Calculer les statistiques du lot
total = len(runs)
passed = sum(1 for r in runs if r["run_passed"])
fpy = passed / total if total > 0 else 0
# Répartition des modes de défaillance
failure_modes = {}
for run in runs:
if not run["run_passed"]:
for step in run.get("steps", []):
if not step["status"]:
mode = step["name"]
failure_modes[mode] = failure_modes.get(mode, 0) + 1
print(f"Rapport de lot - FINAL-FUNCTIONAL-V3")
print(f"Période : 7 derniers jours")
print(f"Unités totales : {total}")
print(f"Réussies : {passed}")
print(f"FPY : {fpy:.1%}")
print()
print("Principaux modes de défaillance :")
for mode, count in sorted(failure_modes.items(), key=lambda x: -x[1]):
print(f" {mode}: {count} ({count/total:.1%})")Générer un export CSV
import csv
from tofupilot import TofuPilotClient
client = TofuPilotClient()
runs = client.get_runs(
procedure_id="FINAL-FUNCTIONAL-V3",
limit=1000,
)
with open("test_report.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow(["Série", "Date", "Statut", "Étape", "Mesure", "Valeur", "Unité", "Limite basse", "Limite haute", "Résultat"])
for run in runs:
serial = run["unit_under_test"]["serial_number"]
date = run["created_at"]
status = "PASS" if run["run_passed"] else "FAIL"
for step in run.get("steps", []):
for m in step.get("measurements", []):
writer.writerow([
serial,
date,
status,
step["name"],
m["name"],
m["value"],
m.get("unit", ""),
m.get("limit_low", ""),
m.get("limit_high", ""),
"PASS" if step["status"] else "FAIL",
])
print(f"{len(runs)} runs exportés vers test_report.csv")Planification des rapports
Option A : Rapports basés sur cron
# Exécuter chaque lundi à 7h via cron
# 0 7 * * 1 python3 /opt/reports/weekly_report.py
from tofupilot import TofuPilotClient
import smtplib
from email.mime.text import MIMEText
client = TofuPilotClient()
# Générer le contenu du rapport
runs = client.get_runs(procedure_id="FINAL-FUNCTIONAL-V3", limit=500)
total = len(runs)
passed = sum(1 for r in runs if r["run_passed"])
fpy = passed / total if total > 0 else 0
report = f"""Rapport de test hebdomadaire - FINAL-FUNCTIONAL-V3
Unités testées : {total}
Rendement au premier passage : {fpy:.1%}
"""
# Envoyer par email
msg = MIMEText(report)
msg["Subject"] = f"Rapport de test hebdomadaire - FPY {fpy:.1%}"
msg["From"] = "reports@yourcompany.com"
msg["To"] = "quality-team@yourcompany.com"
with smtplib.SMTP("smtp.yourcompany.com") as server:
server.send_message(msg)Option B : Liens vers les tableaux de bord
Au lieu de générer des rapports PDF, partagez les liens vers les tableaux de bord TofuPilot. Le destinataire voit les données en temps réel, pas un instantané du moment où le rapport a été généré.
Avantages par rapport aux rapports statiques :
- Toujours à jour
- Interactifs (filtrer, explorer, comparer)
- Aucune étape de génération nécessaire
- Aucune étape de distribution nécessaire
Remplacer la réunion qualité hebdomadaire
Au lieu de passer les 30 premières minutes de votre réunion qualité à présenter des données, ouvrez le tableau de bord TofuPilot et lancez la conversation à partir des données. La réunion passe de « voici ce qui s'est passé » à « voici ce que nous devrions faire ».