6.1 KiB
Chaîne de fabrication du numérique
La chaîne de fabrication du numérique, qui s'étend de l'extraction des matières premières à l'assemblage final, joue un rôle central dans les activités économiques et sociétales.
Pourtant, cette chaîne reste insuffisamment étudiée dans son entièreté. De nombreuses analyses existantes portant sur la « criticité » des minerais ne vont pas au-delà d'une approche macroéconomique, souvent focalisée sur la seule rareté d'un métal ou sur le degré de concentration de sa production.
Or, dans le contexte actuel de « polycrise globale », marqué par des tensions géopolitiques, des aléas climatiques et une croissance rapide de la demande hors numérique (transition énergétique, défense, etc.), ces approches généralistes révèlent leurs limites.
L'objectif de ce projet est de proposer à la fois des données les plus complètes possibles sur cette chaîne, et de fournir les outils nécessaires pour la visualisation des relations, les analyses, la lecture des fiches des opérations (assemblage, fabrication, extraction, …).
Le code proposé répond à la partie outillage.
Principe général
Le projet est bâti sur un backeng Gitea pour la gestion des fiches et des tickets d'évolution. (Accéder au backend)[https://fabnum-git.peccini.fr/FabNum/Fiches]
Le serveur qui héberge l'application héberge aussi le service Gitea, ce qui permet d'éliminer les temps de latence dus au réseau.
L'application est écrite en python et utilise majoritairement streamlit.
Les données du code
Requirements
Le fichier requirements.txt permet d'installer tout ce qui est nécessaire pour l'application.
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Environnement
Le fichier .env.local qui contient GITEA_TOKEN n'est pas dans le dépôt car il contient la clé pour accéder au backend.
Pour l'environnement de pré-production, (https://fabnum-dev.peccini.fr)[https://fabnum-dev.peccini.fr] :
ENV=dev
PORT=8502
GITEA_URL = "https://fabnum-git.peccini.fr/api/v1"
ORGANISATION = "fabnum"
DEPOT_FICHES = "fiches"
Pour l'environnement de production, (https://fabnum.peccini.fr)[https://fabnum.peccini.fr], le fichier est identique sauf pour :
ENV=public
PORT=8501
dev et public sont les deux branches officielles du dépôt.
L'application se lance simplement sous la forme :
streamlit run fabnum.py --server.port 8502
launch-fabnum.py
Ce script permet de lancer l'application en prenant en compte le fichier .env
Pour automatiser le lancement, il est intégré dans systemd :
/etc/systemd/system/multi-user.target.wants/fabnum-dev.service
[Unit]
Description=Fabnum Dev - Streamlit App
After=network.target
[Service]
WorkingDirectory=/home/fabnum/fabnum-dev
ExecStart=/home/fabnum/fabnum-dev/launch_fabnum.sh
Restart=always
RestartSec=5
User=fabnum
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target
fabnum.py
Le cœur de l’application. Ce script gère :
l’interface utilisateur avec Streamlit,
le chargement des données depuis le backend Gitea (schéma, instructions, fiches),
l’analyse des chaînes de dépendances critiques (par Sankey interactif),
les visualisations statistiques (IHH, IVC, ISG),
la navigation hiérarchique dans les fiches,
et la personnalisation de produits finaux.
Il orchestre tous les composants de l’application, notamment :
connexion.py pour l’authentification via Gitea,
utils/ pour les fonctions métiers (import graph, traitement, visualisation),
components/ pour l’affichage modulaire (sidebar, header, footer, fiches),
et tickets_fiche.py pour la consultation et la création de tickets Gitea liés aux fiches.
Le fichier récupère automatiquement les données du dépôt Gitea configuré, et permet aux utilisateurs d’interagir avec les graphes, les métadonnées et les visualisations en toute autonomie
tickets_fiche.py
tickets_fiche.py
Ce module assure la liaison entre les fiches documentaires et le système de tickets Gitea. Il permet :
de rechercher automatiquement les tickets ouverts liés à une fiche (via les labels définis dans fiches_labels.csv),
de les afficher classés par statut (En cours, Terminés, etc.),
de consulter les commentaires associés à chaque ticket,
de proposer un formulaire complet pour créer un nouveau ticket structuré à partir d’un modèle Markdown,
de prévisualiser et publier ce ticket directement via l’API Gitea.
Il gère également :
la détection de conflits ou erreurs lors des appels réseau,
l’automatisation du remplissage des champs (fiche concernée, type de contribution, etc.),
et la prise en compte des environnements (ENV) et des permissions via token.
Ce fichier est essentiel pour assurer la participation collaborative autour des fiches de la chaîne numérique.
Organisation du code
fabnum_app/ ├── app.py / fabnum.py # Point d'entrée principal ├── config.py # Chargement des variables d’environnement ├── utils/ │ ├── gitea.py # Connexion API Gitea │ ├── graph_utils.py # Chemins, criticité, extraction de données │ └── visualisation.py # Graphiques Altair, Plotly ├── components/ │ ├── sidebar.py # Menu latéral │ ├── header.py # En-tête HTML │ ├── footer.py # Pied de page │ └── fiches.py # Lecture et affichage des fiches ├── tickets_fiche.py # Gestion des tickets associés aux fiches ├── assets/ │ ├── styles.css # Feuille de style personnalisée │ └── impact_co2.js # Script pour calcul d’impact environnemental ├── .env # Configuration versionnée (sans secrets) ├── .env.local # Configuration locale (non versionnée) ├── .gitignore # Exclusion des fichiers sensibles └── requirements.txt # Dépendances Python