gigafibre-fsm/apps/ops/src/api/address.js
louispaulb 042c5545f7 ops: MapLibre/OSM basemap (drop Mapbox) + satellite toggle, unified Créer flow, wizard pricing, infra-first reverse client
- Maps: MapLibre GL + self-hosted Protomaps tiles + ESRI satellite toggle
- FAB 'Créer' chooser (incl. Soumission wizard) via useCreateSignal
- Quote wizard: new default tiers (80/500/1500 @ 39.95/49.95/49.95), competitor
  price-match, mini-map pin w/ green check, carry qualified address
- api/address.reverse() + reverseGeocodeOSM tries RQA-backed hub, Nominatim fallback

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 21:52:14 -04:00

33 lines
1.9 KiB
JavaScript

/**
* API Conformité des adresses — appelle targo-hub /address/conformity/*.
* Source de vérité : Service Location (lien AQ local rqa_addresses). Voir services/targo-hub/lib/address-conformity.js.
*/
import { HUB_URL as HUB } from 'src/config/hub'
async function jget (path) {
const r = await fetch(HUB + path)
if (!r.ok) throw new Error('Address API ' + r.status)
return r.json()
}
async function jpost (path, body) {
const r = await fetch(HUB + path, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body || {}) })
if (!r.ok) throw new Error('Address API ' + r.status)
return r.json()
}
export const conformityStats = () => jget('/address/conformity/stats')
export const conformityList = (p) => jget('/address/conformity/list?' + new URLSearchParams(p).toString())
export const conformityCandidates = (q) => jget('/address/conformity/candidates?q=' + encodeURIComponent(q))
// action: approve | correct | gps | reject (+ aq_address_id/linked_address/latitude/longitude selon l'action)
export const conformityResolve = (body) => jpost('/address/conformity/resolve', body)
// ── Registre des campings (géoloc de remplacement fixe par camping) ──
export const campingsList = () => jget('/address/conformity/campings')
export const campingsUpsert = (body) => jpost('/address/conformity/campings', body) // {keyword,name,address,latitude,longitude}
export const campingsApply = () => jpost('/address/conformity/campings/apply', {})
// Dernier repli : placer les unmatched restants au centre du code postal (sinon ville) → statut 'area'
export const conformityApplyArea = () => jpost('/address/conformity/apply-area', {})
// Géocodage INVERSE (coord → adresse) via notre RQA locale (plus de Nominatim externe).
export const reverse = (lat, lon) => jget('/address/reverse?lat=' + encodeURIComponent(lat) + '&lon=' + encodeURIComponent(lon))