- address-search.js : expose searchAddressesRpc() → RPC Postgres `search_addresses` (pg_trgm), la MÊME recherche que l'autocomplete de disponibilité fibre. Trouve les rues que l'ilike manquait (générique géré par la colonne odonyme_recompose_long + phase 2 trigram), priorise les CP J0L/J0S (territoire). - geocodeRQA() (bridge) bascule de l'ilike vers la RPC. Garde-fou : la phase 2 trigram dérive quand le civique est absent du RQA (« 2245 René-Vinet » → « Rue Grenet, Montréal »). On n'accepte un résultat que si le civique concorde + un token de nom de rue correspond + (territoire J0L/J0S OU CP/ville legacy concordants). Vérifié sur les données réelles : accepte 494 Av Curry / 3055 Routhier / 228 Principale / 61 Jean-François ; rejette René-Vinet→Grenet/Panet, chemin Ridge→Ferme, rue West→Perras (bons faux positifs écartés). - Le faible compte RQA (8) = haute précision (l'ilike comptait 17 dont des faux positifs). Mapbox couvre le reste (rues neuves/civiques absents) ; ~109/125 (87 %) coordonnés ; les « aucune » = campings/villes mal écrites. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| billing-payments.md | ||
| cpe-management.md | ||
| customer-portal.md | ||
| dispatch.md | ||
| flow-editor.md | ||
| legacy-dispatch-bridge.md | ||
| README.md | ||
| roster.md | ||
| tech-mobile.md | ||
| vision-ocr.md | ||
Features
One doc per business capability. Each describes the user-facing behaviour, the ERPNext doctypes touched, the API endpoints involved, and the failure modes. Open the one that matches the feature you're changing.
| Doc | Owns |
|---|---|
| dispatch.md | Ops dispatch board: drag-and-drop scheduling, tech assignment with skill tags, travel-time optimization, magic-link SMS issuance, live SSE updates |
| roster.md | Planification (Roster AI): grille hebdo ressources × jours, garde live, solveur OR-Tools, scoring priorité (maîtrise⊕vitesse⊕coût), panneau « jobs à assigner » (drag-drop + aperçu occupation), timeline ressource, dialogues d'impact, booking roster-aware |
| legacy-dispatch-bridge.md | Pont legacy→dispatch: tire régulièrement les tickets osTicket « Tech Targo » (staff 3301) de la MariaDB legacy → Dispatch Job ERPNext (idempotent via legacy_ticket_id), mapping client/Service Location/type/date, endpoints preview/run, scheduler opt-in |
| tech-mobile.md | Field tech app (three surfaces: SSR /t/{jwt}, transitional apps/field/, unified /ops/#/j/*). Native camera → Gemini scanner, equipment install/remove, JWT auth, offline queue |
| customer-portal.md | Passwordless customer self-service at portal.gigafibre.ca: magic-link email (24h JWT), invoice + ticket view, Stripe-linked payment flows |
| billing-payments.md | Stripe integration (Checkout, Billing Portal, webhook), subscription lifecycle, invoice generation, payment reconciliation, PPA (Plan de paiement automatique), Klarna BNPL |
| cpe-management.md | CPE fleet: GenieACS (TR-069) provisioning + diagnostics, TP-Link XX230v / Deco deep probe via modem-bridge, 3-way diagnostic-swap workflow |
| vision-ocr.md | Camera-based scanning via Gemini 2.5 Flash — barcode, equipment label, invoice OCR. Hub endpoints /vision/*, useScanner composable, offline queue, AI_API_KEY rotation policy, ERPNext relationships triggered by a scan |
| flow-editor.md | Agent-flows module: Flow Template + Flow Run doctypes, trigger catalogue, step types, runtime contract, UI editor at /ops/#/agent-flows |
Cross-module map: see ../architecture/module-interactions.md for the full call graph + sequence diagrams.
Back to docs/README.md · roadmap.md