diff --git a/Architecture.md b/Architecture.md index 6885d3c..9ba00a0 100644 --- a/Architecture.md +++ b/Architecture.md @@ -52,6 +52,14 @@ Worker de fond responsable de : - Animations transitions douces - Media queries (compact 24" / breakpoint étroit) +## Couche données v2 (v2026.5.46) + +- **Store par jour** `planv2_` (chrome.storage.local, schéma 2) : liste plate d'interventions dédoublonnées par identité stable (`requestId` > `actionId` > réf). C'est la seule vérité ; rendu, dossier partagé et EasyVista n'en sont que des projections/sources. +- **Verdict unique** par intervention : `{status: live|done|suspended|closed|gone|moved|unknown, at, source, reason}`. +- **`ivMerge`** : LA fusion (métadonnées les plus fraîches + enrichissements complétés + verdict le plus récent + modèle vie/mort — une vie postérieure lève les tombstones). Utilisée pour EV↔store, local↔dossier, import. +- **`storeSave`** : seule porte d'écriture (dédoublonnage, horodatage, quota, push débounce vers le dossier). **`storeProject`** : seule projection de rendu (tombstones, verdicts gone/moved, dock, fenêtre anti cache-serveur après déplacement). +- **Dossier partagé** : hôte natif PowerShell (publié en asset de release, installable via Paramètres → Dossier partagé), fichiers-jour dans le sous-dossier `v2` du partage, compare-and-swap + verrous. + ## Flux principal ``` @@ -107,6 +115,9 @@ Worker de fond responsable de : ## Fonctions clés (viewer.js) +Vue « échelle de temps exacte » : `_buildExactRow` (bande continue + sous-lignes + trous), `_buildOneMiniCard` (fabrique partagée flux/exact), `_buildExactRuler` + `_alignExactRuler` (règle des heures, alignement mesuré), `_layoutExactGrid` (traits d'heures continus, sauteurs d'absents via `_exactAbsentSegments`), `updateNowLine` (ligne « maintenant » globale). + + | Fonction | Introduite | Rôle | |---|---|---| | `loadForDate` | v1.0.0 | Fetch + parse planning pour une date |