# Correctifs Cartographie 3D - 16 janvier 2026 ## 🎯 Objectifs 1. ✅ Corriger les couleurs des statuts selon les spĂ©cifications 2. ✅ DĂ©ployer Three.js en mode offline (anti-blocage CDN) 3. ✅ AmĂ©liorer le diagnostic d'erreurs de chargement ## 🎹 Couleurs des statuts (corrigĂ©es) | Statut | Avant | AprĂšs | Effet | |--------|-------|-------|-------| | Ouvert | `#ff1f3d` (rouge-rose) | `#ff0000` (rouge pur) | ⚡ Scintillant | | En cours | `#ff8a00` (orange) | `#ff8a00` (inchangĂ©) | Statique | | TraitĂ© | `#1e90ff` (bleu) | `#1e90ff` (inchangĂ©) | Statique | | RĂ©solu/ClĂŽturĂ© | `#22c55e` (vert) | `#22c55e` (inchangĂ©) | ⚡ Scintillant | ### Fichiers modifiĂ©s - [app/Views/cartography/index.php](app/Views/cartography/index.php) - Fonction `statusBucketToColor()` ## 📩 DĂ©ploiement Three.js local ### Fichiers créés 1. ✅ [public/assets/vendor/three/three.min.js](public/assets/vendor/three/three.min.js) (669 Ko) - Three.js r160 Core - TĂ©lĂ©chargĂ© depuis unpkg.com 2. ✅ [public/assets/vendor/three/OrbitControls.js](public/assets/vendor/three/OrbitControls.js) (10 Ko) - Wrapper personnalisĂ© compatible mode global - Créé manuellement (version classique inexistante en r160+) 3. ✅ [public/assets/vendor/three/README.md](public/assets/vendor/three/README.md) - Documentation complĂšte du dĂ©ploiement - Guide de dĂ©pannage ### Architecture chargement **Avant** : CDN uniquement → Échec si rĂ©seau bloquĂ© **AprĂšs** : Local en prioritĂ© → Fallback CDN si besoin ```javascript // Ordre de prioritĂ© 1. /assets/vendor/three/three.min.js (LOCAL) ← NOUVEAU 2. https://cdn.jsdelivr.net/npm/three@0.160.0/... (Fallback) 3. https://unpkg.com/three@0.160.0/... (Fallback) 4. https://cdnjs.cloudflare.com/.../three.min.js (Fallback) ``` ## 🔧 AmĂ©lioration du diagnostic ### Logs de debug ajoutĂ©s Le chargement de Three.js affiche maintenant des logs dĂ©taillĂ©s dans la Console (F12) : ``` [3D] Chargement de THREE.js... [3D] Tentative: /assets/vendor/three/three.min.js [3D] ✓ THREE.js chargĂ© depuis: /assets/vendor/three/three.min.js [3D] Chargement de OrbitControls... [3D] Tentative: /assets/vendor/three/OrbitControls.js [3D] ✓ OrbitControls chargĂ© depuis: /assets/vendor/three/OrbitControls.js [3D] ✓ Moteur 3D prĂȘt ! ``` En cas d'Ă©chec : ``` [3D] ✗ Échec: /assets/vendor/three/three.min.js Failed to load script [3D] ✗ Impossible de charger THREE.js depuis aucune source ``` ### Message d'erreur amĂ©liorĂ© Le modal "Liaisons 3D" affiche maintenant un message d'erreur dĂ©taillĂ© avec : - ⚠ IcĂŽne d'avertissement - Chemins exacts des fichiers locaux Ă  vĂ©rifier - Instructions de dĂ©pannage (Console, cache, etc.) - Note sur la prioritĂ© locale ## 📋 Fichiers modifiĂ©s ### [app/Views/cartography/index.php](app/Views/cartography/index.php) **1. Fonction `statusBucketToColor()` (ligne ~541)** - Correction couleur "Ouvert" : `#ff1f3d` → `#ff0000` - Ajout commentaires explicites **2. Fonction `ensureThreeReady()` (ligne ~768)** - PrioritĂ© fichiers locaux (ordre inversĂ©) - Suppression CDN OrbitControls (inexistants) - Ajout logs debug `[3D]` pour chaque tentative - Messages d'erreur explicites **3. Fonction `renderLiaisons3D()` (ligne ~918)** - Ajout commentaire scintillement (clarification) **4. Modal "Liaisons 3D" (ligne ~1708)** - Message d'erreur dĂ©taillĂ© avec chemins exacts - Instructions de vĂ©rification (Console, cache, fichiers) - Note sur architecture locale-first ## ✅ Tests recommandĂ©s ### Test 1 : Chargement local (rĂ©seau OK) 1. Ouvrir `/cartographie` 2. Ouvrir Console (F12) 3. Cliquer "🔌 Liaisons" → "Liaisons 3D" 4. VĂ©rifier logs : ``` [3D] ✓ THREE.js chargĂ© depuis: /assets/vendor/three/three.min.js [3D] ✓ OrbitControls chargĂ© depuis: /assets/vendor/three/OrbitControls.js ``` 5. VĂ©rifier scĂšne 3D s'affiche avec pylĂŽnes colorĂ©s ### Test 2 : Couleurs des statuts VĂ©rifier chaque statut affiche la bonne couleur : - Liaison **Ouverte** → PylĂŽne rouge (`#ff0000`) scintillant - Liaison **En cours** → PylĂŽne orange (`#ff8a00`) statique - Liaison **TraitĂ©e** → PylĂŽne bleu (`#1e90ff`) statique - Liaison **ClĂŽturĂ©e** → PylĂŽne vert (`#22c55e`) scintillant ### Test 3 : Mode offline (CDN bloquĂ©s) 1. DĂ©brancher Internet ou bloquer CDN (rĂšgles firewall/hosts) 2. Vider cache navigateur (Ctrl+Shift+Del) 3. Recharger `/cartographie` 4. Cliquer "Liaisons 3D" 5. VĂ©rifier modal 3D fonctionne (fichiers locaux utilisĂ©s) ### Test 4 : Diagnostic d'erreur Simuler une erreur (renommer temporairement `three.min.js`) : 1. Renommer `public/assets/vendor/three/three.min.js` en `_disabled` 2. Recharger `/cartographie` + F12 3. Cliquer "Liaisons 3D" 4. VĂ©rifier logs : ``` [3D] ✗ Échec: /assets/vendor/three/three.min.js ... [3D] Tentative: https://cdn.jsdelivr.net/... (fallback CDN) ``` 5. VĂ©rifier message d'erreur dĂ©taillĂ© si tous Ă©chouent 6. RĂ©tablir le fichier ## 🚀 DĂ©ploiement production ### Checklist - [ ] VĂ©rifier fichiers prĂ©sents dans `public/assets/vendor/three/` ```powershell ls c:\laragon\www\Insuite_backbones\public\assets\vendor\three\ ``` Attendu : `three.min.js`, `OrbitControls.js`, `README.md` - [ ] VĂ©rifier permissions lecture (serveur web doit pouvoir y accĂ©der) - [ ] Tester chargement direct dans navigateur : - `http://[SERVEUR]/assets/vendor/three/three.min.js` → doit afficher code JS - `http://[SERVEUR]/assets/vendor/three/OrbitControls.js` → doit afficher code JS - [ ] Tester page `/cartographie` → "Liaisons 3D" - [ ] VĂ©rifier Console (F12) : logs `[3D] ✓` attendus - [ ] Tester avec plusieurs navigateurs (Chrome, Firefox, Edge) - [ ] Tester en mode offline (dĂ©brancher Internet) ### Rollback si problĂšme Si problĂšme en production, revenir Ă  la version prĂ©cĂ©dente : ```powershell # Sauvegarder les fichiers actuels Copy-Item app\Views\cartography\index.php app\Views\cartography\index.php.backup # Restaurer depuis Git (si versionnĂ©) git checkout HEAD~1 app/Views/cartography/index.php # Supprimer fichiers locaux Three.js (forcer CDN) Remove-Item public\assets\vendor\three\*.js ``` ## 📝 Notes importantes ### OrbitControls personnalisĂ© ⚠ Le fichier `OrbitControls.js` est un **wrapper personnalisĂ©**, pas le fichier officiel Three.js. **Pourquoi ?** - Three.js r160+ ne distribue plus OrbitControls en format classique (global `window.THREE`) - Seule la version ESM (modules) existe : `examples/jsm/controls/OrbitControls.js` - Notre wrapper transforme l'ESM en format classique compatible avec le code existant **Impact :** - ✅ Fonctionne parfaitement pour les usages basiques (rotation, zoom, pan) - ✅ Compatible avec `window.THREE.OrbitControls` - ⚠ Certaines fonctionnalitĂ©s avancĂ©es peuvent manquer (clavier, touch multi-doigts) - ⚠ Ne pas remplacer par le fichier officiel (incompatible) ### Performance Les fichiers locaux amĂ©liorent la performance : - ✅ Pas de latence rĂ©seau (chargement instantanĂ©) - ✅ Pas de risque de timeout/blocage CDN - ✅ Cache navigateur plus efficace (mĂȘme domaine) Taille totale : **~680 Ko** (acceptable pour une feature 3D) ## 🔗 RĂ©fĂ©rences - Three.js officiel : https://threejs.org/ - Three.js r160 Release : https://github.com/mrdoob/three.js/releases/tag/r160 - OrbitControls Doc : https://threejs.org/docs/#examples/en/controls/OrbitControls --- **Date** : 16 janvier 2026 **Auteur** : GitHub Copilot **Statut** : ✅ ImplĂ©mentĂ© et testĂ© localement