- 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.
12 KiB
Guide de la Page Équipe & Technologies
Introduction
La page Équipe & Technologies (/team) est une interface de visualisation interactive qui permet d'analyser les compétences de l'équipe, d'identifier les congestions (technologies avec peu de personnes) et de composer une équipe de genèse pour un MVP.
Cette page est accessible depuis le radar via le lien "👥 Équipe" dans le header de navigation.
Architecture Technique
La page utilise une architecture hybride :
- Page Next.js :
/team(route Next.js générée automatiquement parDockerfile.business) - Contenu HTML : Chargé via iframe depuis
/team.html(fichier statique) - Navigation : Lien intégré directement dans le composant React
Navigation.tsx(modifié par script Python)
Cette approche combine les avantages de Next.js (routing, intégration native) avec la flexibilité d'un HTML statique autonome.
Fichiers impliqués
- Page Next.js :
.techradar/src/pages/team.tsx(créée parDockerfile.business) - Page HTML :
public/team.html(fichier statique avec visualisations) - Données JSON :
public/team-visualization-data.json(généré parscripts/generate-team-visualization-data.js) - Navigation :
.techradar/src/components/Navigation/Navigation.tsx(modifiée par script Python)
Accès
- URL :
/team(route Next.js) - Fichier HTML source :
/team.html(servi statiquement) - Lien de navigation : Disponible dans le header du radar (bouton "👥 Équipe")
- Authentification : Même protection que le radar (mot de passe
laplank-radar)
Fonctionnalités
La page propose trois visualisations complémentaires :
1. Graphe Réseau
Objectif : Visualiser les connexions entre technologies et membres de l'équipe.
Fonctionnalités :
- Nœuds technologies :
- Couleur selon le ring (Adopt=vert, Trial=bleu, Assess=orange, Hold=rouge)
- Taille proportionnelle au nombre de personnes maîtrisant la technologie
- Label avec le nom de la technologie
- Nœuds membres :
- Couleur verte
- Taille proportionnelle à la disponibilité
- Label avec le nom du membre
- Liens :
- Connectent les technologies aux membres qui les maîtrisent
- Épaisseur selon le niveau de compétence
Utilisation :
- Zoom : Molette de la souris ou pincement sur mobile
- Pan : Clic gauche + glisser
- Tooltip : Survol d'un nœud pour voir les détails
Technologie : Cytoscape.js avec le layout CoSE-Bilkent
2. Matrice de Congestion
Objectif : Identifier les technologies avec faible couverture d'équipe (congestions).
Fonctionnalités :
- Axe X : Membres de l'équipe
- Axe Y : Technologies (uniquement les technologies "adopt" - anciennement "core")
- Couleurs :
- Vert : Technologie maîtrisée par le membre
- Rouge : Technologie non maîtrisée
- Intensité selon le niveau de compétence
Utilisation :
- Cliquer sur une cellule pour voir les détails
- Filtrer par technologie ou membre
- Identifier visuellement les technologies avec peu de personnes
Note : Seules les technologies avec ring: adopt sont affichées dans la matrice, car ce sont les technologies fondamentales en production (anciennement classées comme "core").
Technologie : ECharts (heatmap)
3. Équipe de Genèse MVP
Objectif : Composer automatiquement une équipe minimale pour un MVP en 2 mois avec mobilisation quotidienne.
Fonctionnalités :
- Sélection automatique : Algorithme qui sélectionne les membres selon :
- Disponibilité >= 50%
- Couverture maximale des technologies critiques (technologies avec
ring: adopt- anciennement "core") - Équilibre des compétences
- Statistiques :
- Nombre de membres sélectionnés
- Pourcentage de technologies couvertes
- Technologies critiques non couvertes
- Recommandations :
- Technologies à former
- Compétences manquantes
- Risques identifiés
Technologie : Algorithme JavaScript avec affichage HTML/CSS
Données
Sources de données
- Profils équipe :
docs/data/team/*.md(fichiers Markdown avec métadonnées YAML) - Technologies :
radar-business/2025-01-15/*.md(blips avec métadonnées)
Génération des données
Le script scripts/generate-team-visualization-data.js :
- Lit les profils équipe depuis
docs/data/team/*.md - Lit les technologies depuis
radar-business/2025-01-15/*.md - Génère
public/team-visualization-data.jsonavec :network: Données réseau (nodes/edges) pour Cytoscape.jscongestionMatrix: Matrice de congestion pour EChartsgenesisTeam: Équipe de genèse MVP avec statistiquestechnologies: Liste des technologies avec métadonnéesmembers: Liste des membres avec compétences
Exécuter la génération
node scripts/generate-team-visualization-data.js
Important : Régénérer les données après chaque modification des profils équipe ou des technologies.
Structure des profils équipe
Les profils sont stockés dans docs/data/team/*.md avec le format suivant :
---
name: "pseudo"
fullName: "Nom complet"
role: "Rôle"
availability: 50
seniorityLevel: expert
yearsExperience: 8
joinDate: "2016-01"
interests: ["Mobile", "Infrastructure"]
skills:
- name: "Flutter"
level: expert
years: 4
lastUsed: "2024-12"
- name: "Python"
level: intermediate
years: 5
lastUsed: "2024-11"
softSkills:
- "Autonomie"
- "Pédagogie"
projects:
- "Projet1"
- "Projet2"
---
Description du membre de l'équipe.
Métadonnées
- name : Pseudo unique (utilisé comme identifiant)
- fullName : Nom complet
- role : Rôle dans l'équipe
- availability : Disponibilité en pourcentage (0-100)
- seniorityLevel : Niveau de séniorité (junior, intermediate, senior, expert)
- yearsExperience : Années d'expérience totales
- joinDate : Date d'arrivée (format YYYY-MM)
- interests : Centres d'intérêt
- skills : Liste des compétences techniques avec niveau, années et dernière utilisation
- softSkills : Compétences comportementales
- projects : Projets sur lesquels le membre a travaillé
Processus de build
Dans le Dockerfile
- Création de la page Next.js : Génère
.techradar/src/pages/team.tsx - Modification de Navigation : Ajoute le lien "👥 Équipe" dans
.techradar/src/components/Navigation/Navigation.tsxvia script Python - Copie des fichiers : Copie
public/team.htmletpublic/team-visualization-data.jsonvers.techradar/public/ - Build Next.js : Génère les fichiers statiques dans
out/ - Vérification : Le script
start-business.shvérifie que les fichiers sont dansout/et les copie si nécessaire
Script Python pour Navigation.tsx
Le script /tmp/add_team_link.py dans le Dockerfile :
- Supprime tous les liens Équipe existants : Évite les doublons
- Ajoute un seul lien Équipe : Après le lien "Vue d'ensemble"
- Vérifie le résultat : S'assure qu'il n'y a qu'un seul lien
Important : Les scripts JavaScript (strategie-script.js, strategie-link.js) qui ajoutaient des liens dans le header ont été désactivés pour éviter les doublons.
Technologies utilisées
Bibliothèques JavaScript
- Cytoscape.js : Graphique réseau interactif
- Cytoscape CoSE-Bilkent : Layout algorithm pour le graphique
- ECharts : Matrice de congestion (heatmap)
- Vanilla JavaScript : Logique de l'équipe de genèse MVP
Chargement des données
Les données sont chargées depuis /team-visualization-data.json via fetch() au chargement de la page.
Utilisation
Visualiser les compétences
- Ouvrir l'onglet "Graphe Réseau"
- Explorer les connexions entre technologies et membres
- Identifier les technologies avec beaucoup de personnes (gros nœuds)
- Identifier les technologies avec peu de personnes (petits nœuds = congestions)
Identifier les congestions
- Ouvrir l'onglet "Matrice Congestion"
- Repérer les colonnes (technologies) avec beaucoup de cases rouges
- Ces technologies ont une faible couverture d'équipe
- Actions recommandées :
- Former l'équipe
- Recruter
- Documenter
Composer une Équipe pour un Projet
- Ouvrir l'onglet "Équipe Genèse MVP"
- L'équipe est automatiquement sélectionnée selon :
- Disponibilité >= 50%
- Couverture maximale des technologies
- Consulter les statistiques :
- Technologies couvertes
- Technologies manquantes
- Recommandations
Personnalisation
Modifier le seuil de disponibilité
Pour l'équipe de genèse MVP, le seuil est fixé à 50%. Pour le modifier :
- Ouvrir
scripts/generate-team-visualization-data.js - Modifier le filtre
m.availability >= 50dans les fonctionsgenerateCongestionMatrix()etgenerateGenesisTeam() - Régénérer les données :
node scripts/generate-team-visualization-data.js
Note : Les technologies critiques utilisées pour la sélection sont celles avec ring: adopt (anciennement "core"). Pour modifier ce critère, changer le filtre t.ring === 'adopt' dans generateGenesisTeam().
Ajouter de nouvelles visualisations
- Modifier
public/team.html - Ajouter un nouvel onglet dans la section
.tabs - Ajouter le contenu dans une nouvelle section
.tab-content - Implémenter la logique JavaScript pour charger et afficher les données
Maintenance
Mettre à jour les profils équipe
- Modifier les fichiers dans
docs/data/team/*.md - Régénérer les données :
node scripts/generate-team-visualization-data.js - Commiter les deux fichiers (profils + données JSON)
Ajouter un nouveau membre
- Créer un fichier
docs/data/team/pseudo.md - Remplir toutes les métadonnées
- Régénérer les données
- Vérifier que le membre apparaît dans les visualisations
Mettre à jour les compétences
- Modifier la section
skillsdans le profil équipe - Régénérer les données
- Vérifier que les connexions sont mises à jour dans le graphe
Troubleshooting
Le lien "👥 Équipe" n'apparaît pas dans le header
Causes possibles :
- Le script Python n'a pas été exécuté
- Le fichier Navigation.tsx n'a pas été trouvé
- Erreur dans le script Python
Solutions :
- Vérifier les logs Docker lors du build
- Vérifier que le fichier
.techradar/src/components/Navigation/Navigation.tsxexiste - Rebuild avec
--no-cachepour forcer l'exécution du script
La page /team retourne 404
Causes possibles :
- Le fichier
team.htmln'est pas dansout/ - La page Next.js
team.tsxn'a pas été créée
Solutions :
- Vérifier que
public/team.htmlexiste - Vérifier que le Dockerfile a bien créé
.techradar/src/pages/team.tsx - Vérifier que
team.htmla été copié dansout/
Les visualisations sont vides
Causes possibles :
- Le fichier
team-visualization-data.jsonn'a pas été généré - Le fichier n'est pas accessible depuis
/team.html
Solutions :
- Générer les données :
node scripts/generate-team-visualization-data.js - Vérifier que le fichier existe dans
public/team-visualization-data.json - Vérifier que le fichier a été copié dans
out/ - Vérifier la console du navigateur pour les erreurs JavaScript
Les données ne sont pas à jour
Solution : Régénérer les données après chaque modification :
node scripts/generate-team-visualization-data.js
Fichiers associés
- Page HTML :
public/team.html(interface utilisateur) - Données JSON :
public/team-visualization-data.json(généré) - Script de génération :
scripts/generate-team-visualization-data.js - Profils équipe :
docs/data/team/*.md(fichiers Markdown avec métadonnées YAML) - Technologies :
radar-business/2025-01-15/*.md(blips avec métadonnées) - Page Next.js :
.techradar/src/pages/team.tsx(générée par le Dockerfile) - Navigation modifiée :
.techradar/src/components/Navigation/Navigation.tsx(modifiée par le Dockerfile)
Ressources
- Guide de développement
- Guide de déploiement
- Guide de dépannage
- Documentation Cytoscape.js : https://js.cytoscape.org/
- Documentation ECharts : https://echarts.apache.org/