TypeScript 50.6%
JavaScript 46.1%
SQL 2.1%
Shell 0.6%
CSS 0.5%
1# Décisions d'architecture (ADR) — Toveli23## ADR-1 · Quatrième plateforme autonome, lecture seule sur les sources4Toveli 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`).56## ADR-2 · SQLite canonique reconstruite chaque nuit plutôt que Postgres synchronisé7Les 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).89## ADR-3 · Modèle canonique « annonce ≠ propriété »10`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.1112## ADR-4 · Estimation : réutiliser le moteur pur de Vrai-Prix, recalculer en direct13`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.1415## ADR-5 · Cartes libres16MapLibre GL + style OpenFreeMap (positron) : aucune clé, attribution OSM/OpenMapTiles. Mapbox exclu (jeton Groupe Ka).1718## ADR-6 · Assistant IA19Anthropic 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.2021## ADR-7 · Interface22Franç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.23