# Décisions d'architecture (ADR) — Toveli ## ADR-1 · Quatrième plateforme autonome, lecture seule sur les sources Toveli possède son dépôt (`toveli.git` sur spbgit), son nœud (M3U96b), son port (8460), son domaine, sa base (`data/toveli.db`) et ses secrets. Les trois plateformes ne sont ni modifiées ni interrogées en production : des instantanés `sqlite3 ATTACH … CREATE TABLE AS SELECT` sont pris sur le nœud source puis rapatriés (≈ 1,5 Go/nuit sur le LAN). Seul effet de bord : une clé publique ajoutée à `M4M64a:~/.ssh/authorized_keys` (ligne commentée `toveli-sync-depuis-M3U96b-2026-10-17`, sauvegarde `authorized_keys.bak-20261017`). ## ADR-2 · SQLite canonique reconstruite chaque nuit plutôt que Postgres synchronisé Les sources sont elles-mêmes en SQLite et changent par lots ; une reconstruction complète (≈ 2 min) avec bascule atomique est plus simple et plus sûre qu'une réplication incrémentale. Le handle better-sqlite3 est rouvert quand l'inode change. Limite : pas d'écriture utilisateur dans cette base → les favoris sont locaux (v1) ; l'identité/annonces directes iront dans une base PostgreSQL séparée (extension). ## ADR-3 · Modèle canonique « annonce ≠ propriété » `property` (clé rôle / adresse / coordonnées + confiance), `listing` (provenance JSON), `price_event`, `valuation` (modèle, version, méthode, verdict), `sale_transaction`, `role_unit`, `market_metric`, `neighbourhood_score`, `source`. Les unités en copropriété ne sont pas fusionnées automatiquement. ## ADR-4 · Estimation : réutiliser le moteur pur de Vrai-Prix, recalculer en direct `engine.ts` copié tel quel (attribution en en-tête). En direct sur chaque fiche quand l'unité du rôle est connue, sinon estimation manuelle par comparables ; valuations nocturnes `vp_eval` comme repli. Toujours : fourchette, confiance A–D, méthode, version, date, limites, avertissement OEAQ. ## ADR-5 · Cartes libres MapLibre GL + style OpenFreeMap (positron) : aucune clé, attribution OSM/OpenMapTiles. Mapbox exclu (jeton Groupe Ka). ## ADR-6 · Assistant IA Anthropic côté serveur, boucle d'outils (recherche, fiche, marché, estimation, hypothèque) ; réponses citant les `uid` des annonces (cartes affichées) ; limitation 30 req/10 min/IP ; aucun stockage des conversations. Abstraction fournisseur par variables d'environnement. ## ADR-7 · Interface Français québécois, mobile-first (navigation basse 5 onglets, cartes 2 colonnes, carte plein écran), ordre du DOM = ordre visuel, aucune mention des marques sources dans l'interface (crédit = site d'origine), pas de console d'administration publique.