Files
Planification/README.md
T
2026-04-20 09:13:20 +02:00

5.4 KiB
Raw Permalink Blame History

Planning techniciens — Vue claire (v4.1.2)

Extension Chrome/Brave/Edge pour afficher le planning techniciens EasyVista (itsma.etat-de-vaud.ch / itsma.vd.ch) dans une vue plus lisible.

Nouveautés v4.1.2

  • Vraies infos contact/lieu dans les cartes : les attributs attr1/attr2 du XML contiennent les infos saisies à la planification, qui ne sont pas toujours à jour (le tech a pu corriger le contact/lieu avant intervention). Désormais, pour chaque intervention, on fetch AUSSI le xhr2 en arrière-plan (en plus de la fiche), ce qui apporte les vraies infos validées. La carte se met à jour automatiquement quand elles arrivent.
  • Clic ouverture restauré : retour à la logique v4 (fetch fiche à la volée
    • extraction checksum + construction URL avec sender adéquat). Le checksum est pré-rempli pendant le fetch arrière-plan, donc au clic l'ouverture est instantanée dans la plupart des cas.

Nouveautés v4.1

  • Fetch des fiches séquentiel (1 par 1) au lieu de 5 workers en parallèle. Le serveur EasyVista sérialise les requêtes de toute façon, donc le parallélisme n'apporte rien. Et surtout : quand tu changes de date pendant le fetch, l'abort est instantané car il n'y a qu'une seule requête en vol au maximum.
  • Cache incrémental : le cache est sauvé toutes les 5 fiches pendant le fetch, pas juste à la fin. Si tu changes de date avant que tout soit fini, les statuts déjà récupérés sont conservés.

Nouveautés v4

Chargement ~50× plus rapide. Le nombre de requêtes au serveur EasyVista passe de ~100 par chargement à 1 seule requête pour l'affichage principal.

Concrètement, en v3 un chargement initial faisait :

  • 1 fetch XML planning (calendar_block)
  • ~40 fetches planning_xhr_2.php pour les lieux/contacts
  • ~40 fetches de fiches HTML pour les catégories/refs/statuts
  • jusqu'à ~40 fetches de l'API timeline

Total : ~120 requêtes, 10+ Mo, 8 à 15 secondes selon la charge serveur.

En v4, on a découvert que le XML initial calendar_block contient déjà dans ses attributs attr1/attr2/attr3 le contact, le lieu et la catégorie complète de chaque intervention, et la ref dans le textContent du nœud. Toutes ces infos qu'on allait chercher ailleurs étaient en fait dans la toute première réponse, ignorées par le code.

Résultat : le premier rendu complet arrive en moins d'une seconde. Les fiches individuelles ne sont plus fetchées qu'en arrière-plan, uniquement pour le statut "Clôturé/Résolu" et le commentaire technicien.

Lazy-load au survol. Le texte détaillé d'une intervention (Problème, À faire, Matériel, TFS ancien/nouveau poste...) n'est chargé qu'au premier survol de la ligne, seulement pour l'intervention survolée. Imperceptible pour l'utilisateur, énorme pour le serveur.

Concurrence réduite. Le pic de requêtes parallèles passe de 15 à 5 workers, pour ménager le serveur EasyVista qui a tendance à saturer sous les rafales.

Toute l'interface utilisateur est strictement identique à la v3 — on n'a changé que ce qu'il y a sous le capot.

Hérité des versions précédentes

  • Navigation par date : ◀ ▶ et sélecteur
  • Détection automatique des interventions closes (✓ vert, fond vert)
  • Cache persistant 7 jours
  • Ghosts : les interventions disparues d'EasyVista restent visibles dans la vue
  • Refresh auto 12h et 15h
  • Annulation coopérative (bouton "Arrêter")
  • Thème clair/sombre

Installation

  1. Décompresser le zip
  2. Ouvrir Chrome, chrome://extensions/
  3. Activer Mode développeur (en haut à droite)
  4. Charger l'extension non empaquetée → sélectionner le dossier planning-extension-v4

Si tu avais déjà la v3 installée, tu peux la supprimer avant — les caches des deux versions sont compatibles (même format).

Utilisation

  1. Se connecter à EasyVista dans un onglet (itsma.etat-de-vaud.ch ou itsma.vd.ch)
  2. Cliquer sur l'icône de l'extension (depuis n'importe quel onglet)
  3. La vue claire s'ouvre dans un nouvel onglet

Comment ça marche techniquement

  • background.js fait les fetches en arrière-plan (via le cookie de session EasyVista).
  • L'extension détecte automatiquement le PHPSESSID depuis un onglet EasyVista ouvert.
  • v4 : le XML planning_xhr.php?div=calendar_block suffit à afficher tout l'essentiel. Les champs attr1/attr2/attr3 contiennent contact, lieu et catégorie. Le textContent du nœud contient la ref (S260.../I260...).
  • Les fiches individuelles (index.php?formEvent=...) ne sont fetchées que pour obtenir le statut Clôturé/Résolu et le commentaire technicien.
  • Le texte d'action détaillé (Problème/À faire/Matériel/...) est récupéré en lazy-load via planning_xhr_2.php?id=ACTIONID au premier survol.
  • Le cache est stocké dans chrome.storage.local (local à ta machine).
  • Aucune donnée n'est envoyée ailleurs que vers itsma.etat-de-vaud.ch et itsma.vd.ch.

Limitations connues

  • Nécessite un onglet EasyVista ouvert (même en arrière-plan) pour fonctionner
  • Fonctionne uniquement sur l'intranet cantonal (les fetches échoueront en externe)
  • Les 8 IDs des techs sont en dur dans le code (si quelqu'un quitte/arrive dans l'équipe, il faut mettre à jour viewer.js ligne ~22)
  • Le statut "Clôturé/Résolu" met quelques secondes à apparaître après le chargement initial (fetch des fiches en arrière-plan, concurrence 5)