Le hub n'appelle plus rddrjzptzhypltuzmere.supabase.co. La base RQA + dispo fibre est DÉJÀ locale dans le Postgres ERPNext (rqa_addresses 5,24M + fiber_availability 21,6k jointes par address_id), le hub y accède (réseau erpnext_erpnext + module pg). - NOUVEAU lib/address-db.js : recherche locale. Phase 1 (civique présent) = filtre numero btree + mots de rue → ~20-150 ms ; Phase 2 (sans civique) = word_similarity (`<%` indexable GIN) au lieu de similarity() plein (24-76 s sur 5,24M !) → ~700 ms, dans une txn SET LOCAL (seuil 0.6 + statement_timeout 4s). Renvoie 2 formes : searchLocal (mappée, compat historique) + searchRaw (colonnes brutes de la fonction). - address-search.js : searchAddresses + searchAddressesRpc délèguent à address-db (plus aucun appel Supabase). → onboarding (/address/validate), checkout (/api/address-search) ET le pont (géocodage) passent en LOCAL. - address-validate.js : endpoints PUBLICS pour le site web (CORS) — POST /rpc/search_addresses (compat Supabase RPC, tableau direct) + GET /address/search — servis depuis le PG local (fiber_available inclus). - server.js : route /rpc/ → address-validate. Résultat pont (vérifié) : couverture 112/125 (vs 109 via Supabase), rqa_geocode 8→25 (table locale plus complète + search_text désaccentué), Mapbox 37→23, no_coords 16→13, 0 erreur. Le local est meilleur. Env hub : ADDR_DB_* dans /opt/targo-hub/.env (défauts erpnext-db-1/_eb65bdc0c4b1b2d6). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
25 lines
1.1 KiB
JavaScript
25 lines
1.1 KiB
JavaScript
'use strict'
|
|
/**
|
|
* address-search.js — façade de recherche d'adresses.
|
|
*
|
|
* Depuis 2026-06 la source est 100% LOCALE (Postgres ERPNext : rqa_addresses + fiber_availability,
|
|
* via ./address-db) — PLUS aucune dépendance au Supabase cloud externe. Les noms d'export restent
|
|
* stables pour les consommateurs existants : address-validate (/address/*), checkout (/api/address-search),
|
|
* legacy-dispatch-sync (géocodage du pont).
|
|
*/
|
|
const { searchLocal } = require('./address-db')
|
|
|
|
// Recherche d'adresses — forme historique (adresse_formatee, numero_municipal, numero_unite,
|
|
// odonyme_recompose_normal, nom_municipalite, code_postal, latitude, longitude,
|
|
// identifiant_unique_adresse, fiber_available, zone_tarifaire, max_speed, similarity_score).
|
|
async function searchAddresses (term, limit = 8) {
|
|
try { return await searchLocal(term, limit) } catch (e) { return [] }
|
|
}
|
|
|
|
// Alias historique (anciennement la RPC trigram Supabase) → désormais la même recherche locale.
|
|
async function searchAddressesRpc (term, limit = 8) {
|
|
return searchLocal(term, limit)
|
|
}
|
|
|
|
module.exports = { searchAddresses, searchAddressesRpc }
|