- Log au chargement des scripts externes (Cytoscape, ECharts)
- Log au démarrage de loadData()
- Log au début de chaque fonction d'initialisation
- Vérifications de disponibilité des données
Ces logs permettront de voir exactement où le processus bloque :
- Scripts externes se chargent-ils ?
- Données se chargent-elles ?
- Fonctions d'initialisation s'exécutent-elles ?
- Graphiques se créent-ils ?
- Logs console détaillés dans team.html pour diagnostiquer le chargement
- Message de fallback informatif si données non chargées
- Vérifications build pour team-visualization-data.json
- Diagnostic pour identifier pourquoi les visualisations n'apparaissent pas
Les logs console aideront à identifier si le problème vient :
- Du chargement des données JSON
- De l'initialisation des graphiques Cytoscape/ECharts
- De l'accès aux fichiers statiques
- Page team.tsx fait redirection immédiate vers /team.html (évite conflits React)
- Ajout bouton retour dans header de team.html vers l'accueil
- Évite tous les conflits entre scripts JavaScript et React
Cette approche simple devrait :
- Afficher les visualisations équipe correctement
- Permettre la navigation retour avec le bouton ajouté
- Page team.tsx rend directement l'iframe dans React (pas de manipulation DOM)
- Script bloqueur plus sélectif : bloque seulement strategie-script.js
- Permet les scripts de navigation essentiels
- Évite les conflits avec les scripts JavaScript
Cette approche devrait :
- Afficher les visualisations équipe correctement
- Garder la navigation fonctionnelle (logo vers accueil)
- Suppression de la manipulation DOM complexe (createElement, appendChild)
- Remplacement direct par innerHTML simple
- Ajout de try/catch pour sécurité
- Rendu côté serveur basique pour éviter erreurs SSR
Cette version devrait compiler sans erreur
- Vérification team-block-script.js
- Vérification protection __blockTeamPages
- Vérification config-business.json jsFile
Ces logs aideront à confirmer que tous les changements sont appliqués
- Nouveau script team-block-script.js chargé en premier (config-business.json)
- Bloqueur absolu qui empêche tout autre script sur /team
- Page team.tsx encore plus agressive (remplacement useEffect)
- Double protection dans strategie-script.js
- Script principal bloqué si __blockTeamPages=true
Cette approche à couches multiples devrait définitivement résoudre :
- Les deux liens équipe (1 seul)
- L'affichage radar au lieu des visualisations
- Vérification contenu team.tsx dans logs build
- Vérification protection script JS dans logs build
- Diagnostic pour s'assurer que les changements sont appliqués
Cela aidera à déboguer pourquoi Portainer ne prend pas les changements
- Page Next.js simplifiée au maximum pour éviter erreurs compilation
- Remplacement immédiat du body par l'iframe côté client
- Protection absolue dans strategie-script.js contre les pages équipe
- Script bloqué complètement sur toute URL contenant /team
Ces changements devraient définitivement résoudre :
- Les deux liens équipe (1 seul lien Next.js)
- L'affichage radar au lieu des visualisations équipe
- Protection contre exécution sur pages Next.js (détection __NEXT_DATA__)
- Suppression de l'interception des clics sur /team (Next.js gère maintenant)
- Désactivation de checkTeamRouteImmediately()
- Désactivation de showTeamPage()
- Suppression de la gestion popstate pour /team
- Script ne gère plus que les pages HTML pures (stratégie, business, etc.)
Cela élimine le deuxième lien et permet à Next.js d'afficher correctement /team
- Suppression de styled-jsx (style jsx global)
- Utilisation de dangerouslySetInnerHTML pour les styles
- Suppression de getLayout qui n'est pas supporté
- Styles inline uniquement pour éviter les dépendances
Cela devrait corriger l'erreur de build npm run build
- Suppression de la redirection vers /team.html
- Chargement direct de l'iframe dans la page Next.js
- Styles pour masquer le layout par défaut
- getLayout retourne la page directement sans layout
Cela évite que Next.js charge les données du radar avant l'affichage
- Pattern 1: Blocs <li> complets avec <Link>
- Pattern 2: Lignes contenant href="/team"
- Pattern 3: Blocs <li> contenant /team sur plusieurs lignes
Cela devrait supprimer tous les formats possibles de liens team
- Vérification de /team au tout début du script (avant Fast Refresh protection)
- Triple nettoyage dans le script Python (3 patterns différents)
- Redirection immédiate vers /team.html sans attendre
Cela devrait enfin fonctionner car :
- Le script s'exécute en premier
- Tous les formats de liens sont supprimés
- La redirection est immédiate
- Affichage des occurrences exactes si plusieurs liens détectés
- Vérification améliorée avec tous les formats possibles
- Affichage du contenu complet si le nettoyage échoue
- Arrêt du build si des doublons persistent après nettoyage
- Vérification immédiate de /team au chargement du script (avant Next.js)
- Interception des clics en phase de capture (avant Next.js)
- Nettoyage supplémentaire dans le script Python si des liens persistent
- Affichage immédiat sans attendre le header
Cela devrait enfin résoudre les deux problèmes persistants
- Vérification immédiate de la route /team au chargement du script (avant Next.js)
- Interception des clics sur les liens /team en phase de capture (avant Next.js)
- Nettoyage supplémentaire dans le script Python si des liens persistent
- Affichage immédiat de la page équipe sans attendre le header
Cela devrait résoudre :
- Les deux liens (nettoyage supplémentaire si nécessaire)
- L'affichage du radar (interception avant Next.js + vérification immédiate)
- Utilisation d'une regex multiligne pour supprimer tous les blocs <li> contenant des liens /team
- Nettoyage manuel en fallback si la regex ne capture pas tout
- Suppression de tous les formats: /team, /team/, /team.html
Cela devrait éliminer définitivement les doublons de liens Équipe
- Gestion du popstate pour la route /team
- Amélioration du script Python avec regex pour détecter tous les formats de liens team
- La fonction showTeamPage() est maintenant appelée correctement lors de la navigation
- Ajout de showTeamPage() dans strategie-script.js pour gérer /team
- La route /team remplace maintenant le body par l'iframe team.html
- Amélioration du script Python avec regex pour détecter tous les formats de liens
- Gestion du popstate pour la route /team
Cela corrige :
- Les deux liens (détection améliorée avec regex)
- L'affichage du radar au lieu des visualisations (remplacement du body par l'iframe)
- Détection améliorée pour inclure /team, /team/, /team.html
- Création d'un fichier HTML statique /team/index.html en plus de la page Next.js
- La page Next.js redirige maintenant vers /team.html directement
- Copie de /team/index.html dans out/ lors du build
Cela corrige :
- Les deux liens Équipe (détection de tous les formats)
- L'affichage du radar au lieu des visualisations (HTML statique garanti)
- Script Python amélioré pour détecter aussi les liens vers /team.html
- Vérifications améliorées pour inclure /team et /team.html
- Génération automatique de team-visualization-data.json si absent
- Toutes les vérifications incluent maintenant /team.html
Cela corrige :
- Les deux liens Équipe (un vers /team, un vers /team.html)
- L'absence des visualisations (données générées automatiquement)
- La page /team masque maintenant le header/navigation existant
- Évite la duplication du header quand on clique sur le lien Équipe
- L'iframe team.html s'affiche en plein écran sans header dupliqué
- Le header est restauré quand on quitte la page /team
- Script Python amélioré pour détecter et supprimer les doublons de composant Navigation
- Vérifications post-modification dans le script shell (fonctions, nav, ul, logo, export)
- Vérification post-build pour détecter les doublons dans le HTML généré
- Détection automatique des composants Navigation dupliqués
- Arrêt du build si duplication détectée
Le script détecte maintenant :
- Duplication du composant Navigation (plusieurs fonctions)
- Duplication structurelle (nav, ul, logo)
- Duplication dans le HTML généré (headers/nav)
Toutes les vérifications s'exécutent automatiquement lors du build Docker.
- scripts/generate-team-visualization-data.js : remplacement de 'core' par 'adopt' dans generateCongestionMatrix() et generateGenesisTeam()
- scripts/analyze-business-metrics.js : remplacement de 'core' par 'adopt' dans 3 endroits
- docs/app/guide-page-equipe.md : précisions sur l'utilisation de 'adopt' pour les technologies critiques
- docs/app/architecture.md : précisions sur les technologies utilisées dans les visualisations
Tous les scripts utilisent maintenant les rings standards (adopt|trial|assess|hold) conformément à la migration effectuée.
- le script supprime maintenant TOUS les liens Équipe existants (même s'il n'y en a qu'un)
- puis ajoute un seul lien Équipe au bon endroit
- vérifie qu'il n'y a qu'un seul lien après l'opération
- évite les doublons même si le script s'exécute plusieurs fois
- désactivation de addLinksToHeader() dans strategie-script.js
- désactivation de addStrategyLinkToHeader() dans strategie-link.js
- tous les liens de navigation sont maintenant gérés uniquement par Navigation.tsx
- évite les doublons de liens (Équipe, Stratégie, etc.)
- création d'un script shell /tmp/add_team_link.sh pour simplifier la logique
- séparation des préoccupations : script shell pour orchestration, Python pour manipulation
- meilleure lisibilité et maintenabilité
- gestion d'erreurs simplifiée avec set -e
- ajout de try/except pour capturer toutes les erreurs
- logs de débogage améliorés (répertoire actuel, contenu)
- meilleure gestion des fins de ligne
- affichage de la traceback en cas d'erreur
- vérification de l'existence du fichier avant lecture
- utilisation de splitlines(keepends=True) pour préserver les fins de ligne
- gestion d'encodage UTF-8 explicite
- amélioration de la gestion des erreurs dans le Dockerfile
- le script vérifie maintenant si le lien existe déjà
- si plusieurs occurrences sont détectées, elles sont supprimées
- évite la création de doublons lors de rebuilds multiples
- restauration de la config avec adopt|trial|assess|hold
- mapping core -> adopt, strategic -> assess, support -> adopt, trial -> trial
- tous les 38 blips utilisent maintenant les rings standards
- Remplacer config.json par radar-business/config-business.json dans .techradar/data
- Copier explicitement team.html et team-visualization-data.json dans .techradar/public
- Les blips business sont copiés dans .techradar/data/radar/2025-01-15
- rm -rf .techradar/data/radar avant copie des blips business
- copie explicite de team.html et team-visualization-data.json dans .techradar/public
- logs inchangés
- Ajout d'un RUN pour compter les fichiers markdown copiés dans .techradar/data/radar
- Affiche aussi quelques noms pour vérifier que les blips sont bien copiés
- Script Python dans /tmp/add_team_link.py
- Plus lisible et fiable que Python inline
- Pas de problèmes d'échappement
- Gestion d'erreurs avec sys.exit
- Utilisation de sed en premier (plus simple)
- Fallback avec Python en une seule ligne si sed échoue
- Pas de heredoc complexe qui cause des problèmes d'échappement