Inventaire source — Lou-Ka (audit en lecture seule, 2026-10-17)
Nœud : M4M64a, dossier ~/apps/lou-ka, dépôt gitsrv:srv/git/lou-ka.git (HEAD 57646d3, 2026-10-15). Rien n'a été modifié.
Stack
- Python 3.14 (
.venv), FastAPI + Uvicorn ; frontend React 18 + Vite 5 + TS, cartes@groupe-ka/ka-mapssur Mapbox GL (jetonVITE_MAPBOX_TOKEN). - Tests :
tests/(pytest, 93 tests, 198 fixtures HTTP rejouables). - PM2 :
lou-ka-web(run.py serve 8095),lou-ka-sync(run.py watch 60: tous les connecteurs toutes les 60 min puis géocodage → POI → quartier → qualité → images → dédup → immeubles → fairvalue → KA Scores).
Données
- SQLite WAL
data/louka.db(4,2 Go). Tablelistings(uid =<source>:<external_id>, 220 801 lignes, 48 937 actives+publiées, 40 072 canoniquesdup_of IS NULL),price_log,listing_events,fairvalue(fv, fv_low, fv_high, deviation, verdict sous/marche/sur, confidence, method, comps, model_versionfv-logement-1.0),kascores(parcoord_key),buildings,geocode_cache,image_checks,users/favorites(KA ID). - Photos : URL hotlinkées du site source (
imagesJSON), filtrées (images_ok) ; miniatures WebP à la volée via/api/imgseulement siimage_checks.status='ok'. Aucun droit de redistribution documenté. - Taux de remplissage (actifs) : lat/lng 97 %, prix 100 %, chambres 98 %, sdb 75 %, superficie 64 %, images 97 %.
- 424 sources distinctes (gestionnaires, portails kangalou/louer_ca/rentals_ca/zumper, petites annonces kijiji/lespac/fb_marketplace, courtiers). Chaque connecteur a une fiche
docs/connecteurs/<id>.md(données factuelles publiques, UA identifiableLouKaBot/1.0, throttling, lien vers l'original, retrait sur demande).
Logique réutilisable
louka/fairvalue.py: médianes de segment (ville/quartier × chambres) → ajustements multiplicatifs → kNN géographique ;explain(uid).louka/kascores.py(2026.08-v1) : walk/transit/bike/calme/services → global, sur tuiles OSM + PMD 2021.louka/dedup.py: blocage grille ~110 m / clé d'adresse normalisée, confirmation type d'unité + prix ±4 % + second signal ; canonique = source la plus autoritaire.louka/geocode.py: Nominatim + Adresses Québec (MERN ArcGIS), cache.louka/quartier.py+data/quartier.db(recensement, défavorisation, écoles, chaleur) ; couchesinondation.db,rdl.db,hydro.db,air.db,commerces.db,transit.db.
Décision Toveli
- Réutiliser en lecture seule : instantané
sqlite3 .backupdedata/louka.db→ extraction mince (listingscanoniques actives +fairvalue+kascores+price_log) rapatriée la nuit sur le nœud Toveli (cléka_guardian_ed25519de M3U96b autorisée sur M4M64a le 2026-10-17, entrée commentéetoveli-sync-depuis-M3U96b-2026-10-17). - Adapter : logique de dédup (grille + adresse) réécrite en TypeScript pour le rapprochement annonce → propriété Toveli ; KA Scores et fairvalue consommés tels quels (résultats, pas recalcul).
- Exclure : connecteurs (aucune collecte dupliquée), médias (hotlink conservé avec crédit source, pas de copie), comptes/KA ID.