diff --git a/CHANGELOG.md b/CHANGELOG.md index c2082cc..45d1254 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,88 @@ --- +## v2026.5.46 — Refonte de la couche données, vue « échelle de temps exacte », session fiabilisée, réservations enrichies + +> Version majeure par son contenu : la couche données est entièrement refondue (store unifié par jour, un seul verdict par intervention, synchronisation du dossier partagé en sous-dossier `v2`), une nouvelle disposition « échelle de temps exacte » s'ajoute à la vue horizontale, la détection de session EasyVista est fiabilisée de bout en bout, et les réservations portent enfin leurs informations (n°, lieu, catégorie) sur tous les postes. Le script PowerShell du dossier partagé est désormais publié avec l'extension et téléchargeable depuis les Paramètres. + +### Couche données v2 (refonte complète) + +- **Un store par jour** (`planv2_`) : liste plate d'interventions dédoublonnées par identité stable (requestId > actionId > réf) — la seule source de vérité ; le rendu, le cache local, le dossier partagé et EasyVista n'en sont que des projections ou des sources. +- **Un seul verdict par intervention** (`live / done / suspended / closed / gone / moved / unknown`) qui remplace les anciens marqueurs dispersés (ghost, statuts de disparition, diagnostics). +- **Une seule fusion** (modèle vie/mort) utilisée partout : EV↔store, local↔dossier, import. Une vie strictement postérieure à une mort lève les tombstones (réapparition EV autoritaire). +- **Dossier partagé** : transport natif inchangé (verrous + écriture atomique + compare-and-swap), fichiers v2 dans le sous-dossier `v2` du partage — les postes en ancienne version n'interfèrent plus. Ordre des sources refondu : EasyVista s'affiche immédiatement, le dossier habille les cartes sans re-télécharger, le fetch ne traite que ce qui manque, l'enrichissement est repoussé au dossier en fin de chargement. +- Les interventions déplacées par l'extension portent un verdict « déplacée » propagé (plus d'analyse inutile), avec fenêtre anti cache-serveur EV. +- Les disparues en attente de verdict restent affichées (grisées, spinner) au lieu de disparaître puis réapparaître. +- Outil réservé à l'auteur (onglet Test) : conversion de l'ancien cache dossier v1 vers le modèle v2, sans modifier les anciens fichiers. +- Les anciens caches (`planning_cache_*`) sont purgés au démarrage. + +### Vue horizontale : nouvelle disposition « échelle de temps exacte » + +- **Nouvelle option** dans Paramètres → Apparence (exclusive avec « Afficher les pauses » : cocher l'une décoche l'autre). La vue par défaut reste inchangée. +- Le bandeau timeline disparaît : chaque intervention/réservation/absence partielle est posée **en position réelle** sur une bande continue de la plage affichée (position et largeur proportionnelles à l'heure et à la durée). +- **Règle des heures fixe** en haut (reste collée au défilement), **lignes verticales continues** sur toute la hauteur du tableau : trait net à chaque heure, pointillé discret aux demi-heures, césure rayée à midi ; les traits passent derrière les bulles et sautent les techniciens absents. +- **Ligne rouge « maintenant »** continue sur toute la hauteur (jour courant), reposée instantanément à chaque rendu ; elle saute aussi les absents. +- **Chevauchements** : les éléments qui se recouvrent s'empilent en sous-lignes de même hauteur — la zone du technicien s'agrandit seulement dans ce cas ; tolérance de 10 minutes pour ne pas empiler de simples enchaînements. +- **Cartes** : fond neutre, le bord gauche porte la couleur de catégorie et sert de **poignée** (cliquer = fenêtre de modification, glisser = déplacer ; présente sur toutes les cartes, déplacement bloqué pour les faites/clôturées, réservations et absences). Numéro d'intervention en tête, ville + adresse groupées ; cartes étroites : texte compact (ville + fin d'adresse, « Rue de l'Université 5 » → « Université 5 »), jamais vides tant qu'il reste de la place. +- **Réservations** : affichent sous l'intitulé le lieu renseigné à la création, sinon le nom de la personne qui a réservé. +- **Zones libres** : survol = « Libre HH:MM–HH:MM » (y compris sur les journées totalement vides), clic droit = Réservation/Absence à l'heure du curseur, dépôt du drag précis (pas de 30 min) avec marqueur vert sur toute la bande. +- Alignement règle/cartes mesuré au pixel réel (indépendant du zoom et de la taille de texte). + +### Session EasyVista fiabilisée (fin des faux « déconnecté ») + +- **Cookie réécrit ≠ supprimé** : le navigateur émet toujours une « suppression » technique juste avant de reposer un cookie mis à jour — l'extension basculait à tort en « session expirée » à chaque rafraîchissement du PHPSESSID (permission cookies active). Désormais ignoré ; une vraie suppression attend 3 s (relog possible) puis vérifie au serveur avant d'alarmer. +- **Expiration sur preuve uniquement** : une erreur transitoire (réseau, HTTP 5xx) ne déclenche plus la bannière — seule une preuve le fait (page de login à la sonde, temps restant nul, plus aucun PHPSESSID) ; sinon nouvel essai dans 30 s. +- **Onglet EasyVista facultatif** avec la permission cookies : le cookie suffit aux requêtes — fermer l'onglet EV ne « perd » plus la session. +- **Contre-vérification HTTP** : avant de classer un 401/403/404 en « session expirée », l'endpoint d'autorité `session_time` est sondé ; si la session vit, l'erreur est reclassée « EV inaccessible » (transitoire). +- **Compteur calé sur le serveur** : recalage périodique sur la vraie valeur EasyVista (au démarrage, toutes les 90 s, au retour de visibilité), plus de recalage erroné sur l'expiration du cookie ; badge session en direct (MM:SS) avec « Prolonger la session » dans le popup. + +### Réservations + +- **Modal enrichie** : préréglages Matin/Après-midi/Journée puis heures ; champs n° d'intervention, ville, rue, catégorie ; recherche automatique des informations dans EasyVista à partir du n° (catégorie et localisation pré-remplies). +- **Meta persistante et partagée** : ces informations survivent aux rafraîchissements (EV ne les stocke pas) et remontent désormais au dossier partagé — tous les postes voient le n°, le lieu et la catégorie d'une réservation, quel que soit le poste qui l'a créée ou modifiée. +- Édition d'une réservation (heures ou infos seules), suppression, tooltip détaillé avec ouverture/copie du n° lié. + +### Pompier + +- **Assignations « pompier du mois »** : définition par période (bouton Ajouter → Pompier), affichage dans la barre de stats, liste des pompiers actuels/à venir, édition/déplacement de période. +- La bandelette « En pompier du … au … » reste fixée en haut de la carte ; un pompier absent toute la journée est exclu du compteur. + +### Coordinateur (en développement) + +- Badge « Mes actions » dans la barre de stats + onglet dédié listant les interventions où le coordinateur a une action ; outil d'impersonation (réservé à l'auteur) pour tester. + +### Douchette + +- **Vraie confirmation EasyVista** : l'envoi vérifie le marqueur de prise en compte renvoyé par EV — toast « confirmé par EasyVista » fiable. +- **Resynchronisation automatique** après un déplacement d'intervention (jour source + jour cible, regroupés si même jour), avec compte-rendu clair et relance possible. + +### Recherche + +- **Opérateurs** : espace = tous les mots, `%` joker, `"expression exacte"`, `-mot` exclusion, `tech:/lieu:/ref:/cat:/contact:` ciblage de champ. +- **Pagination** 15 par 15 au défilement ; passé replié par défaut ; badge « Jour affiché » ; aide sur la syntaxe. +- **Mise en avant stabilisée** : « Jour ↗ » navigue et surligne la carte pendant 15 s, survit aux re-rendus, un seul défilement animé. +- La croix d'effacement native du navigateur (en doublon avec celle de l'extension) est masquée. + +### Interventions & affichage + +- **Multi-jours** : badge pilule (« 📅 ⇢ 16/06 » / « ⇠ 12/06 »), heures d'affichage par jour, période complète au survol, déplacement bloqué (à modifier dans EasyVista). +- **Conflit au déplacement** : le modal de confirmation signale toute occupation du technicien cible (détail en rouge) et **propose le créneau libre le plus proche** (même durée) en un bouton. +- **Vérification d'adresse** : la localisation officielle de la fiche devient l'adresse affichée ; si elle diverge de celle écrite dans l'action, le lieu passe en rouge avec explication au survol (comparaison tolérante ; exception Roll Out). +- **Contacts** : deux numéros de téléphone dans une action ne sont plus collés à l'affichage (désormais « 021 557 11 62 / 079 172 68 85 ») ; labels de fiche collés au contact séparés proprement. +- **Ouverture de fiche** : les interventions faites/clôturées se rouvrent à nouveau dans EasyVista (le lien interne est régénéré via la référence). +- Sections Matin / Après-midi / « Journée » harmonisées sur les deux vues ; éléments chevauchant midi non découpés ; catégorie « Autre » en violet foncé (fini le gris confondu avec les cartes faites). +- Interventions « faites » plus ré-analysées à chaque actualisation (économie réseau). + +### Dossier partagé : script PowerShell publié + +- Le script hôte (native messaging) est publié avec cette version et **téléchargeable depuis Paramètres → Dossier partagé**. + +### Qualité + +- Nettoyage complet : fonctions mortes retirées, aucun doublon de code, tous les journaux passés au logger maison (console propre en production), plus aucun emoji dans les logs, marqueurs de révision internes retirés. + +--- + ## v2026.5.45 — Dock latéral drag&drop, fix verdicts ghost, multi-onglets EZV résolu > Refonte de l'expérience drag&drop avec dock latéral pour parquer des interventions entre les jours, fix critique du parser de fiches qui marquait à tort des interventions terminées comme annulées, résolution des 6 issues ouvertes (multi-onglets EZV, absences récurrentes, popups épinglés, pompier absent), et nombreux ajustements d'ergonomie. diff --git a/README.md b/README.md index a4bb35d..204e2e7 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,7 @@ Les mises à jour sont **manuelles** : à chaque nouvelle release, retélécharg - **Vue classique** (depuis v1.0.0) : cards en grille, mode compact écran 24" (depuis v2026.5.30) - **Vue horizontale** (depuis v2026.5.32) : timeline par tech, sidebar verticale (depuis v2026.5.36) - Depuis v2026.5.40 : barre couleur catégorie + référence + ville sur chaque segment timeline +- **Vue horizontale « échelle de temps exacte » (depuis v2026.5.46)** : option Paramètres → Apparence — chaque intervention est posée à son heure réelle sur une bande continue (règle des heures fixe, lignes d'heures et demi-heures sur toute la hauteur, ligne rouge « maintenant », chevauchements empilés, poignée de déplacement colorée, zones libres survolables et cibles de drop précises) - Toggle Vue classique ↔ Vue horizontale via bouton ⊞ dans popup user-badge - Persistance localStorage (`view_mode`) @@ -69,8 +70,9 @@ Les mises à jour sont **manuelles** : à chaque nouvelle release, retélécharg - Badge user avec photo/initiales en topbar - Badge cliquable (depuis v2026.5.26) : popup avec ⚙ Paramètres + ⊞ Vue + compteur session MM:SS - Retry automatique en cas d'échec fetch user (60s, max 10 essais) -- Compteur de session EasyVista (tick 1s, depuis v5.0.0) +- Compteur de session EasyVista (tick 1s, depuis v5.0.0) — recalé sur la vraie valeur serveur (depuis v2026.5.46) - Reconnexion automatique +- Détection de session fiabilisée (v2026.5.46) : plus de faux « déconnecté » (cookie réécrit, erreurs transitoires, onglet EV facultatif avec la permission cookies) ### Admin et configuration - Mode admin : bouton ⚙ Paramètres dans popup user-badge (depuis v2026.5.25) @@ -113,7 +115,17 @@ Le numéro de **majeure** n'est **pas** un mois et **pas** un chiffre lié au ca ## Versions notables -### `v2026.5.45` (latest, 8 mai 2026) — Dock latéral drag&drop, fix verdicts ghost, multi-onglets EZV résolu +### `v2026.5.46` (latest, 9 juillet 2026) — Couche données v2, vue « échelle de temps exacte », session fiabilisée, réservations partagées + +- Refonte complète de la couche données : store unifié par jour, un seul verdict par intervention, synchronisation du dossier partagé en sous-dossier v2 +- Nouvelle disposition « échelle de temps exacte » pour la vue horizontale (option Apparence) +- Fin des faux « déconnecté » EasyVista (cookies, erreurs transitoires, contre-vérification serveur) +- Les informations des réservations (n°, lieu, catégorie) sont partagées entre tous les postes +- Douchette : vraie confirmation EasyVista + resynchronisation automatique après déplacement +- Recherche : opérateurs, pagination, mise en avant stabilisée +- Le script PowerShell du dossier partagé est publié et téléchargeable depuis Paramètres → Dossier partagé + +### `v2026.5.45` (8 mai 2026) — Dock latéral drag&drop, fix verdicts ghost, multi-onglets EZV résolu - **Dock latéral drag&drop** : nouvelle zone à droite pour parquer des interventions et les redéposer plus tard, avec apparition graduelle (peep-min/peep/expanded), délai 500 ms pour expand/collapse anti-flicker, card compacte (réf + durée + barre catégorie 4 px à gauche), bouton de retrait par appui long 2 s. - **Verdicts ghost** : fix critique du parser de fiche (les dates d’action ne sont plus cherchées aux indices fixes \`[8]\`/\`[9]\` mais détectées par scan regex pattern \`DD/MM/YYYY HH:MM:SS\`). Décorrélation des « Logs verbeux » et « Garder les disparitions » dans Paramètres → Diagnostics. - **Drag&drop bloqué** sur les interventions « Fait » (gris), « Clos » (vert ✓✓), statut Clôturé/Résolu/Terminé, et pendant l’analyse de disparition d’un ghost. diff --git a/build.sh b/build.sh old mode 100755 new mode 100644 index 0703d2e..4a620b0 --- a/build.sh +++ b/build.sh @@ -25,6 +25,9 @@ cp -r src/* dist/firefox/ python3 - <