fix: migration des scripts de 'core' vers 'adopt' et mise à jour documentation

- 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.
This commit is contained in:
syoul
2025-12-09 11:05:43 +01:00
parent 005ed9ee7f
commit 66fe78f86e
4 changed files with 19 additions and 14 deletions

View File

@@ -221,8 +221,8 @@ Le script `scripts/generate-team-visualization-data.js` :
- Lit les technologies depuis `radar-business/2025-01-15/*.md`
- Génère `public/team-visualization-data.json` avec :
- Données réseau (nodes/edges) pour Cytoscape.js
- Matrice de congestion pour ECharts
- Équipe de genèse MVP avec statistiques
- Matrice de congestion pour ECharts (technologies `adopt` uniquement - anciennement "core")
- Équipe de genèse MVP avec statistiques (basée sur les technologies `adopt`)
Ce fichier est utilisé par `public/team.html` pour les visualisations interactives.

View File

@@ -63,7 +63,7 @@ La page propose trois visualisations complémentaires :
**Fonctionnalités** :
- **Axe X** : Membres de l'équipe
- **Axe Y** : Technologies
- **Axe Y** : Technologies (uniquement les technologies "adopt" - anciennement "core")
- **Couleurs** :
- Vert : Technologie maîtrisée par le membre
- Rouge : Technologie non maîtrisée
@@ -74,6 +74,8 @@ La page propose trois visualisations complémentaires :
- 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
@@ -83,7 +85,7 @@ La page propose trois visualisations complémentaires :
**Fonctionnalités** :
- **Sélection automatique** : Algorithme qui sélectionne les membres selon :
- Disponibilité >= 50%
- Couverture maximale des technologies critiques
- Couverture maximale des technologies critiques (technologies avec `ring: adopt` - anciennement "core")
- Équilibre des compétences
- **Statistiques** :
- Nombre de membres sélectionnés
@@ -242,9 +244,11 @@ Les données sont chargées depuis `/team-visualization-data.json` via `fetch()`
Pour l'équipe de genèse MVP, le seuil est fixé à **50%**. Pour le modifier :
1. Ouvrir `scripts/generate-team-visualization-data.js`
2. Modifier la constante `MIN_AVAILABILITY` dans la fonction `generateGenesisTeam()`
2. Modifier le filtre `m.availability >= 50` dans les fonctions `generateCongestionMatrix()` et `generateGenesisTeam()`
3. 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
1. Modifier `public/team.html`

View File

@@ -136,8 +136,8 @@ function calculateMetrics(blips) {
});
}
// Technologies critiques (core + high impact)
if (m.ring === 'core' && m.businessImpact === 'high') {
// Technologies critiques (adopt + high impact) - anciennement "core"
if (m.ring === 'adopt' && m.businessImpact === 'high') {
metrics.criticalTechnologies.push({
name: m.title,
quadrant: m.quadrant,
@@ -174,8 +174,8 @@ function identifyPatterns(blips, metrics) {
for (const blip of blips) {
const m = blip.metadata;
// Technologies critiques non différenciantes (commodité critique)
if (m.ring === 'core' && m.differentiation === 'low') {
// Technologies critiques non différenciantes (commodité critique) - anciennement "core"
if (m.ring === 'adopt' && m.differentiation === 'low') {
patterns.criticalNonDifferentiating.push({
name: m.title,
quadrant: m.quadrant,
@@ -202,8 +202,8 @@ function identifyPatterns(blips, metrics) {
});
}
// Gaps de compétences critiques
if (m.skillGap === 'high' && (m.ring === 'core' || m.businessImpact === 'high')) {
// Gaps de compétences critiques - anciennement "core", maintenant "adopt"
if (m.skillGap === 'high' && (m.ring === 'adopt' || m.businessImpact === 'high')) {
patterns.skillGaps.push({
name: m.title,
ring: m.ring,

View File

@@ -212,8 +212,8 @@ function generateNetworkData(technologies, members) {
// Générer la matrice de congestion
function generateCongestionMatrix(technologies, members) {
// Filtrer technologies core uniquement
const coreTechs = technologies.filter(t => t.ring === 'core').sort((a, b) => {
// Filtrer technologies adopt uniquement (anciennement "core")
const coreTechs = technologies.filter(t => t.ring === 'adopt').sort((a, b) => {
// Trier par businessImpact puis par coverage
const impactOrder = { 'high': 3, 'medium': 2, 'low': 1 };
const impactDiff = (impactOrder[b.businessImpact] || 0) - (impactOrder[a.businessImpact] || 0);
@@ -261,7 +261,8 @@ function generateCongestionMatrix(technologies, members) {
// Générer l'équipe de genèse MVP
function generateGenesisTeam(technologies, members) {
const coreTechs = technologies.filter(t => t.ring === 'core');
// Technologies adopt (anciennement "core") - technologies fondamentales en production
const coreTechs = technologies.filter(t => t.ring === 'adopt');
const availableMembers = members.filter(m => m.availability >= 50);
const genesisTeam = [];