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 <noreply@anthropic.com>
This commit is contained in:
2026-09-18 09:57:26 +02:00
parent 6c45faecdc
commit 5c774babbb
2 changed files with 30 additions and 2 deletions

View File

@@ -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