Durcissement fiabilité (suite audit).
Confiance & granularité
- worker: un résultat n'est accepté ('done') que si confiance >= GEOCODE_MIN_CONFIDENCE
(0.7) ET granularité non-grossière (rejette country/state/county/region). Sinon
on continue les fallbacks, puis -> llm_needed.
- fix majeur: sur cache hit la confiance était écrite 0.5 en dur (97% des lignes
faussées). Elle est désormais lue depuis geocode_cache (recalculée du raw).
- migration 012: colonnes confidence+granularity sur geocode_cache (recalcul des
entrées Geoapify depuis le raw), geocode_granularity sur band_locations.
Dedup (7x moins de travail)
- fast-path: un band_location dont le (lieu,pays) est déjà 'done' copie le
résultat sans appel API. Index fonctionnel lower(location_raw).
Ancien pipeline retiré
- geocode_queue n'est plus lu nulle part (endpoints /geocoding/reset-errors et
/requeue-all supprimés, /live et /geocoding et Monitor basculés sur
band_locations, panneau admin "ancien pipeline" retiré).
Boutons reset (onglet Géocodage, zone dangereuse)
- POST /admin/api/locations/reset-all: remet tout en queue + efface coords
- POST /admin/api/geocode-cache/purge-nominatim: purge le cache Nominatim
Divers
- groq_worker: coût calculé par modèle (70B vs 8B) au lieu du tarif 70B fixe
- GEOCODE_MIN_CONFIDENCE ajouté aux deux compose
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
25 lines
1.2 KiB
SQL
25 lines
1.2 KiB
SQL
-- 012_geocode_confidence.sql
|
|
-- Durcissement du géocodage : on rend la confiance et la granularité exploitables.
|
|
--
|
|
-- Bug corrigé côté worker : sur un cache hit, la confiance était écrite à 0.5 en
|
|
-- dur, jetant la vraie valeur présente dans le raw. On ajoute des colonnes
|
|
-- confidence + granularity à geocode_cache et on les recalcule depuis le raw
|
|
-- Geoapify (FeatureCollection). Aucune purge ici (la purge Nominatim + le reset
|
|
-- complet sont des boutons admin, pour maîtriser le budget API).
|
|
|
|
ALTER TABLE band_locations
|
|
ADD COLUMN IF NOT EXISTS geocode_granularity TEXT;
|
|
|
|
ALTER TABLE geocode_cache
|
|
ADD COLUMN IF NOT EXISTS confidence REAL,
|
|
ADD COLUMN IF NOT EXISTS granularity TEXT;
|
|
|
|
-- Recalcul pour les entrées Geoapify (raw = FeatureCollection avec rank.confidence)
|
|
UPDATE geocode_cache
|
|
SET confidence = NULLIF(raw->'features'->0->'properties'->'rank'->>'confidence', '')::real,
|
|
granularity = raw->'features'->0->'properties'->>'result_type'
|
|
WHERE raw ? 'features'
|
|
AND confidence IS NULL;
|
|
|
|
-- Fast-path de dedup au niveau step : lookup par lieu normalisé
|
|
CREATE INDEX IF NOT EXISTS idx_bl_locraw_lower ON band_locations (lower(location_raw));
|