Fix montants (locale) + timeout fetch Indy + message d'erreur

This commit is contained in:
2026-06-30 14:57:36 +02:00
parent 75af558b49
commit 53fbf19a0b
8 changed files with 152 additions and 7 deletions
+15 -3
View File
@@ -5,7 +5,7 @@ normalise au format attendu par l'import (réutilisé par la page /import/).
La « catégorie » Indy est un numéro de compte du plan comptable (PCG) ; on le
mappe vers nos catégories. Montants en centimes, signés. `tva_intracom` => UE.
⚠️ API non officielle d'Indy : pour les données de l'utilisateur. Le token JWT
API non officielle d'Indy : pour les données de l'utilisateur. Le token JWT
expire (~1 h) et doit être renouvelé.
"""
from decimal import Decimal
@@ -96,14 +96,26 @@ def fetch_transactions(token, date_debut=None, date_fin=None, search="", page=1,
params["dateFrom"] = date_debut
if date_fin:
params["dateTo"] = date_fin
timeout = httpx.Timeout(12.0, connect=8.0)
try:
with httpx.Client(base_url=base_url.rstrip("/"), headers=headers,
timeout=30, follow_redirects=True) as c:
timeout=timeout, follow_redirects=True) as c:
r = c.get(TRANSACTIONS_PATH, params=params)
if r.status_code != 200:
return r.status_code, [], f"HTTP {r.status_code} (token expiré ?)"
return r.status_code, [], (
f"HTTP {r.status_code} — token expire, ou requete bloquee par "
f"Cloudflare depuis le serveur.")
if "json" not in r.headers.get("content-type", "").lower():
return r.status_code, [], (
"Reponse non-JSON (probablement Cloudflare). Le conteneur n'arrive "
"pas a joindre Indy directement. Recupere le CSV depuis ton poste "
"(MCP/CLI) et colle-le ci-dessous.")
data = r.json()
return 200, data.get("transactions", []), None
except httpx.TimeoutException:
return None, [], ("Delai depasse en joignant Indy : le conteneur n'a peut-etre "
"pas d'acces Internet, ou Cloudflare bloque. Utilise le CSV "
"depuis ton poste.")
except Exception as ex: # noqa: BLE001
return None, [], f"{type(ex).__name__}: {ex}"