From 2c57bf379cf8ee96e88b702cf9c4c89d9150fa68 Mon Sep 17 00:00:00 2001
From: syoul
Date: Tue, 2 Dec 2025 19:01:39 +0100
Subject: [PATCH] =?UTF-8?q?Bouton=20strat=C3=A9gie=20en=20haut=20de=20page?=
=?UTF-8?q?=20+=20affichage=20du=20contenu=20complet?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Bouton déplacé en haut de page (header ou barre fixe)
- Contenu complet de strategie-evolution-technique.md intégré
- Conversion Markdown vers HTML avec styles
- Script serve-business.sh configuré pour port 3004
---
public/strategie-script.js | 481 +++++++++++++++++++++++++++++++++++--
scripts/serve-business.sh | 4 +-
2 files changed, 469 insertions(+), 16 deletions(-)
diff --git a/public/strategie-script.js b/public/strategie-script.js
index ae3d870..9ddd32a 100644
--- a/public/strategie-script.js
+++ b/public/strategie-script.js
@@ -1,7 +1,334 @@
-// Script pour la stratégie - version inline pour injection directe
+// Script pour la stratégie - avec contenu complet du fichier Markdown
(function() {
+ // Contenu de la stratégie (extrait de docs/strategie-evolution-technique.md)
+ const strategieMarkdown = `# Stratégie d'Évolution Technique - Laplank
+
+Date: 02/12/2025
+
+## Vision Technique à 3 Ans
+
+### Objectifs Stratégiques
+
+1. **Renforcer la différenciation** : Maintenir et développer les technologies qui créent un avantage concurrentiel
+2. **Réduire les risques** : Éliminer les dépendances critiques et les gaps de compétences
+3. **Optimiser les coûts** : Réduire les coûts de maintenance des technologies de commodité
+4. **Innover** : Explorer et adopter les technologies émergentes prometteuses
+5. **Infrastructure décentralisée** : Développer l'expertise et l'adoption de ThreeFold pour une infrastructure autonome et résiliente
+
+## Roadmap d'Évolution
+
+### Axe Transversal : Data Visualization & UX (NOUVEAU)
+
+**Objectif** : Devenir la référence en termes de transparence et d'accessibilité des données blockchain/crypto et infrastructure.
+
+**Technologies Clés** :
+- **D3.js / ECharts** : Pour des visualisations avancées et interactives.
+- **Cytoscape.js** : Pour visualiser la "Toile de Confiance" (Web of Trust).
+- **Grafana** : Pour le monitoring de l'infrastructure (Duniter & ThreeFold).
+- **Leaflet** : Pour la cartographie des nœuds.
+
+**Actions** :
+1. Développer un explorateur de **Web of Trust visuel** (Graph).
+2. Créer des dashboards de **santé du réseau** (Duniter & ThreeFold).
+3. Former l'équipe front-end sur **D3.js** ou **ECharts**.
+
+**KPIs** :
+- Temps de compréhension pour un nouvel utilisateur.
+- Adoption des outils de visualisation.
+- Nombre de vues sur les dashboards publics.
+
+### Année 1 : Consolidation et Réduction des Risques
+
+#### Q1-Q2 : Gestion des Gaps de Compétences Critiques
+
+**Objectif** : Réduire les risques liés aux compétences manquantes
+
+**Actions** :
+- Identifier les technologies critiques avec faible couverture d'équipe
+- Mettre en place un plan de formation pour les technologies core
+- Documenter les connaissances critiques
+- Créer des plans de continuité en cas de départ
+
+**Technologies prioritaires** :
+- Rust / Substrate (blockchain core)
+- Docker / Infrastructure
+- PostgreSQL
+- ThreeFold Grid (infrastructure décentralisée - bonne couverture mais à renforcer)
+
+**Budget estimé** : Formation et documentation
+
+#### Q3-Q4 : Optimisation des Commodités
+
+**Objectif** : Réduire les coûts de maintenance des technologies non différenciantes
+
+**Actions** :
+- Auditer les coûts de maintenance
+- Identifier les opportunités d'optimisation
+- Standardiser les pratiques
+- Automatiser les tâches répétitives
+
+**Technologies cibles** :
+- Infrastructure (Docker, Linux, PostgreSQL)
+- Outils de développement
+
+**Budget estimé** : Automatisation et optimisation
+
+### Année 2 : Innovation et Différenciation
+
+#### Q1-Q2 : Évaluation des Technologies Émergentes
+
+**Objectif** : Identifier et évaluer les technologies prometteuses
+
+**Actions** :
+- POC (Proof of Concept) sur les technologies émergentes
+- Évaluer l'impact business potentiel
+- Mesurer la capacité de différenciation
+- Tester l'adoption par l'équipe
+
+**Technologies à évaluer** :
+- IPFS (stockage distribué)
+- Nostr (protocole décentralisé)
+- Serverless (architecture)
+- ThreeFold Grid (infrastructure décentralisée - opportunité majeure)
+- Zero OS (système d'exploitation bare metal)
+- ThreeFold Compute / Storage (capacités de calcul et stockage décentralisées)
+- Mycelium Network (réseau overlay chiffré)
+- AIBox (solution IA décentralisée)
+
+**Budget estimé** : POC et évaluation
+
+#### Q3-Q4 : Adoption Stratégique
+
+**Objectif** : Adopter les technologies émergentes validées
+
+**Actions** :
+- Intégrer les technologies validées dans les projets
+- Former l'équipe
+- Documenter les bonnes pratiques
+- Monitorer l'impact
+
+**Budget estimé** : Développement et formation
+
+### Année 3 : Maturité et Évolution Continue
+
+#### Objectifs
+
+- Maintenir un radar technologique à jour
+- Continuer l'innovation
+- Optimiser en continu
+- Gérer les risques proactivement
+
+## Priorités d'Investissement
+
+### Priorité 1 : Technologies Core (Critiques)
+
+**Investissement** : Maximum
+**Focus** : Stabilité, performance, sécurité
+
+**Technologies** :
+- Rust / Substrate (blockchain)
+- Infrastructure critique
+- ThreeFold Grid (infrastructure décentralisée - bonne couverture)
+
+**Actions** :
+- Maintenance proactive
+- Formation continue
+- Documentation exhaustive
+- Plans de continuité
+- Développement de l'expertise ThreeFold
+
+### Priorité 2 : Technologies Stratégiques
+
+**Investissement** : Élevé
+**Focus** : Croissance, différenciation
+
+**Technologies** :
+- Technologies différenciantes
+- Technologies émergentes prometteuses
+- ThreeFold (écosystème complet - opportunité stratégique majeure)
+ - ThreeFold Grid (infrastructure décentralisée)
+ - Zero OS (système bare metal)
+ - ThreeFold Compute / Storage (capacités décentralisées)
+ - Mycelium Network (réseau overlay)
+ - AIBox (IA décentralisée)
+
+**Actions** :
+- Développement actif
+- Innovation
+- Expérimentation
+- POC sur infrastructure décentralisée
+- Formation sur ThreeFold
+
+### Priorité 3 : Technologies de Support
+
+**Investissement** : Modéré
+**Focus** : Efficacité, coût
+
+**Technologies** :
+- Technologies de commodité
+- Outils de développement
+
+**Actions** :
+- Optimisation
+- Standardisation
+- Automatisation
+
+### Priorité 4 : Technologies Legacy
+
+**Investissement** : Minimal (migration)
+**Focus** : Remplacement, réduction des risques
+
+**Technologies** :
+- Technologies obsolètes
+- Technologies à risque
+
+**Actions** :
+- Planification de migration
+- Réduction progressive
+- Remplacement
+
+## Plan de Migration
+
+### Technologies à Migrer
+
+#### Court Terme (0-6 mois)
+
+Aucune migration urgente identifiée actuellement.
+
+#### Moyen Terme (6-18 mois)
+
+- Évaluer les technologies legacy
+- Planifier les remplacements
+- Identifier les alternatives
+
+#### Long Terme (18+ mois)
+
+- Exécuter les migrations planifiées
+- Valider les alternatives
+- Documenter les leçons apprises
+
+## Gestion des Risques
+
+### Risques Identifiés
+
+1. **Gaps de compétences** : Technologies critiques avec faible couverture
+2. **Dépendances uniques** : Technologies sans alternative
+3. **Obsolescence** : Technologies vieillissantes
+4. **Coûts** : Maintenance élevée de certaines technologies
+
+### Stratégies de Mitigation
+
+1. **Formation et recrutement** : Réduire les gaps de compétences
+2. **Diversification** : Éviter les dépendances uniques
+3. **Veille technologique** : Détecter l'obsolescence tôt
+4. **Optimisation continue** : Réduire les coûts
+
+## KPIs de Suivi
+
+### Métriques Techniques
+
+- **Couverture d'équipe** : Nombre moyen de personnes par technologie
+- **Gaps de compétences** : Nombre de technologies avec gap élevé
+- **Risques techniques** : Nombre de technologies à risque élevé
+- **Coûts** : Coût total de maintenance
+
+### Métriques Business
+
+- **Différenciation** : Nombre de technologies différenciantes
+- **Innovation** : Nombre de technologies émergentes adoptées
+- **Efficacité** : Réduction des coûts de maintenance
+- **Stabilité** : Réduction des incidents techniques
+
+### Objectifs Annuels
+
+**Année 1** :
+- Réduire les gaps de compétences de 50%
+- Documenter 100% des technologies core
+- Réduire les coûts de maintenance de 20%
+- POC ThreeFold Grid (déploiement de nœuds de test)
+- Lancement du projet DataViz (POC Web of Trust visuelle)
+
+**Année 2** :
+- Adopter 2-3 technologies émergentes (dont ThreeFold Grid)
+- Maintenir les gaps de compétences < 2 technologies
+- Optimiser les coûts de 30%
+- Déployer infrastructure ThreeFold en production (si POC validé)
+- Former l'équipe sur Zero OS et ThreeFold
+
+**Année 3** :
+- Maintenir un radar à jour
+- Continuer l'innovation
+- Optimiser en continu
+- Infrastructure décentralisée opérationnelle (ThreeFold)
+- Réduire la dépendance aux infrastructures centralisées
+
+## Communication et Gouvernance
+
+### Comité Technique
+
+- Réunion trimestrielle pour revue du radar
+- Décisions sur les priorités d'investissement
+- Validation des migrations
+
+### Reporting
+
+- Rapport mensuel sur les métriques
+- Rapport trimestriel sur l'avancement
+- Rapport annuel sur la stratégie
+
+### Parties Prenantes
+
+- Équipe technique
+- Direction
+- Financement (si applicable)
+- Communauté (open source)
+
+## Conclusion
+
+Cette stratégie d'évolution technique vise à aligner les choix technologiques avec les objectifs business, réduire les risques, optimiser les coûts et favoriser l'innovation.
+
+La mise en œuvre de cette stratégie nécessite un engagement continu de l'équipe et un suivi régulier des métriques définies.`;
+
+ // Fonction pour convertir Markdown en HTML
+ function markdownToHtml(md) {
+ let html = md;
+
+ // Titres
+ html = html.replace(/^# (.*$)/gim, '$1
');
+ html = html.replace(/^## (.*$)/gim, '$1
');
+ html = html.replace(/^### (.*$)/gim, '$1
');
+ html = html.replace(/^#### (.*$)/gim, '$1
');
+
+ // Gras et italique
+ html = html.replace(/\*\*(.*?)\*\*/gim, '$1');
+ html = html.replace(/\*(.*?)\*/gim, '$1');
+
+ // Listes
+ html = html.replace(/^- (.*$)/gim, '$1');
+ html = html.replace(/^\d+\. (.*$)/gim, '$1');
+
+ // Séparateurs
+ html = html.replace(/^---$/gim, '
');
+
+ // Paragraphes
+ html = html.split('\n\n').map(block => {
+ if (block.trim().startsWith('' + block.trim() + '
';
+ }).join('\n');
+
+ // Grouper les listes
+ html = html.replace(/(.*?<\/li>)/gim, function(match) {
+ return '';
+ });
+ html = html.replace(/<\/ul>\s*/gim, '');
+
+ return html;
+ }
+
function initStrategyLinks() {
- addStrategyLinkToFooter();
+ addStrategyLinkToHeader();
interceptStrategyLinks();
handleStrategyRoute();
}
@@ -15,7 +342,7 @@
function interceptStrategyLinks() {
document.addEventListener('click', function(e) {
const link = e.target.closest('a');
- if (link && (link.href.includes('/business/strategie') || link.getAttribute('href') === '/business/strategie' || link.id === 'strategie-link')) {
+ if (link && (link.href.includes('/business/strategie') || link.getAttribute('href') === '/business/strategie' || link.id === 'strategie-link' || link.classList.contains('strategie-link'))) {
e.preventDefault();
e.stopPropagation();
createStrategyPage();
@@ -29,7 +356,77 @@
window.originalBodyContent = document.body.innerHTML;
}
- document.body.innerHTML = '';
+ // Convertir le Markdown en HTML
+ const htmlContent = markdownToHtml(strategieMarkdown);
+
+ document.body.innerHTML = `
+
+ `;
+
+ // Appliquer des styles pour le contenu Markdown
+ const contentDiv = document.getElementById('strategie-content');
+ if (contentDiv) {
+ contentDiv.querySelectorAll('h1').forEach(h => {
+ h.style.color = '#1a4d3a';
+ h.style.borderBottom = '3px solid #2ecc71';
+ h.style.paddingBottom = '10px';
+ h.style.marginTop = '30px';
+ h.style.marginBottom = '20px';
+ });
+ contentDiv.querySelectorAll('h2').forEach(h => {
+ h.style.color = '#2ecc71';
+ h.style.marginTop = '30px';
+ h.style.marginBottom = '15px';
+ });
+ contentDiv.querySelectorAll('h3').forEach(h => {
+ h.style.color = '#3498db';
+ h.style.marginTop = '20px';
+ h.style.marginBottom = '10px';
+ });
+ contentDiv.querySelectorAll('h4').forEach(h => {
+ h.style.color = '#555';
+ h.style.marginTop = '15px';
+ h.style.marginBottom = '8px';
+ });
+ contentDiv.querySelectorAll('ul').forEach(ul => {
+ ul.style.margin = '10px 0';
+ ul.style.paddingLeft = '30px';
+ ul.style.listStyleType = 'disc';
+ });
+ contentDiv.querySelectorAll('li').forEach(li => {
+ li.style.margin = '5px 0';
+ });
+ contentDiv.querySelectorAll('p').forEach(p => {
+ p.style.margin = '10px 0';
+ });
+ contentDiv.querySelectorAll('a').forEach(a => {
+ a.style.color = '#2ecc71';
+ a.style.textDecoration = 'none';
+ });
+ contentDiv.querySelectorAll('a').forEach(a => {
+ a.addEventListener('mouseenter', function() {
+ this.style.textDecoration = 'underline';
+ });
+ a.addEventListener('mouseleave', function() {
+ this.style.textDecoration = 'none';
+ });
+ });
+ contentDiv.querySelectorAll('hr').forEach(hr => {
+ hr.style.border = 'none';
+ hr.style.borderTop = '2px solid #2ecc71';
+ hr.style.margin = '30px 0';
+ });
+ contentDiv.querySelectorAll('strong').forEach(s => {
+ s.style.color = '#1a4d3a';
+ });
+ }
const backLink = document.getElementById('back-to-radar');
if (backLink) {
@@ -47,29 +444,86 @@
window.history.pushState({page: 'strategie'}, 'Stratégie', '/business/strategie');
}
- function addStrategyLinkToFooter() {
- const footer = document.querySelector('footer') || document.querySelector('.footer') || document.querySelector('[class*="footer"]');
- if (footer) {
- if (footer.querySelector('#strategie-link') || footer.querySelector('a[href*="strategie"]')) {
+ function addStrategyLinkToHeader() {
+ // Chercher le header ou la barre de navigation
+ const header = document.querySelector('header') ||
+ document.querySelector('nav') ||
+ document.querySelector('[class*="header"]') ||
+ document.querySelector('[class*="nav"]') ||
+ document.querySelector('[class*="Header"]') ||
+ document.querySelector('[class*="Nav"]') ||
+ document.querySelector('div[role="banner"]');
+
+ if (header) {
+ if (header.querySelector('#strategie-link') || header.querySelector('a[href*="strategie"]')) {
return;
}
const strategyLink = document.createElement('a');
strategyLink.id = 'strategie-link';
+ strategyLink.className = 'strategie-link';
strategyLink.href = '#strategie';
- strategyLink.textContent = '📋 Voir la Stratégie';
- strategyLink.style.marginLeft = '10px';
+ strategyLink.textContent = '📋 Stratégie';
+ strategyLink.style.marginLeft = '15px';
strategyLink.style.color = '#2ecc71';
strategyLink.style.textDecoration = 'none';
strategyLink.style.fontWeight = 'bold';
- strategyLink.style.display = 'inline-block';
strategyLink.style.cursor = 'pointer';
+ strategyLink.style.display = 'inline-block';
+ strategyLink.style.padding = '5px 10px';
+ strategyLink.style.borderRadius = '4px';
+ strategyLink.style.transition = 'background 0.2s';
+ strategyLink.addEventListener('mouseenter', function() {
+ this.style.background = 'rgba(46, 204, 113, 0.1)';
+ });
+ strategyLink.addEventListener('mouseleave', function() {
+ this.style.background = 'transparent';
+ });
strategyLink.addEventListener('click', function(e) {
e.preventDefault();
createStrategyPage();
});
- footer.appendChild(strategyLink);
+ header.appendChild(strategyLink);
} else {
- setTimeout(addStrategyLinkToFooter, 1000);
+ // Si pas de header trouvé, créer une barre en haut de page
+ const existingTopBar = document.getElementById('strategie-top-bar');
+ if (existingTopBar) {
+ return;
+ }
+
+ const topBar = document.createElement('div');
+ topBar.id = 'strategie-top-bar';
+ topBar.style.cssText = 'position: fixed; top: 0; left: 0; right: 0; background: rgba(26, 77, 58, 0.95); padding: 10px 20px; z-index: 1000; text-align: right; box-shadow: 0 2px 4px rgba(0,0,0,0.1);';
+
+ const strategyLink = document.createElement('a');
+ strategyLink.id = 'strategie-link';
+ strategyLink.className = 'strategie-link';
+ strategyLink.href = '#strategie';
+ strategyLink.textContent = '📋 Stratégie';
+ strategyLink.style.color = '#2ecc71';
+ strategyLink.style.textDecoration = 'none';
+ strategyLink.style.fontWeight = 'bold';
+ strategyLink.style.cursor = 'pointer';
+ strategyLink.style.padding = '5px 15px';
+ strategyLink.style.borderRadius = '4px';
+ strategyLink.style.transition = 'background 0.2s';
+ strategyLink.addEventListener('mouseenter', function() {
+ this.style.background = 'rgba(46, 204, 113, 0.2)';
+ });
+ strategyLink.addEventListener('mouseleave', function() {
+ this.style.background = 'transparent';
+ });
+ strategyLink.addEventListener('click', function(e) {
+ e.preventDefault();
+ createStrategyPage();
+ });
+
+ topBar.appendChild(strategyLink);
+ document.body.insertBefore(topBar, document.body.firstChild);
+
+ // Ajouter un padding au body pour compenser la barre fixe
+ if (!document.body.style.paddingTop || document.body.style.paddingTop === '0px') {
+ document.body.style.paddingTop = '50px';
+ }
}
}
@@ -86,4 +540,3 @@
initStrategyLinks();
}
})();
-
diff --git a/scripts/serve-business.sh b/scripts/serve-business.sh
index 783e071..462499c 100755
--- a/scripts/serve-business.sh
+++ b/scripts/serve-business.sh
@@ -29,8 +29,8 @@ cp -r radar-business/2025-01-15 radar
echo "Configuration business activée"
echo "Démarrage du serveur..."
-# Démarrer le serveur
-npm run serve
+# Démarrer le serveur sur le port 3004
+PORT=3004 npm run serve
# Restaurer la config originale à la sortie
cleanup() {