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)}