-- 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;
