From 5c774babbbf0a81f70ffdcee95469f3798e0c12e Mon Sep 17 00:00:00 2001 From: Jules Date: Fri, 18 Sep 2026 09:57:26 +0200 Subject: [PATCH] Log impressions (JSONL) + sleep 3s entre copies multi - _log_impression() ecrit chaque demande dans data/impressions.jsonl (timestamp, photo, copies, format, succes, event_id, detail CUPS) - Delai entre copies passe de 1s a 3s pour fiabiliser multi-copies Mitsubishi Co-Authored-By: Claude Opus 4.6 --- backend/main.py | 30 +++++++++++++++++++++++++++++- backend/printer.py | 2 +- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/backend/main.py b/backend/main.py index 62badab..c7f56b3 100644 --- a/backend/main.py +++ b/backend/main.py @@ -1,5 +1,6 @@ import asyncio import base64 +import datetime import json import logging import os @@ -1494,6 +1495,29 @@ async def api_reset_usb(): return {"succes": False, "message": str(e)} +FICHIER_LOG_IMPRESSIONS = RACINE / "data" / "impressions.jsonl" + + +def _log_impression(photo: str, copies: int, format_papier: str | None, succes: bool, detail: str): + entry = { + "ts": datetime.datetime.now().isoformat(), + "photo": photo, + "copies": copies, + "format": format_papier, + "succes": succes, + "detail": detail, + } + config = charger_config() + evt = config.get("evenement", {}).get("event_id", "") + if evt: + entry["event"] = evt + try: + with open(FICHIER_LOG_IMPRESSIONS, "a") as f: + f.write(json.dumps(entry) + "\n") + except Exception as e: + log.warning(f"Impossible d'ecrire le log impression : {e}") + + @app.post("/api/imprimer") async def api_imprimer(donnees: dict): if evenement_est_termine(): @@ -1511,12 +1535,16 @@ async def api_imprimer(donnees: dict): return JSONResponse({"erreur": "Photo introuvable"}, status_code=404) cadre_override = donnees.get("cadre") format_papier = donnees.get("format_papier") or None + log.info(f"IMPRESSION demandee: photo={nom} copies={copies} format={format_papier} cadre={cadre_override}") try: resultat = imprimer(chemin, copies=copies, cadre_override=cadre_override, format_papier=format_papier) except Exception as e: log.error(f"Erreur impression inattendue : {e}") + _log_impression(nom, copies, format_papier, False, str(e)) return {"succes": False, "erreur": "erreur_impression", "message": f"Erreur interne : {e}"} - if resultat.get("succes"): + succes = resultat.get("succes", False) + _log_impression(nom, copies, format_papier, succes, resultat.get("job", "")) + if succes: distribuer_photo(chemin, imprimee=True, copies=copies, format_papier=format_papier) return resultat diff --git a/backend/printer.py b/backend/printer.py index 6a7b319..e3ec332 100644 --- a/backend/printer.py +++ b/backend/printer.py @@ -353,7 +353,7 @@ def imprimer( } if copie < copies: - time.sleep(1) + time.sleep(3) log.info(f"Impression terminée : {copies} copie(s), jobs={jobs}") return {"succes": True, "job": ", ".join(jobs)}