- README.md: Structure fichiers mise a jour
- configuration.md: Ajout section script page equipe
- troubleshooting.md: Mise a jour diagnostic page equipe
- guide-page-equipe.md: Architecture basee sur team-block-script.js
- architecture.md: Mise a jour structure et fonctionnement
- deploiement.md: Scripts Python pour Navigation et _document
- team-block-script.js: Utilise layout cose integre (pas cose-bilkent)
- Nouvelle approche: remplace le DOM apres chargement (defer-compatible)
- Charge Cytoscape, ECharts dynamiquement
- Initialise les 3 visualisations: graphe reseau, matrice congestion, equipe genese
- Ajout de patch_document.py pour inclure le script dans _document.tsx
- Le flag --single redirigeait toutes les routes vers index.html
- Maintenant /team/ est correctement servi via /team/index.html
- Le script team-block-script.js sera chargé côté client
- Plus de dépendance aux fichiers externes HTML
- Utilise sessionStorage pour éviter les boucles
- document.write() pour remplacer complètement la page
La page team.tsx avait un meta refresh vers /team.html
Le reverse proxy redirige /team.html vers /team = boucle infinie
Solution: team.tsx retourne null, le contenu est géré par
team-block-script.js via iframe avec data URL
document.write() après chargement cause un rechargement de page.
Solution: créer un iframe plein écran avec data:text/html;base64
L'iframe est un contexte isolé, pas de boucle possible.
Le reverse proxy intercepte toutes les requêtes.
Solution: encoder le HTML en base64 et le décoder avec atob()
Plus aucune requête HTTP pour le contenu de la page équipe.
Le reverse proxy redirige /team.html vers /team, créant une boucle.
Solution: fetch le contenu de team.html et l'injecter dans le DOM
avec document.write() pour remplacer complètement la page.
Les anciens fichiers dans .techradar/ local étaient copiés
dans le conteneur Docker, écrasant les nouveaux fichiers.
Cela causait le bug où team-block-script.js restait ancien.
- Ne plus vérifier si le fichier existe (les rings pourraient être obsolètes)
- Régénérer systématiquement avec les bons rings adopt/trial/assess/hold
- Mise à jour des données de visualisation avec les nouveaux rings
- Utilise meta http-equiv=refresh pour rediriger même sans JS
- Ajoute script inline dans Head pour redirection JS immédiate
- Fonctionne avec l'export statique Next.js
- Garder le config.default.json original du package
- Ne copier que vers config.json (pas config.default.json)
- Évite erreur TypeScript 'Property icon does not exist on type never'
Le type de social est inféré depuis config.default.json
- Page team.tsx redirige maintenant vers team.html
- Évite les imports cytoscape/echarts qui causent MODULE_NOT_FOUND
- team.html contient les vraies visualisations avec chargement CDN
Corrige l'erreur npm run build dans Docker
- Ajout @ts-nocheck en tête de team-page.tsx
- Suppression des imports dynamiques inutilisés (évite noUnusedLocals)
Réduit les risques d'échec npm run build
- Retrait de l'exclusion /docker dans .dockerignore
- Permet de copier add_team_link.* et team-page.tsx durant le build
Corrige l'erreur 'checksum ... /docker/add_team_link.sh not found'
- Déplace add_team_link.py et add_team_link.sh dans docker/
- Remplace les heredocs par des COPY dans Dockerfile.business
- Évite l'erreur de parsing 'unknown instruction: import'
Compatibilité Portainer sans syntaxe heredoc.
- Ajout docker/team-page.tsx avec le composant React complet
- Remplacement du heredoc dans Dockerfile.business par un COPY
- Évite les erreurs de parsing Docker (unknown instruction: import)
Assure la compatibilité Portainer sans syntaxe heredoc
- Ajout directive # syntax=docker/dockerfile:1.4
- Permet l'usage des heredocs dans le Dockerfile
Doit supprimer l'erreur 'unknown instruction: import' lors du parsing
- Remplace HTML intégré par vraie page React
- Import dynamique de Cytoscape et ECharts (évite erreurs SSR)
- États React pour gestion des onglets et données
- Refs pour containers des graphiques
- Installation dépendances cytoscape et echarts-for-react
- Gestion erreurs et états de chargement
Résout problème scripts non exécutés dans contexte React
- Suppression copie team-static.html du Dockerfile (plus nécessaire)
- Suppression vérifications team-static.html des logs de build
- Suppression fichier public/team-static.html (intégration directe)
Nettoyage suite à l'intégration directe du HTML dans la page React
- Page team.tsx charge directement le HTML des visualisations
- Plus de redirection, le contenu est rendu dans React
- Évite les conflits de routing Next.js
- Scripts Cytoscape/ECharts intégrés directement
- Contenu team-visualization-data.json chargé depuis la page React
Cette approche contourne complètement les problèmes de déploiement statique
- Déplacement de la copie de team-static.html dans la section principale de copie
- Déplacement de la copie de team-visualization-data.json dans la section principale
- Suppression des copies dupliquées qui étaient mal placées
- Maintenant les fichiers seront copiés correctement lors du build
Ces fichiers étaient absents du déploiement, causant l'affichage du radar au lieu des visualisations équipe
- Nouvelle page team-static.html : page HTML pure sans React
- team.tsx redirige simplement vers /team-static.html
- Évite tous les conflits d'injection DOM dans React
- team-static.html copié dans out/ lors du build
- Contient tous les logs de débogage et visualisations équipe
Cette approche contourne complètement les problèmes React/DOM
- Au lieu de rediriger, la page Next.js charge et injecte team.html
- Exécution des scripts JavaScript et injection du CSS
- Gestion d'erreur si team.html ne se charge pas
- Logs détaillés pour diagnostiquer le processus
Cette approche évite les problèmes de redirection et assure que :
- team.html se charge correctement
- Les scripts s'exécutent dans le contexte Next.js
- Les visualisations s'affichent
- 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