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 lapplication. Ce script gère :

linterface utilisateur avec Streamlit,

le chargement des données depuis le backend Gitea (schéma, instructions, fiches),

lanalyse 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 lapplication, notamment :

connexion.py pour lauthentification via Gitea,

utils/ pour les fonctions métiers (import graph, traitement, visualisation),

components/ pour laffichage 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 dinteragir avec les graphes, les métadonnées et les visualisations en toute autonomie

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 dun modèle Markdown,

de prévisualiser et publier ce ticket directement via lAPI Gitea.

Il gère également :

la détection de conflits ou erreurs lors des appels réseau,

lautomatisation 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 denvironnement ├── 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 dimpact environnemental ├── .env # Configuration versionnée (sans secrets) ├── .env.local # Configuration locale (non versionnée) ├── .gitignore # Exclusion des fichiers sensibles └── requirements.txt # Dépendances Python

Description
No description provided
https://fabnum.peccini.fr/
Readme 7.2 MiB
Languages
Python 97.8%
CSS 1.1%
Shell 1%