-- camping_dispatch_backfill.sql — applique la géoloc FIXE du camping aux Dispatch Jobs DÉJÀ dispatchés. -- Le pont (legacy-dispatch-sync) ne re-traite que les tickets encore « ouverts + assign_to=3301 » ; les jobs -- déjà assignés/fermés gardent leurs vieilles coords (résidence). Ce backfill corrige tous les jobs issus du -- pont dont le SUJET désigne un camping (mots-clés de LIEU sûrs ; pour 'dauphinais', exige aussi « camping »). -- Idempotent (ne touche que ceux dont la coord diffère). Match via camping_registry. \timing on BEGIN; WITH applied AS ( UPDATE "tabDispatch Job" dj SET latitude = c.latitude, longitude = c.longitude, modified = NOW() FROM camping_registry c WHERE dj.legacy_ticket_id <> '' AND c.active AND lower(unaccent(coalesce(dj.subject, ''))) LIKE '%' || c.keyword || '%' AND ( c.keyword IN ('lac des pins','lac de pins','sandysun','sandy sun','frontiere','ensoleill') OR lower(unaccent(coalesce(dj.subject, ''))) LIKE '%camping%' ) AND (dj.latitude IS NULL OR abs(coalesce(dj.latitude,0) - c.latitude) > 1e-4 OR abs(coalesce(dj.longitude,0) - c.longitude) > 1e-4) RETURNING c.name AS camping ) SELECT camping, count(*) AS jobs FROM applied GROUP BY camping ORDER BY 2 DESC; COMMIT;