SPB Git

spb/house-ka

Public

[ka2] fix connecteur rp_ag_denisedunnrealtor: ordre stale-first de la boucle sync (queue de liste affamée par cycles >24h + restarts)

Simon-Pierre Boucher committed (Aug 29, 2026) parent 46a86ef Browse files

1 changed file +12 −1

Unified Split
modified immoka/ingest.py +12 −1
@@ -14,11 +14,22 @@ from . import db
14 from .connectors import CONNECTORS 14 from .connectors import CONNECTORS
15 15
16 16
17+def _stale_first(con, targets: list[str]) -> list[str]:
18+ """Ordonne les sources par dernier succès croissant (jamais synchronisées
19+ d'abord). Une passe complète dure ~24 h : dans l'ordre fixe du registre,
20+ un restart mi-cycle repart de zéro et affame la fin de la liste (hanlon,
21+ denisedunn, raymondanthony marquées stale le 2026-08-29). Ici, les plus
22+ en retard passent en tête de chaque cycle."""
23+ last = {r[0]: r[1] for r in con.execute(
24+ "SELECT source, MAX(ts) FROM sync_log WHERE ok=1 GROUP BY source")}
25+ return sorted(targets, key=lambda sid: last.get(sid) or 0.0)
26+
27+
17 def run(sources: list[str] | None = None) -> list[dict]: 28 def run(sources: list[str] | None = None) -> list[dict]:
18 """Exécute l'ingestion pour toutes les sources (ou celles demandées).""" 29 """Exécute l'ingestion pour toutes les sources (ou celles demandées)."""
19 con = db.connect() 30 con = db.connect()
20 results = [] 31 results = []
21− targets = sources or list(CONNECTORS.keys()) 32+ targets = sources or _stale_first(con, list(CONNECTORS.keys()))
22 for sid in targets: 33 for sid in targets:
23 cls = CONNECTORS.get(sid) 34 cls = CONNECTORS.get(sid)
24 if cls is None: 35 if cls is None:
25 36
Menu

Theme