feat: ajouter radar stratégique business avec analyse des technologies et compétences
- Création de la structure radar-business/ avec configuration business - Génération de 22 blips de technologies avec métadonnées business - Scripts d'extraction et d'analyse des technologies - Analyse stratégique avec identification de patterns - Stratégie d'évolution technique avec roadmap 3 ans - Documentation complète du radar business - Analyse des compétences de l'équipe depuis profil-team.md
This commit is contained in:
@@ -18,6 +18,13 @@ Cette documentation est organisée en plusieurs sections :
|
||||
- **[Déploiement](./deploiement.md)** - Instructions pour déployer le radar en production
|
||||
- **[Contribution](./contribution.md)** - Guide pour ajouter de nouvelles technologies au radar
|
||||
|
||||
### Radar Business
|
||||
|
||||
- **[Guide Radar Business](./guide-radar-business.md)** - Guide d'utilisation du radar stratégique business
|
||||
- **[Analyse Stratégique](./analyse-strategique.md)** - Rapport d'analyse des patterns et recommandations
|
||||
- **[Stratégie d'Évolution Technique](./strategie-evolution-technique.md)** - Vision et roadmap technique
|
||||
- **[Technologies Duniter](./technologies-duniter.md)** - Liste des technologies de l'écosystème Duniter/Ğ1
|
||||
|
||||
## Liens utiles
|
||||
|
||||
- **Radar en ligne** : https://www.coeurbox.syoul.fr
|
||||
|
||||
131
docs/analyse-strategique.md
Normal file
131
docs/analyse-strategique.md
Normal file
@@ -0,0 +1,131 @@
|
||||
# Analyse Stratégique - Radar Business Duniter/Ğ1
|
||||
|
||||
Date: 02/12/2025
|
||||
|
||||
## Vue d'ensemble
|
||||
|
||||
- **Total de technologies analysées** : 22
|
||||
- **Coût total de remplacement** : 0€
|
||||
- **Coût total de maintenance annuel** : 0€
|
||||
- **Couverture moyenne de l'équipe** : 1.2 personnes par technologie
|
||||
|
||||
## Répartition par Quadrant
|
||||
|
||||
- **technologies-commodite** : 17 technologies
|
||||
- **technologies-emergentes** : 3 technologies
|
||||
- **technologies-differentiantes** : 2 technologies
|
||||
|
||||
## Répartition par Ring
|
||||
|
||||
- **support** : 17 technologies
|
||||
- **strategic** : 3 technologies
|
||||
- **core** : 2 technologies
|
||||
|
||||
## Distribution des Risques
|
||||
|
||||
- **Risque élevé** : 0 technologies
|
||||
- **Risque modéré** : 19 technologies
|
||||
- **Risque faible** : 3 technologies
|
||||
|
||||
## Distribution des Compétences
|
||||
|
||||
- **Expert** : 1 technologies
|
||||
- **Intermédiaire** : 5 technologies
|
||||
- **Débutant** : 16 technologies
|
||||
|
||||
## Distribution des Gaps de Compétences
|
||||
|
||||
- **Gap élevé** : 16 technologies
|
||||
- **Gap modéré** : 5 technologies
|
||||
- **Gap faible** : 1 technologies
|
||||
|
||||
## Technologies à Risque Élevé
|
||||
|
||||
Aucune technologie à risque élevé identifiée.
|
||||
|
||||
## Technologies avec Gap de Compétences Élevé
|
||||
|
||||
- **"Bash"** (1 personne(s), niveau: beginner)
|
||||
- **"Cryptographie"** (1 personne(s), niveau: beginner)
|
||||
- **"Dart"** (1 personne(s), niveau: beginner)
|
||||
- **"Docker"** (1 personne(s), niveau: beginner)
|
||||
- **"Flutter"** (1 personne(s), niveau: beginner)
|
||||
- **"GitLab CI/CD"** (1 personne(s), niveau: beginner)
|
||||
- **"Kubernetes"** (0 personne(s), niveau: beginner)
|
||||
- **"Nostr"** (1 personne(s), niveau: beginner)
|
||||
- **"PostgreSQL"** (0 personne(s), niveau: beginner)
|
||||
- **"ProxMox"** (1 personne(s), niveau: beginner)
|
||||
- **"Python"** (1 personne(s), niveau: beginner)
|
||||
- **"Rust"** (1 personne(s), niveau: beginner)
|
||||
- **"Serverless"** (1 personne(s), niveau: beginner)
|
||||
- **"Squid"** (1 personne(s), niveau: beginner)
|
||||
- **"Substrate Framework"** (1 personne(s), niveau: beginner)
|
||||
- **"WordUp CMS"** (1 personne(s), niveau: beginner)
|
||||
|
||||
## Technologies Critiques
|
||||
|
||||
- **"Rust"** (risque: medium, gap: high, couverture: 1)
|
||||
- **"Substrate Framework"** (risque: medium, gap: high, couverture: 1)
|
||||
|
||||
## Technologies Émergentes
|
||||
|
||||
- **"IPFS"** (impact: medium, différenciation: high)
|
||||
- **"Nostr"** (impact: medium, différenciation: high)
|
||||
- **"Serverless"** (impact: medium, différenciation: high)
|
||||
|
||||
## Patterns Identifiés
|
||||
|
||||
### Technologies Critiques Non Différenciantes
|
||||
|
||||
Aucune technologie critique non différenciante identifiée.
|
||||
|
||||
### Technologies Obsolètes
|
||||
|
||||
Aucune technologie obsolète identifiée.
|
||||
|
||||
### Opportunités d'Innovation
|
||||
|
||||
- **"IPFS"** (ring: strategic, impact: medium)
|
||||
- **"Nostr"** (ring: strategic, impact: medium)
|
||||
- **"Serverless"** (ring: strategic, impact: medium)
|
||||
|
||||
### Gaps de Compétences Critiques
|
||||
|
||||
- **"Rust"** (ring: core, impact: high, couverture: 1, niveau: beginner)
|
||||
- **"Substrate Framework"** (ring: core, impact: high, couverture: 1, niveau: beginner)
|
||||
|
||||
## Recommandations Stratégiques
|
||||
|
||||
### Priorité 1 : Gérer les Risques Critiques
|
||||
|
||||
- **Formation et recrutement** : Investir dans la formation ou le recrutement pour les technologies suivantes :
|
||||
- "Rust" (1 personne(s), niveau beginner)
|
||||
- "Substrate Framework" (1 personne(s), niveau beginner)
|
||||
|
||||
### Priorité 2 : Optimiser les Coûts
|
||||
|
||||
- Aucune optimisation majeure identifiée.
|
||||
|
||||
### Priorité 3 : Planifier les Migrations
|
||||
|
||||
- Aucune migration urgente requise.
|
||||
|
||||
### Priorité 4 : Investir dans l'Innovation
|
||||
|
||||
- **Technologies émergentes** : Évaluer l'adoption de :
|
||||
- "IPFS" (ring: strategic)
|
||||
- "Nostr" (ring: strategic)
|
||||
- "Serverless" (ring: strategic)
|
||||
|
||||
## Matrice Risques/Opportunités
|
||||
|
||||
### Zone Critique (Risque élevé + Impact élevé)
|
||||
|
||||
Aucune technologie en zone critique.
|
||||
|
||||
### Zone d'Opportunité (Faible risque + Différenciation élevée)
|
||||
|
||||
- **"IPFS"** : Opportunité d'investissement
|
||||
- **"Nostr"** : Opportunité d'investissement
|
||||
- **"Serverless"** : Opportunité d'investissement
|
||||
|
||||
175
docs/guide-radar-business.md
Normal file
175
docs/guide-radar-business.md
Normal file
@@ -0,0 +1,175 @@
|
||||
# Guide d'Utilisation du Radar Business
|
||||
|
||||
## Introduction
|
||||
|
||||
Le Radar Business est un outil stratégique pour analyser les technologies de l'écosystème Duniter/Ğ1 sous l'angle business. Il permet d'identifier les patterns, les risques, les opportunités et de définir une stratégie d'évolution technique.
|
||||
|
||||
## Structure du Radar
|
||||
|
||||
### Quadrants
|
||||
|
||||
Le radar est organisé en 4 quadrants business :
|
||||
|
||||
1. **Technologies Différenciantes** : Créent un avantage concurrentiel
|
||||
2. **Technologies de Commodité** : Nécessaires mais non différenciantes
|
||||
3. **Technologies à Risque** : Obsolètes, coûteuses, à migrer
|
||||
4. **Technologies Émergentes** : Opportunités futures
|
||||
|
||||
### Anneaux (Rings)
|
||||
|
||||
Chaque technologie est classée dans un des 4 anneaux :
|
||||
|
||||
1. **Core** : Technologies critiques pour le business model
|
||||
2. **Strategic** : Technologies stratégiques pour la croissance
|
||||
3. **Support** : Technologies de support nécessaires
|
||||
4. **Legacy** : Technologies à remplacer
|
||||
|
||||
## Métadonnées Business
|
||||
|
||||
Chaque technologie (blip) contient des métadonnées business :
|
||||
|
||||
### Métadonnées Standard
|
||||
|
||||
- **title** : Nom de la technologie
|
||||
- **ring** : Anneau (core, strategic, support, legacy)
|
||||
- **quadrant** : Quadrant business
|
||||
- **tags** : Tags pour le filtrage
|
||||
|
||||
### Métadonnées Business
|
||||
|
||||
- **businessImpact** : Impact sur le business (high, medium, low)
|
||||
- **costToReplace** : Coût estimé de remplacement en euros
|
||||
- **revenueImpact** : Impact sur les revenus (direct, indirect, none)
|
||||
- **riskLevel** : Niveau de risque (high, medium, low)
|
||||
- **maintenanceCost** : Coût annuel de maintenance en euros
|
||||
- **differentiation** : Capacité de différenciation (high, medium, low)
|
||||
|
||||
### Métadonnées Compétences
|
||||
|
||||
- **competencyLevel** : Niveau moyen de compétence (expert, intermediate, beginner)
|
||||
- **teamCoverage** : Nombre de personnes maîtrisant la technologie
|
||||
- **skillGap** : Risque de compétence manquante (high, medium, low)
|
||||
|
||||
## Utilisation
|
||||
|
||||
### Ajouter une Nouvelle Technologie
|
||||
|
||||
1. Créer un fichier Markdown dans `radar-business/2025-01-15/`
|
||||
2. Utiliser le format défini dans `radar-business/FORMAT-BLIP.md`
|
||||
3. Remplir toutes les métadonnées
|
||||
4. Ajouter la description et les sections recommandées
|
||||
|
||||
### Modifier une Technologie Existante
|
||||
|
||||
1. Ouvrir le fichier Markdown correspondant
|
||||
2. Modifier les métadonnées ou le contenu
|
||||
3. Mettre à jour la date si changement significatif
|
||||
|
||||
### Analyser le Radar
|
||||
|
||||
1. Exécuter le script d'analyse :
|
||||
```bash
|
||||
node scripts/analyze-business-metrics.js
|
||||
```
|
||||
2. Consulter le rapport généré dans `docs/analyse-strategique.md`
|
||||
|
||||
### Générer les Blips
|
||||
|
||||
Pour régénérer les blips depuis `technologies-duniter.md` :
|
||||
|
||||
```bash
|
||||
node scripts/extract-technologies.js
|
||||
```
|
||||
|
||||
## Interprétation des Résultats
|
||||
|
||||
### Technologies Critiques
|
||||
|
||||
Les technologies en ring "core" avec businessImpact "high" sont critiques. Elles nécessitent :
|
||||
- Maintenance proactive
|
||||
- Formation continue
|
||||
- Documentation exhaustive
|
||||
- Plans de continuité
|
||||
|
||||
### Technologies à Risque
|
||||
|
||||
Les technologies avec riskLevel "high" ou skillGap "high" présentent des risques. Actions recommandées :
|
||||
- Formation ou recrutement
|
||||
- Documentation
|
||||
- Plan de migration si nécessaire
|
||||
|
||||
### Opportunités d'Innovation
|
||||
|
||||
Les technologies émergentes avec differentiation "high" sont des opportunités. Actions :
|
||||
- POC (Proof of Concept)
|
||||
- Évaluation de l'impact
|
||||
- Adoption progressive
|
||||
|
||||
### Optimisation des Coûts
|
||||
|
||||
Les technologies de commodité avec maintenanceCost élevé peuvent être optimisées :
|
||||
- Standardisation
|
||||
- Automatisation
|
||||
- Réduction des coûts
|
||||
|
||||
## Méthodologie d'Analyse
|
||||
|
||||
### 1. Collecte des Données
|
||||
|
||||
- Inventorier toutes les technologies
|
||||
- Collecter les métadonnées business
|
||||
- Analyser les compétences de l'équipe
|
||||
|
||||
### 2. Classification
|
||||
|
||||
- Classer par quadrant business
|
||||
- Classer par ring (core, strategic, support, legacy)
|
||||
- Évaluer les métadonnées
|
||||
|
||||
### 3. Analyse
|
||||
|
||||
- Identifier les patterns
|
||||
- Calculer les métriques
|
||||
- Identifier les risques et opportunités
|
||||
|
||||
### 4. Recommandations
|
||||
|
||||
- Prioriser les actions
|
||||
- Définir la roadmap
|
||||
- Planifier les investissements
|
||||
|
||||
## Templates
|
||||
|
||||
### Template de Blip
|
||||
|
||||
Voir `radar-business/FORMAT-BLIP.md` pour le template complet.
|
||||
|
||||
### Template d'Analyse
|
||||
|
||||
Le script `analyze-business-metrics.js` génère automatiquement un rapport d'analyse.
|
||||
|
||||
## Maintenance
|
||||
|
||||
### Mise à Jour Régulière
|
||||
|
||||
- Mettre à jour les métadonnées trimestriellement
|
||||
- Réviser les classifications annuellement
|
||||
- Mettre à jour les coûts et risques
|
||||
|
||||
### Révision Stratégique
|
||||
|
||||
- Révision annuelle de la stratégie
|
||||
- Ajustement des priorités
|
||||
- Mise à jour de la roadmap
|
||||
|
||||
## Ressources
|
||||
|
||||
- **Format des blips** : `radar-business/FORMAT-BLIP.md`
|
||||
- **Configuration** : `radar-business/config-business.json`
|
||||
- **Analyse stratégique** : `docs/analyse-strategique.md`
|
||||
- **Stratégie d'évolution** : `docs/strategie-evolution-technique.md`
|
||||
|
||||
## Support
|
||||
|
||||
Pour toute question ou contribution, consulter la documentation ou contacter l'équipe technique.
|
||||
|
||||
92
docs/profil-team.md
Normal file
92
docs/profil-team.md
Normal file
@@ -0,0 +1,92 @@
|
||||
poka
|
||||
|
||||
Je suis contributeur actif sur le projet Duniter depuis 2016 aux RML7 de Laval.
|
||||
|
||||
Je code Ğecko en Flutter/Dart. Je maintiens aussi l’infra Axiom-Team, soit 2 serveurs ProxMox.
|
||||
|
||||
J’ai aussi codé Ğ1-stats en bash. Et jaklis en python. J’ai aussi codé py-g1-migrator
|
||||
|
||||
J’aime la soupe au poireaux.
|
||||
|
||||
edit important: J’aime aussi les tartes aux légumes. Je préfère parler de tarte plutôt que de quiche aux légumes, même si j’aime beaucoup les quiches aussi. Je n’ai aucune animosité particulière vie-à-vis des gens qui préfèrent parler de quiche aux légumes plutôt que de tartes, même si je les considères comme éloignés de moi (au niveau de la race je veux dire hein, pas de malentendu).
|
||||
|
||||
Je n’aime pas le cresson.
|
||||
ManUtopiK
|
||||
|
||||
Diplomé dans le domaine des énergies renouvelables, mon côté “web enthousiaste” m’a finalement amené à faire du développement web depuis + de 12 ans.
|
||||
|
||||
Passionné par tout ce qui est “alternatif” et qui rend libre, j’ai découvert le concept de la monnaie libre en 2014. L’économie actuelle est à mes yeux le principal facteur du bordel que l’on a mis sur cette planète depuis des générations. J’espère en un monde un peu plus libre, auto gouverné en intelligence collective, et avec du #solarpunk comme horizon. Profitons des crises pour tout changer !
|
||||
|
||||
À fond sur VueJS ; il a créé un CMS basé sur VueJS.
|
||||
Contributions
|
||||
|
||||
Développement et rédaction du site monnaie-libre.fr (Dépôt du site, de l’api)
|
||||
Développement de la carte.monnaie-libre.fr (Dépôt)
|
||||
Doc silkaj
|
||||
WotWizard-UI
|
||||
g1lib
|
||||
Duniter UI avec nuxt Abandonné :confused:
|
||||
|
||||
En cours
|
||||
|
||||
Extension web g1Compagnon
|
||||
Interface web pour g1Billet
|
||||
|
||||
Hugo Trentesaux
|
||||
|
||||
Je m’intéresse à la Ğ1 depuis 2017 et pense que l’association Axiom Team constitue une base juridique utile car nécessaire pour de nombreuses interactions avec le monde €.
|
||||
|
||||
J’ai travaillé sur le dossier de financement de Ǧecko auprès de l’ADEME avec succès. À l’avenir, je compte participer au fonctionnement d’Axiom Team, et à la partie rédactionnelle des dossiers de financement.
|
||||
aya
|
||||
|
||||
Je participe à la vulgarisation des logiciels libres depuis ma première installation de linux debian potato en 2001.
|
||||
|
||||
J’ai découvert la monnaie libre à travers mes recherches concernant les systèmes de fichiers. Travaillant principalement sur des infrastructures d’hébergement distribué, j’ai utilisé différents systèmes de réplication de fichiers comme glusterfs, cephfs, pour en arriver à ipfs. C’est en cherchant une alternative à filecoin, la crypto proposée par ipfs pour mettre en commun son espace de stockage, que je découvre la monnaie libre, on est en 2021.
|
||||
|
||||
Je rejoins Axiom-Team pour participer à la vulgarisation de la monnaie libre.
|
||||
Syoul
|
||||
|
||||
Actuellement secrétaire d’Axiom-Team
|
||||
|
||||
Artisan bidouilleur Libriste, formé à la bidouille (résilience numérique, énergétique, domotique). Artisan laser numérique sur le causse du Querçy (46)
|
||||
|
||||
J’ai découvert la June en 2018. Depuis, j’anime avec des groupes locaux, des conférences et Ğmarchés autour de la monnaie libre G1.
|
||||
Eloïs
|
||||
|
||||
A appris les technologies blockchain en autodidact, travaillé sur la “rustification” (passage en Rust) de Duniter v1, puis bossé chez MoonPay.
|
||||
Yvv
|
||||
|
||||
Vieux bouc dans le CA, je tire ma révérence en tant que secrétaire. Focus sur ce qui m’intéresse le plus, nouvelle forme de mobilisation.
|
||||
|
||||
Pour mission UNL :
|
||||
|
||||
Aboutir la tuyauterie autogestion des dons.
|
||||
L’élargir pour une v2 sur … un goût de paradis, le WishBounty.
|
||||
|
||||
Pour mission fédération - services aux monnaie-libristes :
|
||||
|
||||
Bosser sur une FAQs version wiki, si un mediawiki ou autre voit le jour.
|
||||
Bosser sur une médiathèque, si un nocodb ou autre voit le jour.
|
||||
|
||||
Pour ML :
|
||||
|
||||
Diffuser mon bouquin “une économie du don - enfin concevable” et m’en servir de support pour mener des ateliers éco et “passer la seconde”.
|
||||
Lancer un événement structurant, le Librodrome.
|
||||
Lancer une expérience de production collective monnaie-libriste, probablement une conserverie éphémère mobile.
|
||||
|
||||
Fred
|
||||
|
||||
A monté une boite (Linkeo) qui a bouffé une partie du marché de PagesJaunes début/milieu des années 2000. Très intéressé (et sachant) sur IPFS, Secure ScuttleButt, Nostr et TiddlyWiki. Il développe Astroport, un système d’information qui combine la Ğ1, IPFS et Nostr. Par le passé, il a aussi créé G1SMS (système de paiement par SMS en Ğ1) et G1billet (paper wallet pour la Ğ1).
|
||||
Vivien
|
||||
|
||||
Se forme pour contribuer à certains logiciels de la Ğ1 (Cesium). Développe aussi en Godot. Passionné de jeux (cartes Magic notamment).
|
||||
1000i100
|
||||
|
||||
Développeur d’outils serverless, et plombier des pipeline Gitlab (CI/CD avec Docker). Enfin une monnaie mécaniquement redistributive ! Avec un soupçon de revenu de base, une bonne dose d’auto-gestion et une communauté adorable !Informaticien couteau suisse à dominante développeur web, photographe à ses heures, soutien psy informel, amateur de CNV et de modèles économiques expérimental et éthique !
|
||||
tuxmain
|
||||
|
||||
Étudiant en math. Bien compétent sur la cryptographie, le chiffrage, les conversions de clef d’une base en une autre. Administrateur de serveur Minetest. Il bidouille aussi de l’électronique.
|
||||
|
||||
boris
|
||||
|
||||
Il est assez dispersé, “jack of all trade, master of none”. Ces derniers temps, il passe beaucoup de temps à faire de la génération de musiques rigolotes (ou autre) avec les LLM et Suno. Il aime les langues étrangères (l’anglais surtout), la médecine traditionnelle chinoise, le Feng Shui (le tao en général). Il est communiste. Il a bossé sur l’UX/UI de Ğecko (via Figma). Grâce à Cursor, il développe une app de médecine chinoise basée sur les LLM. Dans la Ğ1, il a essayé de contribuer à l’onboarding (il a refait le site monnaie-libre.fr, Duniter | Accueil, et fait le site cesium.app). Il a aussi fait des clients Ğchange : Ğ1Quest (une projection des annonces Ğchange, notamment en “vue radar”), Ğrocéliande (un genre de skin pour Ğchange calqué sur l’interface d’Amazon, et qui ne prend que les annonces avec “envoi possible” dans la description), g1.business (qui permet de repérer les “routes commerciale”, de faire correspondre pour un produit l’offre d’un endroit et la demande à un endroit distant, et qui projette sur une carte les moyens de productions disponibles à la location en Ğ1). Il a aussi fait Ğ1Gate (qui permet de suivre les flux de monnaie en vue “treemap”), H2G2 “le guide du terraformeur terrien” (une vue à la recette MineCraft de choses qu’on peut produire “dans la vraie vie”), Ğ1 KDE Notifier (Un petit outil pour être notifié de mouvements sur un portefeuille Ğ1), un Simulateur RSA / Prime d’activité (Un simulateur RSA/prime d’activité plus très à jour au niveau des données, mais qui permet de se rendre compte à quel point le fonctionnement de la prime d’activité est complètement stupide, et incite à éviter de travailler de façon trop importante trop ponctuellement, si on ne veut pas risquer de perdre de l’argent en allant se casser le cul au boulot), Cerveau externe (Un truc fait avec Vis.js, pour projeter des mots, colorés suivant la rime, regroupés autour des consonnes, et liés s’ils appartiennent à un même thème. Dans l’idée de faire des impros de rap avec. Proto sans réelle interface utilisateur utilisable par les moldus. Faire F5 pour raffraîchir et ainsi avoir un autre graphe de mots.), NoBS Troll-Emploi (Un moteur de recherche d’emploi basé sur l’API Pôle-Emploi et qui permet d’avoir plus de filtres : mots-clefs à exclure, pas de tutoiement, pas de “digital”, etc… Idéal pour les gens qui, certes, acceptent d’être exploités lorsqu’ils développent du logiciel, mais veulent diminuer au maximum la quantité de bullshit dans leur job).
|
||||
245
docs/strategie-evolution-technique.md
Normal file
245
docs/strategie-evolution-technique.md
Normal file
@@ -0,0 +1,245 @@
|
||||
# Stratégie d'Évolution Technique - Duniter/Ğ1
|
||||
|
||||
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
|
||||
|
||||
## Roadmap d'Évolution
|
||||
|
||||
### 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
|
||||
|
||||
**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)
|
||||
|
||||
**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
|
||||
|
||||
**Actions** :
|
||||
- Maintenance proactive
|
||||
- Formation continue
|
||||
- Documentation exhaustive
|
||||
- Plans de continuité
|
||||
|
||||
### Priorité 2 : Technologies Stratégiques
|
||||
|
||||
**Investissement** : Élevé
|
||||
**Focus** : Croissance, différenciation
|
||||
|
||||
**Technologies** :
|
||||
- Technologies différenciantes
|
||||
- Technologies émergentes prometteuses
|
||||
|
||||
**Actions** :
|
||||
- Développement actif
|
||||
- Innovation
|
||||
- Expérimentation
|
||||
|
||||
### 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%
|
||||
|
||||
**Année 2** :
|
||||
- Adopter 2-3 technologies émergentes
|
||||
- Maintenir les gaps de compétences < 2 technologies
|
||||
- Optimiser les coûts de 30%
|
||||
|
||||
**Année 3** :
|
||||
- Maintenir un radar à jour
|
||||
- Continuer l'innovation
|
||||
- Optimiser en continu
|
||||
|
||||
## 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.
|
||||
|
||||
330
docs/technologies-duniter.md
Normal file
330
docs/technologies-duniter.md
Normal file
@@ -0,0 +1,330 @@
|
||||
# Technologies et Compétences - Écosystème Duniter/Ğ1
|
||||
|
||||
Ce document liste les technologies et compétences identifiées dans l'écosystème Duniter/Ğ1 basé sur l'analyse de https://git.duniter.org/
|
||||
|
||||
## Technologies de Développement
|
||||
|
||||
### Langages de Programmation
|
||||
|
||||
#### Rust
|
||||
- **Utilisation** : Développement du nœud Duniter v2S (basé sur Substrate)
|
||||
- **Projets** :
|
||||
- `Duniter v2S` : Nœud blockchain principal
|
||||
- `Ğcli-v2s` : Interface en ligne de commande Rust
|
||||
- `homebrew-duniter-gcli` : Package Homebrew pour Ğcli
|
||||
- **Compétences requises** : Rust avancé, développement blockchain, Substrate framework
|
||||
|
||||
#### Python
|
||||
- **Utilisation** : Clients en ligne de commande et outils
|
||||
- **Projets** :
|
||||
- `silkaj` : Client CLI Python pour la monnaie Ğ1
|
||||
- `Tikka` : Client riche pour la monnaie Ğ1
|
||||
- **Compétences requises** : Python, développement CLI, APIs REST
|
||||
|
||||
#### JavaScript/TypeScript
|
||||
- **Utilisation** : Clients web, extensions navigateur, sites web
|
||||
- **Projets** :
|
||||
- `Ğ1Companion` : Extension web pour navigateurs
|
||||
- Clients web divers
|
||||
- **Compétences requises** : JavaScript/TypeScript, développement d'extensions navigateur, Web APIs
|
||||
|
||||
### Frameworks et Bibliothèques
|
||||
|
||||
#### Substrate Framework
|
||||
- **Utilisation** : Framework blockchain pour Duniter v2S
|
||||
- **Description** : Framework Rust pour construire des blockchains personnalisées
|
||||
- **Compétences requises** : Blockchain, Rust, Substrate, consensus algorithms
|
||||
|
||||
#### Nuxt.js
|
||||
- **Utilisation** : Framework Vue.js pour sites web
|
||||
- **Projets** :
|
||||
- `monnaie-libre-fr` : Site web avec Nuxt + nuxt-content
|
||||
- **Compétences requises** : Vue.js, Nuxt.js, SSR, JAMstack
|
||||
|
||||
#### NetlifyCMS
|
||||
- **Utilisation** : CMS headless basé sur Git
|
||||
- **Projets** :
|
||||
- `monnaie-libre-fr` : CMS pour le site web
|
||||
- **Compétences requises** : Git-based CMS, JAMstack, workflows Git
|
||||
|
||||
#### WordUp CMS
|
||||
- **Utilisation** : CMS pour sites web
|
||||
- **Projets** :
|
||||
- `axiom-team-fr` : Site de production avec WordUp
|
||||
- **Compétences requises** : CMS management, intégration d'APIs
|
||||
|
||||
### Outils et Bibliothèques Spécialisées
|
||||
|
||||
#### Squid (Indexer)
|
||||
- **Utilisation** : Indexation de données blockchain
|
||||
- **Projets** :
|
||||
- `duniter-squid` : Indexer basé sur Squid pour Duniter v2S
|
||||
- **Compétences requises** : Indexation de données, GraphQL, blockchain data processing
|
||||
|
||||
#### g1-papi
|
||||
- **Utilisation** : Bibliothèque API pour Ğ1
|
||||
- **Type** : Bibliothèque partagée
|
||||
- **Compétences requises** : API design, développement de bibliothèques
|
||||
|
||||
### Clients et Interfaces
|
||||
|
||||
#### Clients CLI (Command Line Interface)
|
||||
- **Rust CLI** : `Ğcli-v2s` - Interface avancée pour utilisateurs experts
|
||||
- **Python CLI** : `silkaj`, `Tikka` - Clients en ligne de commande
|
||||
- **Compétences requises** : Développement CLI, UX en ligne de commande, parsing d'arguments
|
||||
|
||||
#### Extensions Navigateur
|
||||
- **Ğ1Companion** : Extension web pour navigateurs
|
||||
- **Compétences requises** : Web Extensions API, Chrome/Firefox extensions, JavaScript
|
||||
|
||||
#### Clients Graphiques
|
||||
- **Ğecko** : Client avec interface graphique
|
||||
- **Cesium-grp/cesium2s** : Client Cesium pour Duniter v2s
|
||||
- **Compétences requises** : Développement d'interfaces graphiques, frameworks UI
|
||||
|
||||
### Intégrations et APIs
|
||||
|
||||
#### Intégrations Externes
|
||||
- **HelloAsso** : Intégration pour dons
|
||||
- **Paheko** : Intégration comptable
|
||||
- **ĞWishBounty** : Application pour automatiser les flux de dons
|
||||
- **Compétences requises** : Intégration d'APIs tierces, webhooks, synchronisation de données
|
||||
|
||||
#### APIs Internes
|
||||
- **api-axiom-team-fr** : API pour le site Axiom
|
||||
- **Compétences requises** : REST APIs, GraphQL, documentation d'API
|
||||
|
||||
## Technologies d'Infrastructure et Déploiement
|
||||
|
||||
### Conteneurisation
|
||||
- **Docker** : Conteneurisation des applications
|
||||
- **Compétences requises** : Docker, Docker Compose, orchestration de conteneurs
|
||||
|
||||
### Déploiement Web
|
||||
- **Netlify** : Déploiement JAMstack (mentionné pour monnaie-libre-fr)
|
||||
- **Compétences requises** : CI/CD, déploiement continu, Netlify
|
||||
|
||||
### Gestion de Code Source
|
||||
- **Git** : Système de contrôle de version
|
||||
- **Forge Git** : git.duniter.org (forge Git auto-hébergée)
|
||||
- **Compétences requises** : Git avancé, workflows Git, gestion de forge
|
||||
|
||||
### Package Management
|
||||
- **Homebrew** : Gestion de paquets pour macOS
|
||||
- **npm/yarn** : Gestion de paquets JavaScript
|
||||
- **pip/poetry** : Gestion de paquets Python
|
||||
- **Cargo** : Gestion de paquets Rust
|
||||
- **Compétences requises** : Gestion de dépendances, gestion de versions, publication de paquets
|
||||
|
||||
## Compétences d'Administration Système
|
||||
|
||||
### Administration Linux/Unix
|
||||
- **Systèmes d'exploitation** : Linux (Debian, Ubuntu, etc.)
|
||||
- **Compétences requises** :
|
||||
- Administration système Linux
|
||||
- Gestion des utilisateurs et permissions
|
||||
- Configuration réseau
|
||||
- Monitoring système
|
||||
- Gestion des logs
|
||||
- Sécurisation des serveurs
|
||||
|
||||
### Administration Blockchain
|
||||
- **Gestion de nœuds** : Administration de nœuds Duniter
|
||||
- **Compétences requises** :
|
||||
- Configuration de nœuds blockchain
|
||||
- Gestion de la synchronisation
|
||||
- Monitoring de la blockchain
|
||||
- Gestion des clés cryptographiques
|
||||
- Maintenance des nœuds
|
||||
|
||||
### Bases de Données
|
||||
- **PostgreSQL** : Base de données relationnelle utilisée dans les projets
|
||||
- **Compétences requises** :
|
||||
- Administration PostgreSQL
|
||||
- Optimisation de requêtes
|
||||
- Sauvegarde et restauration
|
||||
- Réplication
|
||||
- Performance tuning
|
||||
- SQL avancé
|
||||
|
||||
### Réseau et Sécurité
|
||||
- **Réseau** :
|
||||
- Configuration de pare-feu
|
||||
- Gestion des ports et services
|
||||
- Load balancing
|
||||
- CDN configuration
|
||||
- DNS, DHCP, VPN, SD-WAN
|
||||
- Configuration réseau avancée
|
||||
- **Sécurité** :
|
||||
- SSL/TLS configuration
|
||||
- Gestion des certificats
|
||||
- Sécurisation des APIs
|
||||
- Protection contre les attaques
|
||||
- Audit de sécurité
|
||||
- Chiffrement des communications et données
|
||||
- Surveillance et détection d'intrusions
|
||||
- Prévention des cyberattaques
|
||||
|
||||
### Monitoring et Observabilité
|
||||
- **Monitoring** :
|
||||
- Monitoring des applications
|
||||
- Monitoring des nœuds blockchain
|
||||
- Alerting
|
||||
- Métriques et dashboards
|
||||
- **Logs** :
|
||||
- Centralisation des logs
|
||||
- Analyse de logs
|
||||
- Rotation des logs
|
||||
|
||||
### CI/CD et Automatisation
|
||||
- **Intégration Continue** :
|
||||
- Configuration de pipelines CI/CD
|
||||
- Tests automatisés
|
||||
- Build automatisé
|
||||
- Déploiement automatisé
|
||||
- **Outils** :
|
||||
- GitHub Actions, GitLab CI, Drone CI
|
||||
- Scripts d'automatisation
|
||||
- Configuration de workflows
|
||||
|
||||
### Automatisation et Scripting
|
||||
- **Scripts** :
|
||||
- Bash scripting avancé
|
||||
- Python scripting pour automatisation
|
||||
- Automatisation de tâches d'administration
|
||||
- Scripts de déploiement
|
||||
- Automatisation des environnements pour cohérence
|
||||
- **Compétences requises** : Scripting, automatisation, amélioration de la cohérence des environnements
|
||||
|
||||
### Infrastructure Cloud/On-Premise
|
||||
- **Cloud** :
|
||||
- Déploiement sur cloud (si applicable)
|
||||
- Gestion de ressources cloud
|
||||
- Auto-scaling
|
||||
- **On-Premise** :
|
||||
- Gestion de serveurs physiques
|
||||
- Virtualisation (VMware, Hyper-V, KVM)
|
||||
- Gestion de l'infrastructure
|
||||
- Provisioning de serveurs
|
||||
|
||||
### Gestion de Configuration
|
||||
- **Configuration Management** :
|
||||
- Ansible, Puppet, Chef
|
||||
- Infrastructure as Code
|
||||
- Configuration de serveurs
|
||||
- **Versioning** :
|
||||
- Versioning de la configuration
|
||||
- Gestion des environnements (dev, staging, prod)
|
||||
|
||||
### Sauvegarde et Récupération
|
||||
- **Sauvegarde** :
|
||||
- Stratégies de sauvegarde
|
||||
- Sauvegarde des bases de données
|
||||
- Sauvegarde de la configuration
|
||||
- Sauvegarde de la blockchain
|
||||
- **Récupération** :
|
||||
- Plans de reprise après sinistre
|
||||
- Tests de restauration
|
||||
- RTO/RPO
|
||||
|
||||
## Compétences DevOps
|
||||
|
||||
### Container Orchestration
|
||||
- **Kubernetes** : Orchestration de conteneurs (mentionné comme compétence requise)
|
||||
- **Docker Swarm** : Alternative à Kubernetes
|
||||
- **Compétences requises** : Orchestration, scaling, service mesh, gestion de clusters
|
||||
|
||||
### Infrastructure as Code
|
||||
- **Terraform** : Provisioning d'infrastructure
|
||||
- **CloudFormation** : Si AWS
|
||||
- **Compétences requises** : IaC, provisioning automatisé
|
||||
|
||||
### Secrets Management
|
||||
- **Gestion des secrets** : Vault, AWS Secrets Manager
|
||||
- **Compétences requises** : Sécurité des secrets, rotation
|
||||
|
||||
## Compétences Spécialisées Blockchain
|
||||
|
||||
### Cryptographie
|
||||
- **Cryptographie appliquée** :
|
||||
- Signatures cryptographiques
|
||||
- Hashing
|
||||
- Clés publiques/privées
|
||||
- Certificats
|
||||
- **Compétences requises** : Cryptographie, sécurité
|
||||
|
||||
### Consensus et Réseau
|
||||
- **Protocoles de consensus** : Compréhension des mécanismes de consensus
|
||||
- **Réseau P2P** : Gestion de réseaux pair-à-pair
|
||||
- **Compétences requises** : Blockchain, réseaux distribués
|
||||
|
||||
## Résumé des Compétences par Catégorie
|
||||
|
||||
### Développement
|
||||
- Rust (avancé)
|
||||
- Python
|
||||
- JavaScript/TypeScript
|
||||
- Vue.js / Nuxt.js
|
||||
- Substrate Framework
|
||||
- Développement CLI
|
||||
- Extensions navigateur
|
||||
- APIs REST/GraphQL
|
||||
|
||||
### Blockchain
|
||||
- Développement blockchain
|
||||
- Substrate
|
||||
- Consensus algorithms
|
||||
- Cryptographie
|
||||
- Réseaux P2P
|
||||
|
||||
### Web
|
||||
- Frameworks web modernes
|
||||
- JAMstack
|
||||
- CMS headless
|
||||
- Intégrations d'APIs
|
||||
|
||||
### Infrastructure
|
||||
- Administration Linux
|
||||
- Docker/Conteneurisation
|
||||
- CI/CD
|
||||
- Monitoring
|
||||
- Sécurité
|
||||
- Bases de données
|
||||
- Réseau
|
||||
|
||||
### DevOps
|
||||
- Automatisation
|
||||
- Infrastructure as Code
|
||||
- Gestion de configuration
|
||||
- Orchestration
|
||||
|
||||
## Compétences Transversales
|
||||
|
||||
### Communication et Collaboration
|
||||
- Travail en équipe avec développeurs et parties prenantes
|
||||
- Communication efficace
|
||||
- Documentation technique
|
||||
- Partage de connaissances
|
||||
|
||||
### Veille Technologique
|
||||
- Suivi des évolutions technologiques
|
||||
- Meilleures pratiques du secteur
|
||||
- Évaluation de nouvelles technologies
|
||||
- Adaptation aux changements
|
||||
|
||||
## Notes
|
||||
|
||||
Cette liste est basée sur l'analyse des projets visibles sur https://git.duniter.org/ et les informations disponibles sur l'écosystème Duniter/Ğ1. Certaines technologies peuvent être utilisées mais non explicitement mentionnées dans les descriptions de projets.
|
||||
|
||||
### Sources
|
||||
- https://git.duniter.org/ - Dépôt principal des projets Duniter
|
||||
- Documentation technique des projets individuels
|
||||
- Analyse des technologies blockchain et monnaies libres
|
||||
|
||||
### Pour une analyse complète, il serait recommandé de :
|
||||
1. Examiner le code source des projets principaux
|
||||
2. Analyser les fichiers de configuration (package.json, Cargo.toml, requirements.txt, Dockerfile)
|
||||
3. Examiner les fichiers de déploiement (docker-compose.yml, scripts CI/CD)
|
||||
4. Consulter la documentation technique de chaque projet
|
||||
5. Analyser les dépendances et bibliothèques utilisées
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"build": "techradar build",
|
||||
"serve": "techradar serve"
|
||||
"serve": "techradar serve",
|
||||
"extract-tech": "node scripts/extract-technologies.js",
|
||||
"analyze-business": "node scripts/analyze-business-metrics.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"aoe_technology_radar": "github:AOEpeople/aoe_technology_radar#main"
|
||||
|
||||
37
radar-business/2025-01-15/bash.md
Normal file
37
radar-business/2025-01-15/bash.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "Bash"
|
||||
ring: support
|
||||
quadrant: technologies-commodite
|
||||
tags: [bash, scripting]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: medium
|
||||
competencyLevel: beginner
|
||||
maintenanceCost: 0
|
||||
differentiation: medium
|
||||
teamCoverage: 1
|
||||
skillGap: high
|
||||
---
|
||||
|
||||
Technologie Bash utilisée dans l'écosystème Duniter/Ğ1.
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 1
|
||||
- Membres de l'équipe : poka
|
||||
- Niveau moyen : beginner
|
||||
- Risque de compétence manquante : high
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
37
radar-business/2025-01-15/cryptographie.md
Normal file
37
radar-business/2025-01-15/cryptographie.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "Cryptographie"
|
||||
ring: support
|
||||
quadrant: technologies-commodite
|
||||
tags: [cryptographie, chiffrage]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: medium
|
||||
competencyLevel: beginner
|
||||
maintenanceCost: 0
|
||||
differentiation: medium
|
||||
teamCoverage: 1
|
||||
skillGap: high
|
||||
---
|
||||
|
||||
Technologie Cryptographie utilisée dans l'écosystème Duniter/Ğ1.
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 1
|
||||
- Membres de l'équipe : tuxmain
|
||||
- Niveau moyen : beginner
|
||||
- Risque de compétence manquante : high
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
37
radar-business/2025-01-15/dart.md
Normal file
37
radar-business/2025-01-15/dart.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "Dart"
|
||||
ring: support
|
||||
quadrant: technologies-commodite
|
||||
tags: [Dart, Flutter]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: medium
|
||||
competencyLevel: beginner
|
||||
maintenanceCost: 0
|
||||
differentiation: medium
|
||||
teamCoverage: 1
|
||||
skillGap: high
|
||||
---
|
||||
|
||||
Technologie Dart utilisée dans l'écosystème Duniter/Ğ1.
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 1
|
||||
- Membres de l'équipe : poka
|
||||
- Niveau moyen : beginner
|
||||
- Risque de compétence manquante : high
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
37
radar-business/2025-01-15/docker.md
Normal file
37
radar-business/2025-01-15/docker.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "Docker"
|
||||
ring: support
|
||||
quadrant: technologies-commodite
|
||||
tags: [Docker, conteneurisation]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: low
|
||||
competencyLevel: beginner
|
||||
maintenanceCost: 0
|
||||
differentiation: low
|
||||
teamCoverage: 1
|
||||
skillGap: high
|
||||
---
|
||||
|
||||
Technologie Docker utilisée dans l'écosystème Duniter/Ğ1.
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 1
|
||||
- Membres de l'équipe : 1000i100
|
||||
- Niveau moyen : beginner
|
||||
- Risque de compétence manquante : high
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
37
radar-business/2025-01-15/flutter.md
Normal file
37
radar-business/2025-01-15/flutter.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "Flutter"
|
||||
ring: support
|
||||
quadrant: technologies-commodite
|
||||
tags: [Flutter, Dart]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: medium
|
||||
competencyLevel: beginner
|
||||
maintenanceCost: 0
|
||||
differentiation: medium
|
||||
teamCoverage: 1
|
||||
skillGap: high
|
||||
---
|
||||
|
||||
Technologie Flutter utilisée dans l'écosystème Duniter/Ğ1.
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 1
|
||||
- Membres de l'équipe : poka
|
||||
- Niveau moyen : beginner
|
||||
- Risque de compétence manquante : high
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
37
radar-business/2025-01-15/gitlab-ci-cd.md
Normal file
37
radar-business/2025-01-15/gitlab-ci-cd.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "GitLab CI/CD"
|
||||
ring: support
|
||||
quadrant: technologies-commodite
|
||||
tags: [GitLab, CI/CD]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: medium
|
||||
competencyLevel: beginner
|
||||
maintenanceCost: 0
|
||||
differentiation: medium
|
||||
teamCoverage: 1
|
||||
skillGap: high
|
||||
---
|
||||
|
||||
Technologie GitLab CI/CD utilisée dans l'écosystème Duniter/Ğ1.
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 1
|
||||
- Membres de l'équipe : 1000i100
|
||||
- Niveau moyen : beginner
|
||||
- Risque de compétence manquante : high
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
37
radar-business/2025-01-15/ipfs.md
Normal file
37
radar-business/2025-01-15/ipfs.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "IPFS"
|
||||
ring: strategic
|
||||
quadrant: technologies-emergentes
|
||||
tags: [IPFS, distribué]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: medium
|
||||
competencyLevel: intermediate
|
||||
maintenanceCost: 0
|
||||
differentiation: high
|
||||
teamCoverage: 2
|
||||
skillGap: medium
|
||||
---
|
||||
|
||||
Technologie IPFS utilisée dans l'écosystème Duniter/Ğ1.
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 2
|
||||
- Membres de l'équipe : aya, Fred
|
||||
- Niveau moyen : intermediate
|
||||
- Risque de compétence manquante : medium
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
43
radar-business/2025-01-15/javascript-typescript.md
Normal file
43
radar-business/2025-01-15/javascript-typescript.md
Normal file
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: "JavaScript/TypeScript"
|
||||
ring: support
|
||||
quadrant: technologies-commodite
|
||||
tags: [JavaScript, TypeScript, web]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: medium
|
||||
competencyLevel: expert
|
||||
maintenanceCost: 0
|
||||
differentiation: medium
|
||||
teamCoverage: 3
|
||||
skillGap: low
|
||||
---
|
||||
|
||||
- **Utilisation** : Clients web, extensions navigateur, sites web
|
||||
- **Projets** :
|
||||
- `Ğ1Companion` : Extension web pour navigateurs
|
||||
- Clients web divers
|
||||
- **Compétences requises** : JavaScript/TypeScript, développement d'extensions navigateur, Web APIs
|
||||
|
||||
#
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 3
|
||||
- Membres de l'équipe : ManUtopiK, 1000i100, boris
|
||||
- Niveau moyen : expert
|
||||
- Risque de compétence manquante : low
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
37
radar-business/2025-01-15/kubernetes.md
Normal file
37
radar-business/2025-01-15/kubernetes.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "Kubernetes"
|
||||
ring: support
|
||||
quadrant: technologies-commodite
|
||||
tags: [Kubernetes, orchestration]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: medium
|
||||
competencyLevel: beginner
|
||||
maintenanceCost: 0
|
||||
differentiation: medium
|
||||
teamCoverage: 0
|
||||
skillGap: high
|
||||
---
|
||||
|
||||
Technologie Kubernetes utilisée dans l'écosystème Duniter/Ğ1.
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 0
|
||||
- Membres de l'équipe : Aucun
|
||||
- Niveau moyen : beginner
|
||||
- Risque de compétence manquante : high
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
37
radar-business/2025-01-15/linux.md
Normal file
37
radar-business/2025-01-15/linux.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "Linux"
|
||||
ring: support
|
||||
quadrant: technologies-commodite
|
||||
tags: [Linux, système]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: low
|
||||
competencyLevel: intermediate
|
||||
maintenanceCost: 0
|
||||
differentiation: low
|
||||
teamCoverage: 2
|
||||
skillGap: medium
|
||||
---
|
||||
|
||||
Technologie Linux utilisée dans l'écosystème Duniter/Ğ1.
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 2
|
||||
- Membres de l'équipe : aya, boris
|
||||
- Niveau moyen : intermediate
|
||||
- Risque de compétence manquante : medium
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
40
radar-business/2025-01-15/netlifycms.md
Normal file
40
radar-business/2025-01-15/netlifycms.md
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: "NetlifyCMS"
|
||||
ring: support
|
||||
quadrant: technologies-commodite
|
||||
tags: [CMS, Git]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: medium
|
||||
competencyLevel: intermediate
|
||||
maintenanceCost: 0
|
||||
differentiation: medium
|
||||
teamCoverage: 2
|
||||
skillGap: medium
|
||||
---
|
||||
|
||||
- **Utilisation** : CMS headless basé sur Git
|
||||
- **Projets** :
|
||||
- `monnaie-libre-fr` : CMS pour le site web
|
||||
- **Compétences requises** : Git-based CMS, JAMstack, workflows Git
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 2
|
||||
- Membres de l'équipe : ManUtopiK, 1000i100
|
||||
- Niveau moyen : intermediate
|
||||
- Risque de compétence manquante : medium
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
37
radar-business/2025-01-15/nostr.md
Normal file
37
radar-business/2025-01-15/nostr.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "Nostr"
|
||||
ring: strategic
|
||||
quadrant: technologies-emergentes
|
||||
tags: [Nostr, protocole]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: medium
|
||||
competencyLevel: beginner
|
||||
maintenanceCost: 0
|
||||
differentiation: high
|
||||
teamCoverage: 1
|
||||
skillGap: high
|
||||
---
|
||||
|
||||
Technologie Nostr utilisée dans l'écosystème Duniter/Ğ1.
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 1
|
||||
- Membres de l'équipe : Fred
|
||||
- Niveau moyen : beginner
|
||||
- Risque de compétence manquante : high
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
40
radar-business/2025-01-15/nuxt-js.md
Normal file
40
radar-business/2025-01-15/nuxt-js.md
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: "Nuxt.js"
|
||||
ring: support
|
||||
quadrant: technologies-commodite
|
||||
tags: [Nuxt, Vue, SSR]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: medium
|
||||
competencyLevel: intermediate
|
||||
maintenanceCost: 0
|
||||
differentiation: medium
|
||||
teamCoverage: 2
|
||||
skillGap: medium
|
||||
---
|
||||
|
||||
- **Utilisation** : Framework Vue.js pour sites web
|
||||
- **Projets** :
|
||||
- `monnaie-libre-fr` : Site web avec Nuxt + nuxt-content
|
||||
- **Compétences requises** : Vue.js, Nuxt.js, SSR, JAMstack
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 2
|
||||
- Membres de l'équipe : ManUtopiK, boris
|
||||
- Niveau moyen : intermediate
|
||||
- Risque de compétence manquante : medium
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
37
radar-business/2025-01-15/postgresql.md
Normal file
37
radar-business/2025-01-15/postgresql.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "PostgreSQL"
|
||||
ring: support
|
||||
quadrant: technologies-commodite
|
||||
tags: [PostgreSQL, base de données]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: low
|
||||
competencyLevel: beginner
|
||||
maintenanceCost: 0
|
||||
differentiation: low
|
||||
teamCoverage: 0
|
||||
skillGap: high
|
||||
---
|
||||
|
||||
Technologie PostgreSQL utilisée dans l'écosystème Duniter/Ğ1.
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 0
|
||||
- Membres de l'équipe : Aucun
|
||||
- Niveau moyen : beginner
|
||||
- Risque de compétence manquante : high
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
37
radar-business/2025-01-15/proxmox.md
Normal file
37
radar-business/2025-01-15/proxmox.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "ProxMox"
|
||||
ring: support
|
||||
quadrant: technologies-commodite
|
||||
tags: [ProxMox, virtualisation]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: medium
|
||||
competencyLevel: beginner
|
||||
maintenanceCost: 0
|
||||
differentiation: medium
|
||||
teamCoverage: 1
|
||||
skillGap: high
|
||||
---
|
||||
|
||||
Technologie ProxMox utilisée dans l'écosystème Duniter/Ğ1.
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 1
|
||||
- Membres de l'équipe : poka
|
||||
- Niveau moyen : beginner
|
||||
- Risque de compétence manquante : high
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
41
radar-business/2025-01-15/python.md
Normal file
41
radar-business/2025-01-15/python.md
Normal file
@@ -0,0 +1,41 @@
|
||||
---
|
||||
title: "Python"
|
||||
ring: support
|
||||
quadrant: technologies-commodite
|
||||
tags: [Python, CLI]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: medium
|
||||
competencyLevel: beginner
|
||||
maintenanceCost: 0
|
||||
differentiation: medium
|
||||
teamCoverage: 1
|
||||
skillGap: high
|
||||
---
|
||||
|
||||
- **Utilisation** : Clients en ligne de commande et outils
|
||||
- **Projets** :
|
||||
- `silkaj` : Client CLI Python pour la monnaie Ğ1
|
||||
- `Tikka` : Client riche pour la monnaie Ğ1
|
||||
- **Compétences requises** : Python, développement CLI, APIs REST
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 1
|
||||
- Membres de l'équipe : poka
|
||||
- Niveau moyen : beginner
|
||||
- Risque de compétence manquante : high
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
42
radar-business/2025-01-15/rust.md
Normal file
42
radar-business/2025-01-15/rust.md
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: "Rust"
|
||||
ring: core
|
||||
quadrant: technologies-differentiantes
|
||||
tags: [Rust, blockchain, Substrate]
|
||||
businessImpact: high
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: medium
|
||||
competencyLevel: beginner
|
||||
maintenanceCost: 0
|
||||
differentiation: high
|
||||
teamCoverage: 1
|
||||
skillGap: high
|
||||
---
|
||||
|
||||
- **Utilisation** : Développement du nœud Duniter v2S (basé sur Substrate)
|
||||
- **Projets** :
|
||||
- `Duniter v2S` : Nœud blockchain principal
|
||||
- `Ğcli-v2s` : Interface en ligne de commande Rust
|
||||
- `homebrew-duniter-gcli` : Package Homebrew pour Ğcli
|
||||
- **Compétences requises** : Rust avancé, développement blockchain, Substrate framework
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 1
|
||||
- Membres de l'équipe : Eloïs
|
||||
- Niveau moyen : beginner
|
||||
- Risque de compétence manquante : high
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
37
radar-business/2025-01-15/serverless.md
Normal file
37
radar-business/2025-01-15/serverless.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "Serverless"
|
||||
ring: strategic
|
||||
quadrant: technologies-emergentes
|
||||
tags: [Serverless]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: medium
|
||||
competencyLevel: beginner
|
||||
maintenanceCost: 0
|
||||
differentiation: high
|
||||
teamCoverage: 1
|
||||
skillGap: high
|
||||
---
|
||||
|
||||
Technologie Serverless utilisée dans l'écosystème Duniter/Ğ1.
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 1
|
||||
- Membres de l'équipe : 1000i100
|
||||
- Niveau moyen : beginner
|
||||
- Risque de compétence manquante : high
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
40
radar-business/2025-01-15/squid.md
Normal file
40
radar-business/2025-01-15/squid.md
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: "Squid"
|
||||
ring: support
|
||||
quadrant: technologies-commodite
|
||||
tags: [Squid, indexer, GraphQL]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: medium
|
||||
competencyLevel: beginner
|
||||
maintenanceCost: 0
|
||||
differentiation: medium
|
||||
teamCoverage: 1
|
||||
skillGap: high
|
||||
---
|
||||
|
||||
- **Utilisation** : Indexation de données blockchain
|
||||
- **Projets** :
|
||||
- `duniter-squid` : Indexer basé sur Squid pour Duniter v2S
|
||||
- **Compétences requises** : Indexation de données, GraphQL, blockchain data processing
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 1
|
||||
- Membres de l'équipe : boris
|
||||
- Niveau moyen : beginner
|
||||
- Risque de compétence manquante : high
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
39
radar-business/2025-01-15/substrate-framework.md
Normal file
39
radar-business/2025-01-15/substrate-framework.md
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: "Substrate Framework"
|
||||
ring: core
|
||||
quadrant: technologies-differentiantes
|
||||
tags: [Substrate, Rust, blockchain]
|
||||
businessImpact: high
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: medium
|
||||
competencyLevel: beginner
|
||||
maintenanceCost: 0
|
||||
differentiation: high
|
||||
teamCoverage: 1
|
||||
skillGap: high
|
||||
---
|
||||
|
||||
- **Utilisation** : Framework blockchain pour Duniter v2S
|
||||
- **Description** : Framework Rust pour construire des blockchains personnalisées
|
||||
- **Compétences requises** : Blockchain, Rust, Substrate, consensus algorithms
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 1
|
||||
- Membres de l'équipe : Eloïs
|
||||
- Niveau moyen : beginner
|
||||
- Risque de compétence manquante : high
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
37
radar-business/2025-01-15/vue-js.md
Normal file
37
radar-business/2025-01-15/vue-js.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "Vue.js"
|
||||
ring: support
|
||||
quadrant: technologies-commodite
|
||||
tags: [Vue, JavaScript]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: medium
|
||||
competencyLevel: intermediate
|
||||
maintenanceCost: 0
|
||||
differentiation: medium
|
||||
teamCoverage: 2
|
||||
skillGap: medium
|
||||
---
|
||||
|
||||
Technologie Vue.js utilisée dans l'écosystème Duniter/Ğ1.
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 2
|
||||
- Membres de l'équipe : ManUtopiK, boris
|
||||
- Niveau moyen : intermediate
|
||||
- Risque de compétence manquante : medium
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
42
radar-business/2025-01-15/wordup-cms.md
Normal file
42
radar-business/2025-01-15/wordup-cms.md
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: "WordUp CMS"
|
||||
ring: support
|
||||
quadrant: technologies-commodite
|
||||
tags: [CMS]
|
||||
businessImpact: medium
|
||||
costToReplace: 0
|
||||
revenueImpact: indirect
|
||||
riskLevel: medium
|
||||
competencyLevel: beginner
|
||||
maintenanceCost: 0
|
||||
differentiation: medium
|
||||
teamCoverage: 1
|
||||
skillGap: high
|
||||
---
|
||||
|
||||
- **Utilisation** : CMS pour sites web
|
||||
- **Projets** :
|
||||
- `axiom-team-fr` : Site de production avec WordUp
|
||||
- **Compétences requises** : CMS management, intégration d'APIs
|
||||
|
||||
#
|
||||
|
||||
## Impact Business
|
||||
|
||||
À compléter
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 0€
|
||||
- Coût de maintenance annuel : 0€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 1
|
||||
- Membres de l'équipe : ManUtopiK
|
||||
- Niveau moyen : beginner
|
||||
- Risque de compétence manquante : high
|
||||
|
||||
## Recommandations
|
||||
|
||||
À compléter avec des recommandations stratégiques.
|
||||
139
radar-business/FORMAT-BLIP.md
Normal file
139
radar-business/FORMAT-BLIP.md
Normal file
@@ -0,0 +1,139 @@
|
||||
# Format de Blip Enrichi - Métadonnées Business
|
||||
|
||||
Ce document définit le format standard pour les blips du radar business avec toutes les métadonnées business.
|
||||
|
||||
## Structure de base
|
||||
|
||||
```markdown
|
||||
---
|
||||
title: "Nom de la technologie"
|
||||
ring: core|strategic|support|legacy
|
||||
quadrant: technologies-differentiantes|technologies-commodite|technologies-risque|technologies-emergentes
|
||||
tags: [tag1, tag2]
|
||||
businessImpact: high|medium|low
|
||||
costToReplace: 50000
|
||||
revenueImpact: direct|indirect|none
|
||||
riskLevel: high|medium|low
|
||||
competencyLevel: expert|intermediate|beginner
|
||||
maintenanceCost: 10000
|
||||
differentiation: high|medium|low
|
||||
teamCoverage: 3
|
||||
skillGap: low|medium|high
|
||||
---
|
||||
|
||||
Description de la technologie en Markdown.
|
||||
|
||||
## Impact Business
|
||||
|
||||
Description de l'impact sur le business.
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : X€
|
||||
- Coût de maintenance annuel : Y€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : N
|
||||
- Niveau moyen : expert|intermediate|beginner
|
||||
- Risque de compétence manquante : low|medium|high
|
||||
|
||||
## Recommandations
|
||||
|
||||
Recommandations stratégiques pour cette technologie.
|
||||
```
|
||||
|
||||
## Description des métadonnées
|
||||
|
||||
### Métadonnées standard
|
||||
|
||||
- **title** (obligatoire) : Nom de la technologie
|
||||
- **ring** (obligatoire) :
|
||||
- `core` : Critique pour le business model
|
||||
- `strategic` : Stratégique pour la croissance
|
||||
- `support` : De support nécessaire
|
||||
- `legacy` : À remplacer
|
||||
- **quadrant** (obligatoire) :
|
||||
- `technologies-differentiantes` : Créent un avantage concurrentiel
|
||||
- `technologies-commodite` : Nécessaires mais non différenciantes
|
||||
- `technologies-risque` : Obsolètes, coûteuses, à migrer
|
||||
- `technologies-emergentes` : Opportunités futures
|
||||
- **tags** (optionnel) : Tags pour le filtrage
|
||||
|
||||
### Métadonnées business
|
||||
|
||||
- **businessImpact** (obligatoire) :
|
||||
- `high` : Impact majeur sur le business
|
||||
- `medium` : Impact modéré
|
||||
- `low` : Impact faible
|
||||
- **costToReplace** (obligatoire) : Coût estimé de remplacement en euros (0 si non applicable)
|
||||
- **revenueImpact** (obligatoire) :
|
||||
- `direct` : Impact direct sur les revenus
|
||||
- `indirect` : Impact indirect (support, efficacité)
|
||||
- `none` : Pas d'impact sur les revenus
|
||||
- **riskLevel** (obligatoire) :
|
||||
- `high` : Risque élevé (obsolescence, sécurité, dépendance)
|
||||
- `medium` : Risque modéré
|
||||
- `low` : Risque faible
|
||||
- **maintenanceCost** (obligatoire) : Coût annuel de maintenance en euros
|
||||
- **differentiation** (obligatoire) :
|
||||
- `high` : Forte capacité de différenciation
|
||||
- `medium` : Différenciation modérée
|
||||
- `low` : Faible différenciation (commodité)
|
||||
|
||||
### Métadonnées compétences
|
||||
|
||||
- **competencyLevel** (obligatoire) : Niveau moyen de compétence de l'équipe
|
||||
- `expert` : Plusieurs experts dans l'équipe
|
||||
- `intermediate` : Compétences intermédiaires
|
||||
- `beginner` : Compétences limitées
|
||||
- **teamCoverage** (obligatoire) : Nombre de personnes maîtrisant la technologie
|
||||
- **skillGap** (obligatoire) : Risque de compétence manquante
|
||||
- `high` : Risque élevé (peu de personnes, départ possible)
|
||||
- `medium` : Risque modéré
|
||||
- `low` : Risque faible (plusieurs personnes compétentes)
|
||||
|
||||
## Exemple complet
|
||||
|
||||
```markdown
|
||||
---
|
||||
title: "Rust / Substrate"
|
||||
ring: core
|
||||
quadrant: technologies-differentiantes
|
||||
tags: [blockchain, rust, substrate]
|
||||
businessImpact: high
|
||||
costToReplace: 200000
|
||||
revenueImpact: direct
|
||||
riskLevel: medium
|
||||
competencyLevel: intermediate
|
||||
maintenanceCost: 50000
|
||||
differentiation: high
|
||||
teamCoverage: 2
|
||||
skillGap: high
|
||||
---
|
||||
|
||||
Rust et le framework Substrate sont au cœur du développement de Duniter v2S, le nœud blockchain principal.
|
||||
|
||||
## Impact Business
|
||||
|
||||
Technologie critique pour le fonctionnement de la blockchain Ğ1. Sans cette technologie, le projet ne peut pas fonctionner.
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : 200 000€ (refonte complète)
|
||||
- Coût de maintenance annuel : 50 000€ (développement, mise à jour)
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : 2 (Eloïs, autres contributeurs)
|
||||
- Niveau moyen : intermediate
|
||||
- Risque de compétence manquante : high (peu de personnes, compétences critiques)
|
||||
|
||||
## Recommandations
|
||||
|
||||
- Investir dans la formation de l'équipe sur Rust/Substrate
|
||||
- Recruter ou former des développeurs Rust supplémentaires
|
||||
- Documenter les connaissances critiques
|
||||
- Créer un plan de continuité en cas de départ de contributeurs clés
|
||||
```
|
||||
|
||||
45
radar-business/README.md
Normal file
45
radar-business/README.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# Radar Stratégique Business
|
||||
|
||||
Ce dossier contient le radar technologique orienté business pour analyser l'écosystème Duniter/Ğ1.
|
||||
|
||||
## Structure
|
||||
|
||||
- `config-business.json` : Configuration du radar avec quadrants et anneaux business
|
||||
- `2025-01-15/` : Blips des technologies avec métadonnées business
|
||||
|
||||
## Format des blips
|
||||
|
||||
Chaque technologie est définie dans un fichier Markdown avec des métadonnées enrichies :
|
||||
|
||||
```markdown
|
||||
---
|
||||
title: "Nom de la technologie"
|
||||
ring: core|strategic|support|legacy
|
||||
quadrant: technologies-differentiantes|technologies-commodite|technologies-risque|technologies-emergentes
|
||||
tags: [tag1, tag2]
|
||||
businessImpact: high|medium|low
|
||||
costToReplace: 50000
|
||||
revenueImpact: direct|indirect|none
|
||||
riskLevel: high|medium|low
|
||||
competencyLevel: expert|intermediate|beginner
|
||||
maintenanceCost: 10000
|
||||
differentiation: high|medium|low
|
||||
teamCoverage: 3
|
||||
skillGap: low|medium|high
|
||||
---
|
||||
|
||||
Description de la technologie.
|
||||
```
|
||||
|
||||
## Métadonnées business
|
||||
|
||||
- **businessImpact** : Impact sur le business (high, medium, low)
|
||||
- **costToReplace** : Coût estimé de remplacement en euros
|
||||
- **revenueImpact** : Impact sur les revenus (direct, indirect, none)
|
||||
- **riskLevel** : Niveau de risque technique/business (high, medium, low)
|
||||
- **competencyLevel** : Niveau de compétence moyen de l'équipe (expert, intermediate, beginner)
|
||||
- **maintenanceCost** : Coût annuel de maintenance en euros
|
||||
- **differentiation** : Capacité de différenciation (high, medium, low)
|
||||
- **teamCoverage** : Nombre de personnes maîtrisant la technologie
|
||||
- **skillGap** : Risque de compétence manquante (high, medium, low)
|
||||
|
||||
124
radar-business/config-business.json
Normal file
124
radar-business/config-business.json
Normal file
@@ -0,0 +1,124 @@
|
||||
{
|
||||
"basePath": "/business",
|
||||
"baseUrl": "",
|
||||
"editUrl": "https://git.open.us.org/syoul/TechradarDev/_edit/main/radar-business/{release}/{id}.md",
|
||||
"logoFile": "logo.svg",
|
||||
"jsFile": "",
|
||||
"toggles": {
|
||||
"showChart": true,
|
||||
"showTagFilter": true,
|
||||
"showQuadrantList": true,
|
||||
"showEmptyRings": false
|
||||
},
|
||||
"sections": ["radar", "tags", "list"],
|
||||
"colors": {
|
||||
"foreground": "#fff",
|
||||
"background": "#1a4d3a",
|
||||
"highlight": "#2ecc71",
|
||||
"content": "#fff",
|
||||
"text": "#575757",
|
||||
"link": "#2ecc71",
|
||||
"border": "rgba(255, 255, 255, 0.1)",
|
||||
"tag": "rgba(255, 255, 255, 0.1)"
|
||||
},
|
||||
"quadrants": [
|
||||
{
|
||||
"id": "technologies-differentiantes",
|
||||
"title": "Technologies Différenciantes",
|
||||
"description": "Technologies qui créent un avantage concurrentiel et de la valeur différenciante pour le business. Ce sont les technologies qui permettent de se distinguer sur le marché.",
|
||||
"color": "#2ecc71"
|
||||
},
|
||||
{
|
||||
"id": "technologies-commodite",
|
||||
"title": "Technologies de Commodité",
|
||||
"description": "Technologies nécessaires mais non différenciantes. Elles sont essentielles au fonctionnement mais ne créent pas d'avantage concurrentiel. À optimiser pour réduire les coûts.",
|
||||
"color": "#3498db"
|
||||
},
|
||||
{
|
||||
"id": "technologies-risque",
|
||||
"title": "Technologies à Risque",
|
||||
"description": "Technologies obsolètes, coûteuses ou présentant des risques techniques ou business. À migrer ou remplacer pour réduire les risques et les coûts.",
|
||||
"color": "#e74c3c"
|
||||
},
|
||||
{
|
||||
"id": "technologies-emergentes",
|
||||
"title": "Technologies Émergentes",
|
||||
"description": "Technologies prometteuses représentant des opportunités futures. À évaluer et potentiellement adopter pour créer de nouveaux avantages compétitifs.",
|
||||
"color": "#f39c12"
|
||||
}
|
||||
],
|
||||
"rings": [
|
||||
{
|
||||
"id": "core",
|
||||
"title": "Core",
|
||||
"description": "Technologies critiques pour le business model. Indispensables au fonctionnement et à la création de valeur. Investissement prioritaire en maintenance et évolution.",
|
||||
"color": "#27ae60",
|
||||
"radius": 0.5,
|
||||
"strokeWidth": 5
|
||||
},
|
||||
{
|
||||
"id": "strategic",
|
||||
"title": "Strategic",
|
||||
"description": "Technologies stratégiques pour la croissance et le développement. Investissements importants pour renforcer la position concurrentielle.",
|
||||
"color": "#3498db",
|
||||
"radius": 0.69,
|
||||
"strokeWidth": 4
|
||||
},
|
||||
{
|
||||
"id": "support",
|
||||
"title": "Support",
|
||||
"description": "Technologies de support nécessaires mais non critiques. À maintenir à un niveau fonctionnel sans sur-investissement.",
|
||||
"color": "#95a5a6",
|
||||
"radius": 0.85,
|
||||
"strokeWidth": 3
|
||||
},
|
||||
{
|
||||
"id": "legacy",
|
||||
"title": "Legacy",
|
||||
"description": "Technologies à remplacer. Présentent des risques techniques, des coûts élevés ou sont obsolètes. Planifier la migration vers des alternatives modernes.",
|
||||
"color": "#c0392b",
|
||||
"radius": 1,
|
||||
"strokeWidth": 2
|
||||
}
|
||||
],
|
||||
"flags": {
|
||||
"new": {
|
||||
"color": "#f1235a",
|
||||
"title": "Nouveau",
|
||||
"titleShort": "N",
|
||||
"description": "Nouveau dans cette version"
|
||||
},
|
||||
"changed": {
|
||||
"color": "#40a7d1",
|
||||
"title": "Modifié",
|
||||
"titleShort": "M",
|
||||
"description": "Récemment modifié"
|
||||
},
|
||||
"default": {
|
||||
"description": "Inchangé"
|
||||
}
|
||||
},
|
||||
"chart": {
|
||||
"size": 800,
|
||||
"blipSize": 12
|
||||
},
|
||||
"social": [],
|
||||
"imprint": "",
|
||||
"labels": {
|
||||
"title": "Radar Stratégique Business - Duniter/Ğ1",
|
||||
"imprint": "Informations légales",
|
||||
"quadrant": "Quadrant",
|
||||
"quadrantOverview": "Vue d'ensemble des quadrants",
|
||||
"zoomIn": "Zoomer",
|
||||
"filterByTag": "Filtrer par tag",
|
||||
"footer": "Radar stratégique pour analyser les technologies de l'écosystème Duniter/Ğ1 et définir une stratégie d'évolution technique alignée avec les objectifs business.",
|
||||
"notUpdated": "Cet élément n'a pas été mis à jour dans les trois dernières versions du Radar.",
|
||||
"notFound": "404 - Page non trouvée",
|
||||
"pageAbout": "Comment utiliser le Radar Business ?",
|
||||
"pageOverview": "Vue d'ensemble des technologies",
|
||||
"pageSearch": "Recherche",
|
||||
"searchPlaceholder": "Que recherchez-vous ?",
|
||||
"metaDescription": "Radar stratégique business pour l'écosystème Duniter/Ğ1 - Analyse des technologies et définition de la stratégie d'évolution."
|
||||
}
|
||||
}
|
||||
|
||||
392
scripts/analyze-business-metrics.js
Executable file
392
scripts/analyze-business-metrics.js
Executable file
@@ -0,0 +1,392 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* Script pour analyser les métriques business du radar
|
||||
* et identifier des patterns stratégiques
|
||||
*/
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
// Parser un blip
|
||||
function parseBlip(filePath) {
|
||||
const content = fs.readFileSync(filePath, 'utf-8');
|
||||
const frontMatterMatch = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
|
||||
|
||||
if (!frontMatterMatch) return null;
|
||||
|
||||
const frontMatter = frontMatterMatch[1];
|
||||
const body = frontMatterMatch[2];
|
||||
|
||||
const metadata = {};
|
||||
for (const line of frontMatter.split('\n')) {
|
||||
const match = line.match(/^(\w+):\s*(.+)$/);
|
||||
if (match) {
|
||||
const key = match[1];
|
||||
let value = match[2].trim();
|
||||
|
||||
// Parser les valeurs
|
||||
if (value === 'true') value = true;
|
||||
else if (value === 'false') value = false;
|
||||
else if (!isNaN(value) && value !== '') value = Number(value);
|
||||
else if (value.startsWith('[')) {
|
||||
value = value.slice(1, -1).split(',').map(v => v.trim().replace(/['"]/g, ''));
|
||||
}
|
||||
|
||||
metadata[key] = value;
|
||||
}
|
||||
}
|
||||
|
||||
return { metadata, body };
|
||||
}
|
||||
|
||||
// Analyser tous les blips
|
||||
function analyzeRadar(radarDir) {
|
||||
const files = fs.readdirSync(radarDir).filter(f => f.endsWith('.md'));
|
||||
const blips = [];
|
||||
|
||||
for (const file of files) {
|
||||
const blip = parseBlip(path.join(radarDir, file));
|
||||
if (blip) {
|
||||
blips.push({
|
||||
file,
|
||||
...blip
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return blips;
|
||||
}
|
||||
|
||||
// Calculer les métriques
|
||||
function calculateMetrics(blips) {
|
||||
const metrics = {
|
||||
total: blips.length,
|
||||
byQuadrant: {},
|
||||
byRing: {},
|
||||
totalCostToReplace: 0,
|
||||
totalMaintenanceCost: 0,
|
||||
riskDistribution: { high: 0, medium: 0, low: 0 },
|
||||
competencyDistribution: { expert: 0, intermediate: 0, beginner: 0 },
|
||||
skillGapDistribution: { high: 0, medium: 0, low: 0 },
|
||||
businessImpactDistribution: { high: 0, medium: 0, low: 0 },
|
||||
differentiationDistribution: { high: 0, medium: 0, low: 0 },
|
||||
totalTeamCoverage: 0,
|
||||
technologiesByRisk: {
|
||||
high: [],
|
||||
medium: [],
|
||||
low: []
|
||||
},
|
||||
technologiesBySkillGap: {
|
||||
high: [],
|
||||
medium: [],
|
||||
low: []
|
||||
},
|
||||
criticalTechnologies: [],
|
||||
emergingTechnologies: []
|
||||
};
|
||||
|
||||
for (const blip of blips) {
|
||||
const m = blip.metadata;
|
||||
|
||||
// Par quadrant
|
||||
if (!metrics.byQuadrant[m.quadrant]) {
|
||||
metrics.byQuadrant[m.quadrant] = 0;
|
||||
}
|
||||
metrics.byQuadrant[m.quadrant]++;
|
||||
|
||||
// Par ring
|
||||
if (!metrics.byRing[m.ring]) {
|
||||
metrics.byRing[m.ring] = 0;
|
||||
}
|
||||
metrics.byRing[m.ring]++;
|
||||
|
||||
// Coûts
|
||||
metrics.totalCostToReplace += m.costToReplace || 0;
|
||||
metrics.totalMaintenanceCost += m.maintenanceCost || 0;
|
||||
|
||||
// Distributions
|
||||
if (m.riskLevel) metrics.riskDistribution[m.riskLevel]++;
|
||||
if (m.competencyLevel) metrics.competencyDistribution[m.competencyLevel]++;
|
||||
if (m.skillGap) metrics.skillGapDistribution[m.skillGap]++;
|
||||
if (m.businessImpact) metrics.businessImpactDistribution[m.businessImpact]++;
|
||||
if (m.differentiation) metrics.differentiationDistribution[m.differentiation]++;
|
||||
|
||||
// Coverage
|
||||
metrics.totalTeamCoverage += m.teamCoverage || 0;
|
||||
|
||||
// Technologies à risque
|
||||
if (m.riskLevel === 'high') {
|
||||
metrics.technologiesByRisk.high.push({
|
||||
name: m.title,
|
||||
quadrant: m.quadrant,
|
||||
ring: m.ring,
|
||||
riskLevel: m.riskLevel
|
||||
});
|
||||
}
|
||||
|
||||
// Technologies avec gap de compétences
|
||||
if (m.skillGap === 'high') {
|
||||
metrics.technologiesBySkillGap.high.push({
|
||||
name: m.title,
|
||||
quadrant: m.quadrant,
|
||||
ring: m.ring,
|
||||
teamCoverage: m.teamCoverage,
|
||||
competencyLevel: m.competencyLevel
|
||||
});
|
||||
}
|
||||
|
||||
// Technologies critiques (core + high impact)
|
||||
if (m.ring === 'core' && m.businessImpact === 'high') {
|
||||
metrics.criticalTechnologies.push({
|
||||
name: m.title,
|
||||
quadrant: m.quadrant,
|
||||
riskLevel: m.riskLevel,
|
||||
skillGap: m.skillGap,
|
||||
teamCoverage: m.teamCoverage
|
||||
});
|
||||
}
|
||||
|
||||
// Technologies émergentes
|
||||
if (m.quadrant === 'technologies-emergentes') {
|
||||
metrics.emergingTechnologies.push({
|
||||
name: m.title,
|
||||
ring: m.ring,
|
||||
businessImpact: m.businessImpact,
|
||||
differentiation: m.differentiation
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return metrics;
|
||||
}
|
||||
|
||||
// Identifier les patterns
|
||||
function identifyPatterns(blips, metrics) {
|
||||
const patterns = {
|
||||
criticalNonDifferentiating: [],
|
||||
singleVendorDependencies: [],
|
||||
obsoleteTechnologies: [],
|
||||
innovationOpportunities: [],
|
||||
skillGaps: []
|
||||
};
|
||||
|
||||
for (const blip of blips) {
|
||||
const m = blip.metadata;
|
||||
|
||||
// Technologies critiques non différenciantes (commodité critique)
|
||||
if (m.ring === 'core' && m.differentiation === 'low') {
|
||||
patterns.criticalNonDifferentiating.push({
|
||||
name: m.title,
|
||||
quadrant: m.quadrant,
|
||||
costToReplace: m.costToReplace,
|
||||
maintenanceCost: m.maintenanceCost
|
||||
});
|
||||
}
|
||||
|
||||
// Technologies obsolètes (legacy)
|
||||
if (m.ring === 'legacy') {
|
||||
patterns.obsoleteTechnologies.push({
|
||||
name: m.title,
|
||||
riskLevel: m.riskLevel,
|
||||
costToReplace: m.costToReplace
|
||||
});
|
||||
}
|
||||
|
||||
// Opportunités d'innovation (émergentes + high differentiation)
|
||||
if (m.quadrant === 'technologies-emergentes' && m.differentiation === 'high') {
|
||||
patterns.innovationOpportunities.push({
|
||||
name: m.title,
|
||||
ring: m.ring,
|
||||
businessImpact: m.businessImpact
|
||||
});
|
||||
}
|
||||
|
||||
// Gaps de compétences critiques
|
||||
if (m.skillGap === 'high' && (m.ring === 'core' || m.businessImpact === 'high')) {
|
||||
patterns.skillGaps.push({
|
||||
name: m.title,
|
||||
ring: m.ring,
|
||||
businessImpact: m.businessImpact,
|
||||
teamCoverage: m.teamCoverage,
|
||||
competencyLevel: m.competencyLevel
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return patterns;
|
||||
}
|
||||
|
||||
// Générer le rapport
|
||||
function generateReport(metrics, patterns) {
|
||||
const report = `# Analyse Stratégique - Radar Business Duniter/Ğ1
|
||||
|
||||
Date: ${new Date().toLocaleDateString('fr-FR')}
|
||||
|
||||
## Vue d'ensemble
|
||||
|
||||
- **Total de technologies analysées** : ${metrics.total}
|
||||
- **Coût total de remplacement** : ${metrics.totalCostToReplace.toLocaleString('fr-FR')}€
|
||||
- **Coût total de maintenance annuel** : ${metrics.totalMaintenanceCost.toLocaleString('fr-FR')}€
|
||||
- **Couverture moyenne de l'équipe** : ${(metrics.totalTeamCoverage / metrics.total).toFixed(1)} personnes par technologie
|
||||
|
||||
## Répartition par Quadrant
|
||||
|
||||
${Object.entries(metrics.byQuadrant).map(([q, count]) => `- **${q}** : ${count} technologies`).join('\n')}
|
||||
|
||||
## Répartition par Ring
|
||||
|
||||
${Object.entries(metrics.byRing).map(([r, count]) => `- **${r}** : ${count} technologies`).join('\n')}
|
||||
|
||||
## Distribution des Risques
|
||||
|
||||
- **Risque élevé** : ${metrics.riskDistribution.high} technologies
|
||||
- **Risque modéré** : ${metrics.riskDistribution.medium} technologies
|
||||
- **Risque faible** : ${metrics.riskDistribution.low} technologies
|
||||
|
||||
## Distribution des Compétences
|
||||
|
||||
- **Expert** : ${metrics.competencyDistribution.expert} technologies
|
||||
- **Intermédiaire** : ${metrics.competencyDistribution.intermediate} technologies
|
||||
- **Débutant** : ${metrics.competencyDistribution.beginner} technologies
|
||||
|
||||
## Distribution des Gaps de Compétences
|
||||
|
||||
- **Gap élevé** : ${metrics.skillGapDistribution.high} technologies
|
||||
- **Gap modéré** : ${metrics.skillGapDistribution.medium} technologies
|
||||
- **Gap faible** : ${metrics.skillGapDistribution.low} technologies
|
||||
|
||||
## Technologies à Risque Élevé
|
||||
|
||||
${metrics.technologiesByRisk.high.length > 0
|
||||
? metrics.technologiesByRisk.high.map(t => `- **${t.name}** (${t.quadrant}, ${t.ring})`).join('\n')
|
||||
: 'Aucune technologie à risque élevé identifiée.'}
|
||||
|
||||
## Technologies avec Gap de Compétences Élevé
|
||||
|
||||
${metrics.technologiesBySkillGap.high.length > 0
|
||||
? metrics.technologiesBySkillGap.high.map(t => `- **${t.name}** (${t.teamCoverage} personne(s), niveau: ${t.competencyLevel})`).join('\n')
|
||||
: 'Aucun gap de compétences élevé identifié.'}
|
||||
|
||||
## Technologies Critiques
|
||||
|
||||
${metrics.criticalTechnologies.length > 0
|
||||
? metrics.criticalTechnologies.map(t => `- **${t.name}** (risque: ${t.riskLevel}, gap: ${t.skillGap}, couverture: ${t.teamCoverage})`).join('\n')
|
||||
: 'Aucune technologie critique identifiée.'}
|
||||
|
||||
## Technologies Émergentes
|
||||
|
||||
${metrics.emergingTechnologies.length > 0
|
||||
? metrics.emergingTechnologies.map(t => `- **${t.name}** (impact: ${t.businessImpact}, différenciation: ${t.differentiation})`).join('\n')
|
||||
: 'Aucune technologie émergente identifiée.'}
|
||||
|
||||
## Patterns Identifiés
|
||||
|
||||
### Technologies Critiques Non Différenciantes
|
||||
|
||||
${patterns.criticalNonDifferentiating.length > 0
|
||||
? patterns.criticalNonDifferentiating.map(t => `- **${t.name}** (coût remplacement: ${t.costToReplace}€, maintenance: ${t.maintenanceCost}€/an)`).join('\n')
|
||||
: 'Aucune technologie critique non différenciante identifiée.'}
|
||||
|
||||
### Technologies Obsolètes
|
||||
|
||||
${patterns.obsoleteTechnologies.length > 0
|
||||
? patterns.obsoleteTechnologies.map(t => `- **${t.name}** (risque: ${t.riskLevel}, coût remplacement: ${t.costToReplace}€)`).join('\n')
|
||||
: 'Aucune technologie obsolète identifiée.'}
|
||||
|
||||
### Opportunités d'Innovation
|
||||
|
||||
${patterns.innovationOpportunities.length > 0
|
||||
? patterns.innovationOpportunities.map(t => `- **${t.name}** (ring: ${t.ring}, impact: ${t.businessImpact})`).join('\n')
|
||||
: 'Aucune opportunité d\'innovation identifiée.'}
|
||||
|
||||
### Gaps de Compétences Critiques
|
||||
|
||||
${patterns.skillGaps.length > 0
|
||||
? patterns.skillGaps.map(t => `- **${t.name}** (ring: ${t.ring}, impact: ${t.businessImpact}, couverture: ${t.teamCoverage}, niveau: ${t.competencyLevel})`).join('\n')
|
||||
: 'Aucun gap de compétences critique identifié.'}
|
||||
|
||||
## Recommandations Stratégiques
|
||||
|
||||
### Priorité 1 : Gérer les Risques Critiques
|
||||
|
||||
${patterns.skillGaps.length > 0
|
||||
? `- **Formation et recrutement** : Investir dans la formation ou le recrutement pour les technologies suivantes :
|
||||
${patterns.skillGaps.map(t => ` - ${t.name} (${t.teamCoverage} personne(s), niveau ${t.competencyLevel})`).join('\n')}`
|
||||
: '- Aucune action urgente requise.'}
|
||||
|
||||
### Priorité 2 : Optimiser les Coûts
|
||||
|
||||
${patterns.criticalNonDifferentiating.length > 0
|
||||
? `- **Optimisation des commodités** : Réduire les coûts de maintenance pour :
|
||||
${patterns.criticalNonDifferentiating.map(t => ` - ${t.name} (${t.maintenanceCost}€/an)`).join('\n')}`
|
||||
: '- Aucune optimisation majeure identifiée.'}
|
||||
|
||||
### Priorité 3 : Planifier les Migrations
|
||||
|
||||
${patterns.obsoleteTechnologies.length > 0
|
||||
? `- **Plan de migration** : Planifier le remplacement de :
|
||||
${patterns.obsoleteTechnologies.map(t => ` - ${t.name} (coût estimé: ${t.costToReplace}€)`).join('\n')}`
|
||||
: '- Aucune migration urgente requise.'}
|
||||
|
||||
### Priorité 4 : Investir dans l'Innovation
|
||||
|
||||
${patterns.innovationOpportunities.length > 0
|
||||
? `- **Technologies émergentes** : Évaluer l\'adoption de :
|
||||
${patterns.innovationOpportunities.map(t => ` - ${t.name} (ring: ${t.ring})`).join('\n')}`
|
||||
: '- Aucune opportunité d\'innovation identifiée.'}
|
||||
|
||||
## Matrice Risques/Opportunités
|
||||
|
||||
### Zone Critique (Risque élevé + Impact élevé)
|
||||
|
||||
${metrics.criticalTechnologies.filter(t => t.riskLevel === 'high').length > 0
|
||||
? metrics.criticalTechnologies.filter(t => t.riskLevel === 'high').map(t => `- **${t.name}** : Action immédiate requise`).join('\n')
|
||||
: 'Aucune technologie en zone critique.'}
|
||||
|
||||
### Zone d'Opportunité (Faible risque + Différenciation élevée)
|
||||
|
||||
${metrics.emergingTechnologies.filter(t => t.differentiation === 'high').length > 0
|
||||
? metrics.emergingTechnologies.filter(t => t.differentiation === 'high').map(t => `- **${t.name}** : Opportunité d'investissement`).join('\n')
|
||||
: 'Aucune opportunité majeure identifiée.'}
|
||||
|
||||
`;
|
||||
|
||||
return report;
|
||||
}
|
||||
|
||||
// Main
|
||||
function main() {
|
||||
const radarDir = path.join(__dirname, '../radar-business/2025-01-15');
|
||||
const outputFile = path.join(__dirname, '../docs/analyse-strategique.md');
|
||||
|
||||
if (!fs.existsSync(radarDir)) {
|
||||
console.error(`Répertoire non trouvé: ${radarDir}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log('Analyse du radar business...');
|
||||
const blips = analyzeRadar(radarDir);
|
||||
console.log(`${blips.length} blips analysés`);
|
||||
|
||||
const metrics = calculateMetrics(blips);
|
||||
const patterns = identifyPatterns(blips, metrics);
|
||||
|
||||
const report = generateReport(metrics, patterns);
|
||||
fs.writeFileSync(outputFile, report, 'utf-8');
|
||||
|
||||
console.log(`Rapport généré: ${outputFile}`);
|
||||
}
|
||||
|
||||
if (require.main === module) {
|
||||
// Vérifier si js-yaml est disponible (optionnel)
|
||||
try {
|
||||
require('js-yaml');
|
||||
} catch (e) {
|
||||
// Pas grave, on n'en a pas besoin pour ce script
|
||||
}
|
||||
main();
|
||||
}
|
||||
|
||||
module.exports = { analyzeRadar, calculateMetrics, identifyPatterns, generateReport };
|
||||
|
||||
241
scripts/extract-technologies.js
Executable file
241
scripts/extract-technologies.js
Executable file
@@ -0,0 +1,241 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* Script pour extraire les technologies de technologies-duniter.md
|
||||
* et générer les blips pour le radar business
|
||||
*/
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
// Mapping des compétences de l'équipe
|
||||
const teamSkills = {
|
||||
'poka': ['Flutter', 'Dart', 'ProxMox', 'bash', 'Python', 'infrastructure'],
|
||||
'ManUtopiK': ['VueJS', 'Nuxt.js', 'JavaScript', 'TypeScript', 'CMS', 'web'],
|
||||
'aya': ['Linux', 'glusterfs', 'cephfs', 'ipfs', 'infrastructure', 'systèmes distribués'],
|
||||
'Eloïs': ['Rust', 'blockchain', 'Substrate', 'migration'],
|
||||
'Fred': ['IPFS', 'Secure ScuttleButt', 'Nostr', 'TiddlyWiki', 'développement'],
|
||||
'Vivien': ['Cesium', 'Godot'],
|
||||
'1000i100': ['Serverless', 'GitLab', 'CI/CD', 'Docker', 'web'],
|
||||
'tuxmain': ['cryptographie', 'chiffrage', 'math', 'électronique'],
|
||||
'boris': ['UX', 'UI', 'Figma', 'LLM', 'JavaScript', 'TypeScript', 'APIs', 'Vis.js'],
|
||||
'Syoul': ['bidouille', 'résilience', 'domotique'],
|
||||
'Hugo': ['financement', 'rédaction', 'gestion'],
|
||||
'Yvv': ['gestion', 'médiathèque', 'wiki']
|
||||
};
|
||||
|
||||
// Mapping technologies -> compétences de l'équipe
|
||||
function findTeamCoverage(techName, techKeywords) {
|
||||
const coverage = new Set();
|
||||
const techLower = techName.toLowerCase();
|
||||
const keywords = techKeywords.map(k => k.toLowerCase());
|
||||
|
||||
for (const [member, skills] of Object.entries(teamSkills)) {
|
||||
const memberSkills = skills.map(s => s.toLowerCase());
|
||||
|
||||
// Vérifier si le nom de la technologie correspond
|
||||
if (memberSkills.some(skill => techLower.includes(skill) || skill.includes(techLower))) {
|
||||
coverage.add(member);
|
||||
}
|
||||
|
||||
// Vérifier les mots-clés
|
||||
for (const keyword of keywords) {
|
||||
if (memberSkills.some(skill => keyword.includes(skill) || skill.includes(keyword))) {
|
||||
coverage.add(member);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
count: coverage.size,
|
||||
members: Array.from(coverage),
|
||||
level: coverage.size >= 3 ? 'expert' : coverage.size >= 2 ? 'intermediate' : 'beginner',
|
||||
gap: coverage.size === 0 ? 'high' : coverage.size === 1 ? 'high' : coverage.size === 2 ? 'medium' : 'low'
|
||||
};
|
||||
}
|
||||
|
||||
// Classification par quadrant et ring (à affiner manuellement)
|
||||
function classifyTechnology(techName, category) {
|
||||
const name = techName.toLowerCase();
|
||||
|
||||
// Technologies différenciantes (core/strategic)
|
||||
if (name.includes('rust') || name.includes('substrate') || name.includes('blockchain')) {
|
||||
return {
|
||||
quadrant: 'technologies-differentiantes',
|
||||
ring: 'core',
|
||||
businessImpact: 'high',
|
||||
differentiation: 'high',
|
||||
riskLevel: 'medium'
|
||||
};
|
||||
}
|
||||
|
||||
// Technologies de commodité (support)
|
||||
if (name.includes('docker') || name.includes('postgresql') || name.includes('linux')) {
|
||||
return {
|
||||
quadrant: 'technologies-commodite',
|
||||
ring: 'support',
|
||||
businessImpact: 'medium',
|
||||
differentiation: 'low',
|
||||
riskLevel: 'low'
|
||||
};
|
||||
}
|
||||
|
||||
// Technologies émergentes (strategic/assess)
|
||||
if (name.includes('ipfs') || name.includes('nostr') || name.includes('serverless')) {
|
||||
return {
|
||||
quadrant: 'technologies-emergentes',
|
||||
ring: 'strategic',
|
||||
businessImpact: 'medium',
|
||||
differentiation: 'high',
|
||||
riskLevel: 'medium'
|
||||
};
|
||||
}
|
||||
|
||||
// Par défaut
|
||||
return {
|
||||
quadrant: 'technologies-commodite',
|
||||
ring: 'support',
|
||||
businessImpact: 'medium',
|
||||
differentiation: 'medium',
|
||||
riskLevel: 'medium'
|
||||
};
|
||||
}
|
||||
|
||||
// Générer un blip
|
||||
function generateBlip(tech, category, description) {
|
||||
const classification = classifyTechnology(tech.name, category);
|
||||
const coverage = findTeamCoverage(tech.name, tech.keywords || []);
|
||||
|
||||
const blip = `---
|
||||
title: "${tech.name}"
|
||||
ring: ${classification.ring}
|
||||
quadrant: ${classification.quadrant}
|
||||
tags: [${(tech.tags || []).join(', ')}]
|
||||
businessImpact: ${classification.businessImpact}
|
||||
costToReplace: ${tech.costToReplace || 0}
|
||||
revenueImpact: ${tech.revenueImpact || 'indirect'}
|
||||
riskLevel: ${classification.riskLevel}
|
||||
competencyLevel: ${coverage.level}
|
||||
maintenanceCost: ${tech.maintenanceCost || 0}
|
||||
differentiation: ${classification.differentiation}
|
||||
teamCoverage: ${coverage.count}
|
||||
skillGap: ${coverage.gap}
|
||||
---
|
||||
|
||||
${description || tech.description || `Description de ${tech.name}.`}
|
||||
|
||||
## Impact Business
|
||||
|
||||
${tech.businessImpact || 'À compléter'}
|
||||
|
||||
## Coûts
|
||||
|
||||
- Coût de remplacement : ${tech.costToReplace || 0}€
|
||||
- Coût de maintenance annuel : ${tech.maintenanceCost || 0}€
|
||||
|
||||
## Compétences
|
||||
|
||||
- Nombre de personnes maîtrisant : ${coverage.count}
|
||||
- Membres de l'équipe : ${coverage.members.join(', ') || 'Aucun'}
|
||||
- Niveau moyen : ${coverage.level}
|
||||
- Risque de compétence manquante : ${coverage.gap}
|
||||
|
||||
## Recommandations
|
||||
|
||||
${tech.recommendations || 'À compléter avec des recommandations stratégiques.'}
|
||||
`;
|
||||
|
||||
return blip;
|
||||
}
|
||||
|
||||
// Parser le fichier technologies-duniter.md
|
||||
function parseTechnologiesFile(filePath) {
|
||||
const content = fs.readFileSync(filePath, 'utf-8');
|
||||
const technologies = [];
|
||||
|
||||
// Liste des technologies principales à extraire
|
||||
const techList = [
|
||||
{ name: 'Rust', keywords: ['Rust', 'blockchain', 'Substrate'], category: 'Langages' },
|
||||
{ name: 'Python', keywords: ['Python', 'CLI'], category: 'Langages' },
|
||||
{ name: 'JavaScript/TypeScript', keywords: ['JavaScript', 'TypeScript', 'web'], category: 'Langages' },
|
||||
{ name: 'Dart', keywords: ['Dart', 'Flutter'], category: 'Langages' },
|
||||
{ name: 'Substrate Framework', keywords: ['Substrate', 'Rust', 'blockchain'], category: 'Frameworks' },
|
||||
{ name: 'Nuxt.js', keywords: ['Nuxt', 'Vue', 'SSR'], category: 'Frameworks' },
|
||||
{ name: 'Vue.js', keywords: ['Vue', 'JavaScript'], category: 'Frameworks' },
|
||||
{ name: 'Flutter', keywords: ['Flutter', 'Dart'], category: 'Frameworks' },
|
||||
{ name: 'NetlifyCMS', keywords: ['CMS', 'Git'], category: 'CMS' },
|
||||
{ name: 'WordUp CMS', keywords: ['CMS'], category: 'CMS' },
|
||||
{ name: 'Docker', keywords: ['Docker', 'conteneurisation'], category: 'Infrastructure' },
|
||||
{ name: 'Kubernetes', keywords: ['Kubernetes', 'orchestration'], category: 'Infrastructure' },
|
||||
{ name: 'PostgreSQL', keywords: ['PostgreSQL', 'base de données'], category: 'Infrastructure' },
|
||||
{ name: 'ProxMox', keywords: ['ProxMox', 'virtualisation'], category: 'Infrastructure' },
|
||||
{ name: 'Linux', keywords: ['Linux', 'système'], category: 'Infrastructure' },
|
||||
{ name: 'IPFS', keywords: ['IPFS', 'distribué'], category: 'Technologies distribuées' },
|
||||
{ name: 'Nostr', keywords: ['Nostr', 'protocole'], category: 'Technologies distribuées' },
|
||||
{ name: 'GitLab CI/CD', keywords: ['GitLab', 'CI/CD'], category: 'DevOps' },
|
||||
{ name: 'Serverless', keywords: ['Serverless'], category: 'Architecture' },
|
||||
{ name: 'Squid', keywords: ['Squid', 'indexer', 'GraphQL'], category: 'Outils' },
|
||||
{ name: 'Cryptographie', keywords: ['cryptographie', 'chiffrage'], category: 'Sécurité' },
|
||||
{ name: 'Bash', keywords: ['bash', 'scripting'], category: 'Outils' }
|
||||
];
|
||||
|
||||
// Pour chaque technologie, créer un blip
|
||||
for (const tech of techList) {
|
||||
// Extraire la description depuis le fichier si disponible
|
||||
let description = '';
|
||||
const techRegex = new RegExp(`#### ${tech.name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}[\\s\\S]*?(?=#### |## |$)`, 'i');
|
||||
const match = content.match(techRegex);
|
||||
if (match) {
|
||||
description = match[0].split('\n').slice(1).join('\n').trim();
|
||||
// Limiter à 10 lignes
|
||||
description = description.split('\n').slice(0, 10).join('\n');
|
||||
} else {
|
||||
description = `Technologie ${tech.name} utilisée dans l'écosystème Duniter/Ğ1.`;
|
||||
}
|
||||
|
||||
technologies.push({
|
||||
name: tech.name,
|
||||
category: tech.category,
|
||||
description: description,
|
||||
keywords: tech.keywords,
|
||||
tags: tech.keywords.slice(0, 3)
|
||||
});
|
||||
}
|
||||
|
||||
return technologies;
|
||||
}
|
||||
|
||||
// Main
|
||||
function main() {
|
||||
const techFile = path.join(__dirname, '../docs/technologies-duniter.md');
|
||||
const outputDir = path.join(__dirname, '../radar-business/2025-01-15');
|
||||
|
||||
if (!fs.existsSync(outputDir)) {
|
||||
fs.mkdirSync(outputDir, { recursive: true });
|
||||
}
|
||||
|
||||
console.log('Extraction des technologies...');
|
||||
const technologies = parseTechnologiesFile(techFile);
|
||||
|
||||
console.log(`Trouvé ${technologies.length} technologies`);
|
||||
|
||||
for (const tech of technologies) {
|
||||
const blip = generateBlip(tech, tech.category, tech.description);
|
||||
const filename = tech.name.toLowerCase()
|
||||
.replace(/[^a-z0-9]+/g, '-')
|
||||
.replace(/^-|-$/g, '') + '.md';
|
||||
|
||||
const filePath = path.join(outputDir, filename);
|
||||
fs.writeFileSync(filePath, blip, 'utf-8');
|
||||
console.log(`Généré: ${filename}`);
|
||||
}
|
||||
|
||||
console.log(`\n${technologies.length} blips générés dans ${outputDir}`);
|
||||
}
|
||||
|
||||
if (require.main === module) {
|
||||
main();
|
||||
}
|
||||
|
||||
module.exports = { parseTechnologiesFile, generateBlip, findTeamCoverage };
|
||||
|
||||
Reference in New Issue
Block a user