From ba27a59eea1795a179db0a4e6c684701f542646a Mon Sep 17 00:00:00 2001 From: Nicolas Cantu Date: Mon, 25 Aug 2025 19:23:43 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20alignement=20complet=20sur=20le=20nivea?= =?UTF-8?q?u=20de=20documentation=20de=204NK=5Fnode=20-=20Cr=C3=A9ation=20?= =?UTF-8?q?de=20l'INDEX.md=20complet=20avec=20navigation=20structur=C3=A9e?= =?UTF-8?q?=20-=20Ajout=20du=20guide=20d'INSTALLATION.md=20d=C3=A9taill?= =?UTF-8?q?=C3=A9=20(Node.js,=20Rust,=20WASM)=20-=20Cr=C3=A9ation=20du=20g?= =?UTF-8?q?uide=20d'USAGE.md=20complet=20(interface,=20fonctionnalit=C3=A9?= =?UTF-8?q?s,=20workflows)=20-=20Ajout=20de=20l'ARCHITECTURE.md=20techniqu?= =?UTF-8?q?e=20d=C3=A9taill=C3=A9e=20(frontend,=20WASM,=20build)=20-=20Doc?= =?UTF-8?q?umentation=20align=C3=A9e=20sur=20les=20standards=20de=204NK=5F?= =?UTF-8?q?node=20-=20Structure=20coh=C3=A9rente=20et=20navigation=20intui?= =?UTF-8?q?tive=20-=20Guides=20pratiques=20et=20techniques=20complets?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ARCHITECTURE.md | 580 +++++++++++++++++++++++++++++++++++++++++++ docs/INDEX.md | 235 ++++++++++++++++++ docs/INSTALLATION.md | 374 ++++++++++++++++++++++++++++ docs/USAGE.md | 427 +++++++++++++++++++++++++++++++ 4 files changed, 1616 insertions(+) create mode 100644 docs/ARCHITECTURE.md create mode 100644 docs/INDEX.md create mode 100644 docs/INSTALLATION.md create mode 100644 docs/USAGE.md diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md new file mode 100644 index 0000000..c736624 --- /dev/null +++ b/docs/ARCHITECTURE.md @@ -0,0 +1,580 @@ +# đŸ—ïž Architecture Technique - ihm_client + +Documentation technique dĂ©taillĂ©e de l'architecture de l'interface utilisateur ihm_client. + +## 📋 Vue d'Ensemble + +### Architecture GĂ©nĂ©rale + +``` +┌─────────────────────────────────────────────────────────────┐ +│ ihm_client │ +├────────────────────────────────────────────────────────────── +│ Frontend (Vue.js + TypeScript) │ +│ ├── Components Vue.js │ +│ ├── Services TypeScript │ +│ ├── Types et Interfaces │ +│ └── Utilitaires │ +├────────────────────────────────────────────────────────────── +│ WASM (Rust + sdk_client) │ +│ ├── Module WebAssembly │ +│ ├── Fonctions Silent Payments │ +│ └── Interface JavaScript │ +├────────────────────────────────────────────────────────────── +│ Build System (Vite) │ +│ ├── Compilation TypeScript │ +│ ├── Bundling et Optimisation │ +│ └── Hot Module Replacement │ +└─────────────────────────────────────────────────────────────┘ +``` + +### Stack Technologique + +| Couche | Technologie | Version | RĂŽle | +|--------|-------------|---------|------| +| **Frontend** | Vue.js | 3.x | Framework UI | +| **Language** | TypeScript | 5.x | Typage statique | +| **Build** | Vite | 5.x | Build tool | +| **WASM** | Rust | 1.70+ | Logique mĂ©tier | +| **WASM Build** | wasm-pack | 0.12+ | Compilation WASM | +| **Styling** | CSS3 | - | Styles | +| **Package Manager** | npm | 8.x+ | Gestion dĂ©pendances | + +## đŸ›ïž Architecture Frontend + +### Structure des Composants + +``` +src/ +├── components/ # Composants rĂ©utilisables +│ ├── header/ # En-tĂȘte de l'application +│ ├── modal/ # Modales et popups +│ ├── qrcode-scanner/ # Scanner QR code +│ └── validation-modal/ # Modales de validation +├── pages/ # Pages de l'application +│ ├── home/ # Page d'accueil +│ ├── account/ # Gestion du compte +│ ├── signature/ # Signatures de documents +│ └── process-element/ # Gestion des processus +├── services/ # Services et APIs +│ ├── service.ts # Service principal +│ ├── modal.service.ts # Gestion des modales +│ ├── storage.service.ts # Gestion du stockage +│ └── token.ts # Gestion des tokens +├── types/ # Types TypeScript +│ ├── sdk_client.d.ts # Types WASM +│ └── raw-imports.d.ts # Types d'imports +└── utils/ # Utilitaires + ├── document.utils.ts # Utilitaires documents + ├── html.utils.ts # Utilitaires HTML + └── sp-address.utils.ts # Utilitaires Silent Payments +``` + +### Architecture Vue.js + +#### Composants Principaux + +##### Header Component +```typescript +interface HeaderProps { + user: User; + notifications: Notification[]; + onLogout: () => void; +} +``` + +**ResponsabilitĂ©s :** +- Navigation principale +- Affichage du profil utilisateur +- Gestion des notifications +- Menu de dĂ©connexion + +##### Modal Components +```typescript +interface ModalProps { + isOpen: boolean; + title: string; + content: string; + onConfirm: () => void; + onCancel: () => void; +} +``` + +**Types de modales :** +- **Confirmation** : Actions critiques +- **Validation** : Validation de donnĂ©es +- **QR Scanner** : Scanner de codes QR +- **Profile** : Édition du profil + +##### QR Code Scanner +```typescript +interface QRScannerProps { + onScan: (data: string) => void; + onError: (error: Error) => void; + onClose: () => void; +} +``` + +**FonctionnalitĂ©s :** +- AccĂšs Ă  la camĂ©ra +- DĂ©tection de QR codes +- Validation des donnĂ©es +- Gestion des erreurs + +### Services et Communication + +#### Service Principal +```typescript +class Service { + // Communication avec sdk_client WASM + async generateWallet(): Promise; + async lockUTXOs(wallet: Wallet, utxos: UTXO[]): Promise; + + // Communication avec les APIs + async sendMessage(message: Message): Promise; + async uploadDocument(file: File): Promise; + + // Gestion des donnĂ©es + async saveData(key: string, data: any): Promise; + async loadData(key: string): Promise; +} +``` + +#### Gestion des États + +```typescript +// Store global (Vuex/Pinia) +interface AppState { + user: User | null; + wallet: Wallet | null; + processes: Process[]; + notifications: Notification[]; + settings: Settings; +} +``` + +## ⚡ Architecture WASM + +### Module sdk_client + +#### Structure du Module +``` +pkg/ +├── sdk_client_bg.wasm # Module WASM principal (3.3 MB) +├── sdk_client.d.ts # Types TypeScript (12.6 KB) +├── sdk_client.js # Wrapper JavaScript (182 B) +├── sdk_client_bg.js # Code JavaScript gĂ©nĂ©rĂ© (38 KB) +└── package.json # MĂ©tadonnĂ©es du package +``` + +#### Fonctions Principales + +##### Gestion des Wallets +```rust +// Rust (sdk_client) +pub fn generate_sp_wallet() -> Wallet { + // GĂ©nĂ©ration d'un nouveau wallet Silent Payment +} + +pub fn lock_freezed_utxos(wallet: Wallet, utxos: Vec) -> bool { + // Verrouillage des UTXOs gelĂ©s +} +``` + +##### Interface JavaScript +```typescript +// TypeScript (ihm_client) +import { generate_sp_wallet, lock_freezed_utxos } from 'pkg/sdk_client'; + +const wallet = generate_sp_wallet(); +const success = lock_freezed_utxos(wallet, utxos); +``` + +### IntĂ©gration WASM-Frontend + +#### Initialisation +```typescript +// Initialisation du module WASM +import init from 'pkg/sdk_client'; + +async function initializeWASM() { + try { + await init(); + console.log('WASM module initialized'); + } catch (error) { + console.error('Failed to initialize WASM:', error); + } +} +``` + +#### Communication +```typescript +// Appel de fonctions WASM +async function createWallet() { + try { + const wallet = generate_sp_wallet(); + return wallet; + } catch (error) { + console.error('WASM error:', error); + throw error; + } +} +``` + +## 🔧 Architecture Build + +### Configuration Vite + +```typescript +// vite.config.ts +import { defineConfig } from 'vite'; +import vue from '@vitejs/plugin-vue'; +import wasm from 'vite-plugin-wasm'; + +export default defineConfig({ + plugins: [ + vue(), + wasm(), + ], + optimizeDeps: { + exclude: ['pkg/sdk_client'] + }, + build: { + target: 'es2020', + rollupOptions: { + output: { + manualChunks: { + 'sdk-client': ['pkg/sdk_client'] + } + } + } + } +}); +``` + +### Processus de Build + +#### DĂ©veloppement +```bash +# Serveur de dĂ©veloppement +npm run dev + +# Hot Module Replacement activĂ© +# Compilation TypeScript en temps rĂ©el +# Chargement WASM Ă  la demande +``` + +#### Production +```bash +# Build optimisĂ© +npm run build + +# Optimisations : +# - Tree shaking +# - Code splitting +# - Minification +# - Compression gzip +``` + +### Optimisations + +#### Code Splitting +```typescript +// Chargement Ă  la demande des composants +const SignatureComponent = () => import('./pages/signature/signature-component.vue'); +const AccountComponent = () => import('./pages/account/account-component.vue'); +``` + +#### Lazy Loading WASM +```typescript +// Chargement diffĂ©rĂ© du module WASM +const loadWASM = async () => { + if (!wasmModule) { + wasmModule = await import('pkg/sdk_client'); + await wasmModule.default(); + } + return wasmModule; +}; +``` + +## 🔄 Flux de DonnĂ©es + +### Flux Principal + +``` +1. Utilisateur → Interface Vue.js +2. Interface → Services TypeScript +3. Services → Module WASM (sdk_client) +4. WASM → APIs externes (si nĂ©cessaire) +5. RĂ©ponse → Services → Interface → Utilisateur +``` + +### Gestion des États + +#### État Local (Composants) +```typescript +// État local d'un composant +const componentState = reactive({ + loading: false, + data: null, + error: null +}); +``` + +#### État Global (Store) +```typescript +// Store global de l'application +const appStore = { + user: ref(null), + wallet: ref(null), + processes: ref([]), + notifications: ref([]) +}; +``` + +#### Persistance +```typescript +// Sauvegarde locale +localStorage.setItem('user-data', JSON.stringify(userData)); + +// Synchronisation avec le serveur +await service.syncData(userData); +``` + +## 🔒 Architecture de SĂ©curitĂ© + +### SĂ©curitĂ© Frontend + +#### Validation des EntrĂ©es +```typescript +// Validation cĂŽtĂ© client +function validateUserInput(input: string): boolean { + return input.length > 0 && input.length < 100; +} + +// Sanitisation HTML +function sanitizeHTML(html: string): string { + return DOMPurify.sanitize(html); +} +``` + +#### Protection XSS +```typescript +// Échappement des donnĂ©es +function escapeHTML(text: string): string { + const div = document.createElement('div'); + div.textContent = text; + return div.innerHTML; +} +``` + +### SĂ©curitĂ© WASM + +#### Gestion de la MĂ©moire +```rust +// Rust - Gestion sĂ»re de la mĂ©moire +pub fn process_data(data: Vec) -> Result, Error> { + // Validation des donnĂ©es d'entrĂ©e + if data.len() > MAX_SIZE { + return Err(Error::DataTooLarge); + } + + // Traitement sĂ©curisĂ© + let result = process_secure(data)?; + Ok(result) +} +``` + +#### Protection des ClĂ©s +```rust +// Protection des clĂ©s privĂ©es +pub struct SecureWallet { + private_key: SecureString, + public_key: String, +} + +impl SecureWallet { + pub fn new() -> Self { + let private_key = generate_secure_key(); + let public_key = derive_public_key(&private_key); + + Self { + private_key: SecureString::new(private_key), + public_key, + } + } +} +``` + +## 📊 Architecture de Performance + +### MĂ©triques de Performance + +#### Temps de Chargement +- **Premier rendu** : < 2s +- **InteractivitĂ©** : < 3s +- **Chargement complet** : < 5s + +#### Optimisations + +##### Bundle Size +```bash +# Taille des bundles +dist/ +├── index.js # ~300 KB (gzippĂ©) +├── sdk_client.wasm # ~3.3 MB (gzippĂ©) +└── vendor.js # ~200 KB (gzippĂ©) +``` + +##### Lazy Loading +```typescript +// Chargement Ă  la demande +const routes = [ + { + path: '/signature', + component: () => import('./pages/signature.vue') + } +]; +``` + +##### Caching +```typescript +// Cache du module WASM +const wasmCache = new Map(); + +async function getWASMModule() { + if (wasmCache.has('sdk_client')) { + return wasmCache.get('sdk_client'); + } + + const module = await loadWASMModule(); + wasmCache.set('sdk_client', module); + return module; +} +``` + +## 🔍 Monitoring et ObservabilitĂ© + +### Logs et Debugging + +#### Logs Frontend +```typescript +// Logging structurĂ© +const logger = { + info: (message: string, data?: any) => { + console.log(`[INFO] ${message}`, data); + }, + error: (message: string, error?: Error) => { + console.error(`[ERROR] ${message}`, error); + } +}; +``` + +#### Logs WASM +```rust +// Logging Rust +use log::{info, error}; + +pub fn process_wallet() -> Result { + info!("Starting wallet processing"); + + match process_secure() { + Ok(wallet) => { + info!("Wallet processed successfully"); + Ok(wallet) + }, + Err(e) => { + error!("Wallet processing failed: {}", e); + Err(e) + } + } +} +``` + +### MĂ©triques + +#### MĂ©triques Frontend +- **Temps de rendu** : Performance des composants +- **Temps de rĂ©ponse** : RĂ©activitĂ© de l'interface +- **Utilisation mĂ©moire** : Consommation RAM +- **Erreurs JavaScript** : StabilitĂ© de l'application + +#### MĂ©triques WASM +- **Temps d'initialisation** : Chargement du module +- **Temps d'exĂ©cution** : Performance des fonctions +- **Utilisation mĂ©moire** : Gestion de la mĂ©moire +- **Erreurs Rust** : StabilitĂ© du module + +## 🚀 DĂ©ploiement + +### Environnements + +#### DĂ©veloppement +```bash +# Serveur de dĂ©veloppement +npm run dev + +# Variables d'environnement +NODE_ENV=development +VITE_API_URL=http://localhost:8091 +VITE_WS_URL=ws://localhost:8090 +``` + +#### Production +```bash +# Build de production +npm run build + +# Variables d'environnement +NODE_ENV=production +VITE_API_URL=https://api.4nkweb.com +VITE_WS_URL=wss://ws.4nkweb.com +``` + +### IntĂ©gration 4NK_node + +#### Configuration Docker +```yaml +# docker-compose.yml +ihm_client: + build: + context: ./ihm_client + dockerfile: Dockerfile + ports: + - "8080:80" + environment: + - SDK_RELAY_WS_URL=ws://sdk_relay_1:8090 + - SDK_RELAY_HTTP_URL=http://sdk_relay_1:8091 +``` + +#### Variables d'Environnement +```bash +# Configuration pour 4NK_node +SDK_RELAY_WS_URL=ws://sdk_relay_1:8090 +SDK_RELAY_HTTP_URL=http://sdk_relay_1:8091 +BITCOIN_RPC_URL=http://bitcoin:18443 +BLINDBIT_URL=http://blindbit:8000 +``` + +## 🔼 Évolutions Futures + +### AmĂ©liorations PlanifiĂ©es + +#### Performance +- **Web Workers** : Traitement en arriĂšre-plan +- **Service Workers** : Cache et offline +- **WebAssembly SIMD** : Optimisations vectorielles + +#### FonctionnalitĂ©s +- **PWA** : Application web progressive +- **Offline Mode** : Fonctionnement hors ligne +- **Real-time Sync** : Synchronisation temps rĂ©el + +#### SĂ©curitĂ© +- **Hardware Security** : IntĂ©gration TPM/SE +- **Multi-factor Auth** : Authentification Ă  deux facteurs +- **Audit Trail** : TraçabilitĂ© complĂšte + +--- + +**đŸ—ïž Architecture ihm_client - Conçue pour la performance et la sĂ©curitĂ©** 🚀 diff --git a/docs/INDEX.md b/docs/INDEX.md new file mode 100644 index 0000000..7b09a57 --- /dev/null +++ b/docs/INDEX.md @@ -0,0 +1,235 @@ +# 📚 Index de Documentation - ihm_client + +Index complet de la documentation de l'interface utilisateur ihm_client pour les Silent Payments. + +## 📖 Guides Principaux + +### 🚀 [Guide d'Installation](INSTALLATION.md) +Guide complet pour installer et configurer l'interface utilisateur ihm_client. +- **PrĂ©requis systĂšme et logiciels** +- **Installation de Node.js et dĂ©pendances** +- **Configuration Rust et WASM** +- **Configuration des dĂ©pendances distantes** +- **Tests post-installation** +- **DĂ©pannage et monitoring** + +### 📖 [Guide d'Utilisation](USAGE.md) +Guide complet pour utiliser l'interface utilisateur ihm_client au quotidien. +- **DĂ©marrage du serveur de dĂ©veloppement** +- **Utilisation de l'interface utilisateur** +- **Gestion des profils utilisateurs** +- **OpĂ©rations de pairing et wallet** +- **Gestion des processus et documents** +- **SystĂšme de chat et notifications** +- **Tests et validation** + +### ⚙ [Guide de Configuration](CONFIGURATION.md) +Guide complet pour configurer l'interface selon vos besoins. +- **Configuration gĂ©nĂ©rale et variables d'environnement** +- **Configuration Vue.js et TypeScript** +- **Configuration WASM et sdk_client** +- **Configuration de l'intĂ©gration 4NK_node** +- **Configuration Docker et production** +- **Configuration SSL/TLS** +- **Configuration de monitoring et sauvegarde** + +## 🔧 Guides Techniques + +### đŸ—ïž [Architecture Technique](ARCHITECTURE.md) +Documentation technique dĂ©taillĂ©e de l'architecture. +- **Architecture gĂ©nĂ©rale du frontend** +- **Composants principaux (Vue.js, TypeScript, WASM)** +- **IntĂ©gration avec sdk_client et sdk_common** +- **Flux de donnĂ©es entre composants** +- **Architecture des Silent Payments** +- **SĂ©curitĂ© et isolation** +- **Performance et optimisations** +- **Monitoring et observabilitĂ©** + +### 📡 [API Reference](API.md) +Documentation complĂšte des APIs disponibles. +- **API sdk_client WASM** : Interface WebAssembly pour les Silent Payments +- **API Vue.js Components** : Composants rĂ©utilisables +- **API Services** : Services de communication et gestion +- **API Types TypeScript** : Types et interfaces +- **Format des donnĂ©es et payloads** +- **Gestion des erreurs** +- **Exemples d'utilisation** +- **Limites et quotas** + +### 🔒 [SĂ©curitĂ©](SECURITY.md) +Guide de sĂ©curitĂ© et bonnes pratiques. +- **Authentification et autorisation** +- **Protection XSS et CSRF** +- **SĂ©curitĂ© WASM et mĂ©moire** +- **Chiffrement et certificats** +- **Audit et monitoring de sĂ©curitĂ©** +- **Bonnes pratiques frontend** + +### 🐙 [Configuration Gitea](GITEA_SETUP.md) +Guide de configuration spĂ©cifique pour Gitea. +- **Configuration du repository Gitea** +- **Templates d'issues et pull requests** +- **Configuration CI/CD avec Gitea Actions** +- **IntĂ©grations et webhooks** +- **Workflow de contribution** +- **SĂ©curitĂ© et permissions** + +### 🚀 [Plan de Release](RELEASE_PLAN.md) +Plan de lancement open source complet. +- **Phases de prĂ©paration** +- **Communication et marketing** +- **Checklist de lancement** +- **Support communautaire** +- **Gestion des risques** + +### 🌟 [Guide de la CommunautĂ©](COMMUNITY_GUIDE.md) +Guide complet pour la communautĂ©. +- **Comment contribuer** +- **Ressources d'apprentissage** +- **Environnement de dĂ©veloppement** +- **Processus de contribution** +- **Support et reconnaissance** + +### đŸ—ș [Roadmap](ROADMAP.md) +Roadmap de dĂ©veloppement dĂ©taillĂ©e. +- **Timeline de dĂ©veloppement** +- **FonctionnalitĂ©s planifiĂ©es** +- **Évolution de l'architecture** +- **MĂ©triques de succĂšs** + +## đŸ§Ș Guides de Test + +### đŸ§Ș [Guide des Tests](TESTING.md) +Guide complet pour les tests de l'interface utilisateur. +- **Tests unitaires Vue.js** +- **Tests d'intĂ©gration WASM** +- **Tests end-to-end** +- **Tests de performance** +- **Tests de sĂ©curitĂ©** +- **Tests d'accessibilitĂ©** +- **Tests de compatibilitĂ© navigateur** + +### 🔍 [Audit de SĂ©curitĂ©](SECURITY_AUDIT.md) +Audit de sĂ©curitĂ© dĂ©taillĂ©. +- **VulnĂ©rabilitĂ©s connues** +- **Tests de pĂ©nĂ©tration** +- **Audit de code** +- **Recommandations de sĂ©curitĂ©** +- **Plan de remĂ©diation** + +## 🔧 Guides de DĂ©veloppement + +### 🔧 [Guide de DĂ©veloppement](DEVELOPMENT.md) +Guide complet pour le dĂ©veloppement. +- **Environnement de dĂ©veloppement** +- **Workflow de dĂ©veloppement** +- **Standards de code** +- **Debugging et profiling** +- **Optimisation des performances** +- **DĂ©ploiement et CI/CD** + +### 📋 [RĂ©fĂ©rence Rapide](QUICK_REFERENCE.md) +RĂ©fĂ©rence rapide pour les dĂ©veloppeurs. +- **Commandes essentielles** +- **Structure du projet** +- **APIs principales** +- **Configuration rapide** +- **DĂ©pannage rapide** + +### 🔄 [Guide de Migration](MIGRATION.md) +Guide pour les migrations et mises Ă  jour. +- **Migration des versions** +- **Breaking changes** +- **Mise Ă  jour des dĂ©pendances** +- **Migration des donnĂ©es** +- **Tests de migration** + +## 🌐 Guides d'IntĂ©gration + +### 🔗 [IntĂ©gration 4NK_node](INTEGRATION_4NK_NODE.md) +Guide d'intĂ©gration avec l'infrastructure 4NK_node. +- **Configuration Docker** +- **Variables d'environnement** +- **Communication inter-services** +- **DĂ©ploiement intĂ©grĂ©** +- **Monitoring et logs** + +### 🔑 [Configuration SSH](SSH_SETUP.md) +Guide de configuration SSH pour le dĂ©veloppement. +- **GĂ©nĂ©ration des clĂ©s SSH** +- **Configuration Git** +- **IntĂ©gration avec Gitea** +- **Automatisation des dĂ©ploiements** + +### đŸ€– [Push SSH AutomatisĂ©](AUTO_SSH_PUSH.md) +Guide pour l'automatisation des pushes SSH. +- **Configuration des scripts** +- **IntĂ©gration CI/CD** +- **Gestion des clĂ©s** +- **SĂ©curitĂ© et bonnes pratiques** + +## 📊 État et Monitoring + +### 📊 [État Actuel](ETAT_ACTUEL.md) +État dĂ©taillĂ© du projet ihm_client. +- **Statut des compilations** +- **Configuration des branches** +- **FonctionnalitĂ©s opĂ©rationnelles** +- **MĂ©triques de performance** +- **ProblĂšmes connus** + +### 📋 [RĂ©sumĂ© Final](RESUME_FINAL.md) +RĂ©sumĂ© complet de l'Ă©tat final du projet. +- **SuccĂšs accomplis** +- **PrĂȘt pour la production** +- **Documentation complĂšte** +- **Support et maintenance** + +## 🔧 Guides d'Open Source + +### ✅ [Checklist Open Source](OPEN_SOURCE_CHECKLIST.md) +Checklist complĂšte pour l'ouverture en open source. +- **PrĂ©paration du code** +- **Documentation** +- **Licences et lĂ©gal** +- **Infrastructure** +- **Communication** + +## 📞 Support et Contact + +### 📞 [Support](SUPPORT.md) +Guide de support et contact. +- **Comment obtenir de l'aide** +- **CrĂ©ation d'issues** +- **Canal de communication** +- **FAQ** +- **Ressources additionnelles** + +--- + +## 🎯 Navigation Rapide + +### 🚀 DĂ©marrage Rapide +1. [Installation](INSTALLATION.md) - Installer ihm_client +2. [Configuration](CONFIGURATION.md) - Configurer l'environnement +3. [Utilisation](USAGE.md) - Utiliser l'interface + +### 🔧 DĂ©veloppement +1. [Architecture](ARCHITECTURE.md) - Comprendre l'architecture +2. [API](API.md) - Consulter les APIs +3. [Tests](TESTING.md) - ExĂ©cuter les tests + +### 📚 Documentation +1. [Index](INDEX.md) - Cet index +2. [Quick Reference](QUICK_REFERENCE.md) - RĂ©fĂ©rence rapide +3. [Roadmap](ROADMAP.md) - Évolution du projet + +### đŸ€ CommunautĂ© +1. [Guide CommunautĂ©](COMMUNITY_GUIDE.md) - Contribuer +2. [Code de Conduite](../CODE_OF_CONDUCT.md) - RĂšgles de conduite +3. [Support](SUPPORT.md) - Obtenir de l'aide + +--- + +**📚 Documentation complĂšte pour ihm_client - Interface utilisateur moderne pour les Silent Payments** 🚀 diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md new file mode 100644 index 0000000..e5835a7 --- /dev/null +++ b/docs/INSTALLATION.md @@ -0,0 +1,374 @@ +# 📩 Guide d'Installation - ihm_client + +Guide complet pour installer et configurer l'interface utilisateur ihm_client pour les Silent Payments. + +## 📋 PrĂ©requis + +### SystĂšme + +- **OS** : Linux (Ubuntu 20.04+, Debian 11+, CentOS 8+), macOS 10.15+, Windows 10+ +- **Architecture** : x86_64, ARM64 (Apple Silicon) +- **RAM** : 4 Go minimum, 8 Go recommandĂ©s +- **Stockage** : 5 Go minimum, 10 Go recommandĂ©s +- **RĂ©seau** : Connexion Internet stable + +### Logiciels + +- **Node.js** : Version 18.0+ (LTS recommandĂ©) +- **npm** : Version 8.0+ +- **Git** : Version 2.25+ +- **Rust** : Version 1.70+ (pour la compilation WASM) +- **Docker** : Version 20.10+ (optionnel, pour l'intĂ©gration 4NK_node) + +## 🚀 Installation + +### 1. Installation de Node.js + +#### Ubuntu/Debian + +```bash +# Mettre Ă  jour les paquets +sudo apt update + +# Installer Node.js via NodeSource +curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - +sudo apt-get install -y nodejs + +# VĂ©rifier l'installation +node --version +npm --version +``` + +#### CentOS/RHEL + +```bash +# Installer Node.js via NodeSource +curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash - +sudo yum install -y nodejs + +# VĂ©rifier l'installation +node --version +npm --version +``` + +#### macOS + +```bash +# Installer via Homebrew +brew install node@18 + +# Ou tĂ©lĂ©charger depuis nodejs.org +# https://nodejs.org/en/download/ +``` + +#### Windows + +```bash +# TĂ©lĂ©charger et installer depuis +# https://nodejs.org/en/download/ +``` + +### 2. Installation de Rust + +#### Linux/macOS + +```bash +# Installer Rust via rustup +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + +# Recharger l'environnement +source ~/.cargo/env + +# VĂ©rifier l'installation +rustc --version +cargo --version +``` + +#### Windows + +```bash +# TĂ©lĂ©charger et installer rustup depuis +# https://rustup.rs/ +``` + +### 3. Installation de wasm-pack + +```bash +# Installer wasm-pack +cargo install wasm-pack + +# VĂ©rifier l'installation +wasm-pack --version +``` + +### 4. Configuration SSH (RecommandĂ©) + +```bash +# GĂ©nĂ©rer une clĂ© SSH +ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_ihm -C "ihm-client-automation" + +# Ajouter Ă  l'agent SSH +ssh-add ~/.ssh/id_ed25519_ihm + +# Configurer Git pour utiliser la clĂ© +git config --global core.sshCommand "ssh -i ~/.ssh/id_ed25519_ihm" + +# Afficher la clĂ© publique pour Gitea +cat ~/.ssh/id_ed25519_ihm.pub +``` + +**Ajouter la clĂ© publique Ă  Gitea :** +1. Aller sur Gitea > Settings > SSH Keys +2. Coller la clĂ© publique +3. Cliquer sur "Add key" + +### 5. Clonage du Repository + +```bash +# Cloner avec SSH (recommandĂ©) +git clone git@git.4nkweb.com:4nk/ihm_client.git +cd ihm_client + +# Ou cloner avec HTTPS +git clone https://git.4nkweb.com/4nk/ihm_client.git +cd ihm_client +``` + +### 6. Installation des DĂ©pendances + +```bash +# Installer les dĂ©pendances Node.js +npm install + +# VĂ©rifier l'installation +npm list --depth=0 +``` + +### 7. Configuration des DĂ©pendances WASM + +```bash +# Configurer les dĂ©pendances distantes (sdk_client, sdk_common) +./scripts/setup-remote-deps.sh + +# VĂ©rifier la compilation WASM +ls -la pkg/ +``` + +## 🔧 Configuration + +### Variables d'Environnement + +CrĂ©er un fichier `.env` Ă  la racine du projet : + +```bash +# Configuration de dĂ©veloppement +NODE_ENV=development +VITE_DEV_SERVER_PORT=3000 +VITE_API_URL=http://localhost:8091 +VITE_WS_URL=ws://localhost:8090 + +# Configuration WASM +VITE_WASM_PATH=./pkg/sdk_client_bg.wasm + +# Configuration pour l'intĂ©gration 4NK_node +SDK_RELAY_WS_URL=ws://sdk_relay_1:8090 +SDK_RELAY_HTTP_URL=http://sdk_relay_1:8091 +BITCOIN_RPC_URL=http://bitcoin:18443 +BLINDBIT_URL=http://blindbit:8000 +``` + +### Configuration TypeScript + +Le fichier `tsconfig.json` est dĂ©jĂ  configurĂ© pour : +- Vue.js 3 +- TypeScript strict +- Support WASM +- Path mapping + +### Configuration Vite + +Le fichier `vite.config.ts` est configurĂ© pour : +- Support WASM +- Hot module replacement +- Build optimisĂ© +- Support des types TypeScript + +## đŸ§Ș Tests Post-Installation + +### 1. Test de Compilation + +```bash +# Test de compilation TypeScript +npm run build + +# VĂ©rifier le build +ls -la dist/ +``` + +### 2. Test de DĂ©veloppement + +```bash +# DĂ©marrer le serveur de dĂ©veloppement +npm run dev + +# Ouvrir http://localhost:3000 dans le navigateur +``` + +### 3. Test WASM + +```bash +# VĂ©rifier que le module WASM fonctionne +npm run test:wasm +``` + +### 4. Test Complet + +```bash +# ExĂ©cuter tous les tests +npm run test + +# VĂ©rifier la couverture +npm run test:coverage +``` + +## 🚹 DĂ©pannage + +### ProblĂšmes Courants + +#### Node.js non trouvĂ© +```bash +# VĂ©rifier l'installation +which node +node --version + +# RĂ©installer si nĂ©cessaire +curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - +sudo apt-get install -y nodejs +``` + +#### Rust non trouvĂ© +```bash +# VĂ©rifier l'installation +which rustc +rustc --version + +# RĂ©installer si nĂ©cessaire +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +source ~/.cargo/env +``` + +#### Erreurs de compilation WASM +```bash +# Nettoyer et recompiler +rm -rf pkg/ +./scripts/setup-remote-deps.sh + +# VĂ©rifier les dĂ©pendances Rust +cd temp-deps/sdk_client +cargo check +``` + +#### Erreurs de dĂ©pendances npm +```bash +# Nettoyer et rĂ©installer +rm -rf node_modules/ package-lock.json +npm install + +# VĂ©rifier les vulnĂ©rabilitĂ©s +npm audit +npm audit fix +``` + +#### ProblĂšmes de permissions +```bash +# Corriger les permissions +sudo chown -R $USER:$USER . +chmod +x scripts/*.sh +``` + +### Logs DĂ©taillĂ©s + +```bash +# Logs de compilation TypeScript +npm run build --verbose + +# Logs de compilation WASM +cd temp-deps/sdk_client +wasm-pack build --target web --out-dir ../../pkg --verbose + +# Logs du serveur de dĂ©veloppement +npm run dev --verbose +``` + +## 🔒 SĂ©curitĂ© + +### VĂ©rifications de SĂ©curitĂ© + +```bash +# Audit des dĂ©pendances npm +npm audit + +# Audit des dĂ©pendances Rust +cargo audit + +# VĂ©rification des vulnĂ©rabilitĂ©s WASM +wasm-pack build --target web --out-dir ../../pkg +``` + +### Bonnes Pratiques + +- Utiliser HTTPS en production +- Valider toutes les entrĂ©es utilisateur +- Maintenir les dĂ©pendances Ă  jour +- Utiliser des variables d'environnement pour les secrets +- Tester rĂ©guliĂšrement la sĂ©curitĂ© + +## 📊 Monitoring + +### MĂ©triques d'Installation + +```bash +# Taille du projet +du -sh . + +# Nombre de fichiers +find . -type f | wc -l + +# DĂ©pendances installĂ©es +npm list --depth=0 | wc -l + +# Taille du module WASM +ls -lh pkg/sdk_client_bg.wasm +``` + +### VĂ©rification de l'Installation + +```bash +# Script de vĂ©rification +./scripts/verify-installation.sh + +# Tests automatisĂ©s +npm run test:installation +``` + +## 🎯 Prochaines Étapes + +AprĂšs l'installation rĂ©ussie : + +1. **Lire le [Guide d'Utilisation](USAGE.md)** - Utiliser l'interface +2. **Consulter l'[Architecture](ARCHITECTURE.md)** - Comprendre le systĂšme +3. **Explorer les [APIs](API.md)** - Utiliser les fonctionnalitĂ©s +4. **Configurer l'[IntĂ©gration 4NK_node](INTEGRATION_4NK_NODE.md)** - DĂ©ployer en production + +## 📞 Support + +En cas de problĂšme : + +1. Consulter la [documentation](INDEX.md) +2. VĂ©rifier les [issues existantes](https://git.4nkweb.com/4nk/ihm_client/issues) +3. CrĂ©er une nouvelle issue avec les dĂ©tails du problĂšme +4. Inclure les logs et la configuration utilisĂ©e + +--- + +**🚀 Installation terminĂ©e ! ihm_client est prĂȘt Ă  ĂȘtre utilisĂ©.** ✹ diff --git a/docs/USAGE.md b/docs/USAGE.md new file mode 100644 index 0000000..e35a066 --- /dev/null +++ b/docs/USAGE.md @@ -0,0 +1,427 @@ +# 📖 Guide d'Utilisation - ihm_client + +Guide complet pour utiliser l'interface utilisateur ihm_client au quotidien. + +## 🚀 DĂ©marrage Rapide + +### DĂ©marrage du Serveur de DĂ©veloppement + +```bash +# DĂ©marrer le serveur de dĂ©veloppement +npm run dev + +# Le serveur dĂ©marre sur http://localhost:3000 +# Hot reload activĂ© pour le dĂ©veloppement +``` + +### AccĂšs Ă  l'Interface + +1. **Ouvrir le navigateur** : http://localhost:3000 +2. **Page d'accueil** : Vue d'ensemble et navigation +3. **Connexion** : Via adresse device ou QR code + +## 🏠 Page d'Accueil + +### Navigation Principale + +- **🏠 Accueil** - Vue d'ensemble et statistiques +- **đŸ‘€ Compte** - Gestion du profil utilisateur +- **📄 Processus** - CrĂ©ation et gestion des processus +- **✍ Signature** - Signatures de documents +- **💬 Chat** - Communication entre membres +- **🔗 Pairing** - Connexion avec d'autres utilisateurs + +### Tableau de Bord + +- **Statistiques personnelles** : Processus actifs, documents signĂ©s +- **Notifications rĂ©centes** : Alertes et mises Ă  jour +- **Actions rapides** : CrĂ©er un processus, scanner QR code +- **État du wallet** : Solde et transactions rĂ©centes + +## đŸ‘€ Gestion du Compte + +### Profil Utilisateur + +#### AccĂšs au Profil +1. Cliquer sur la bulle de profil en haut Ă  gauche +2. Popup de profil s'ouvre avec les informations personnelles + +#### Informations Modifiables +- **Nom et prĂ©nom** : Éditer directement dans les champs +- **Photo de profil** : Cliquer pour changer l'image +- **Email** : Adresse de contact (lecture seule) +- **Adresse device** : Identifiant unique (lecture seule) + +#### Actions du Profil + +##### Export User Data +```bash +# GĂ©nĂšre un fichier JSON avec toutes les donnĂ©es utilisateur +# Inclut : profil, processus, documents, wallet +``` + +##### Export Recovery +```bash +# GĂ©nĂšre les 4 mots de rĂ©cupĂ©ration +# IMPORTANT : Noter et conserver en lieu sĂ»r +# Le bouton devient inaccessible aprĂšs utilisation +``` + +##### Delete Account +```bash +# Supprime dĂ©finitivement le compte +# Demande de confirmation obligatoire +# Action irrĂ©versible +``` + +##### Logout +```bash +# DĂ©connexion de l'interface +# Retour Ă  la page de connexion +``` + +### Onglet Pairing + +#### Ajouter un Device +1. Cliquer sur "Add Device" +2. Choisir la mĂ©thode : + - **Scanner QR Code** : Scanner le code d'un autre device + - **Saisir manuellement** : Entrer l'adresse device + +#### GĂ©rer les Devices +- **Renommer** : Cliquer sur le nom pour l'Ă©diter +- **Supprimer** : Cliquer sur l'icĂŽne poubelle +- **Statut** : En ligne/hors ligne + +#### Scanner QR Code +1. Cliquer sur "Scan QR Code" +2. Autoriser l'accĂšs Ă  la camĂ©ra +3. Pointer vers le QR code +4. Confirmation automatique + +### Onglet Wallet + +#### Gestion des Wallets +- **Voir le solde** : Affichage en temps rĂ©el +- **Ajouter une ligne** : Nouveau wallet Silent Payment +- **Historique** : Transactions rĂ©centes +- **DĂ©tails** : Cliquer pour plus d'informations + +#### OpĂ©rations Wallet +```bash +# GĂ©nĂ©rer un nouveau wallet +generate_sp_wallet() + +# Verrouiller des UTXOs +lock_freezed_utxos(wallet, utxos) + +# Scanner des blocs +scan_blocks(wallet, blocks) +``` + +### Onglet Process + +#### Processus Disponibles +- **Liste des processus** : Tous les processus accessibles +- **Notifications** : Cliquer sur la sonnette pour voir les alertes +- **Statut** : Actif, en attente, terminĂ© +- **Actions** : Voir, modifier, supprimer + +#### CrĂ©er un Processus +1. Cliquer sur "Nouveau Processus" +2. Remplir les informations : + - **Nom** : Nom du processus + - **Description** : DĂ©tails du processus + - **Membres** : Ajouter des participants + - **RĂŽles** : DĂ©finir les responsabilitĂ©s +3. Valider la crĂ©ation + +### Onglet Data + +#### DonnĂ©es ImportĂ©es +- **Liste des donnĂ©es** : Fichiers JSON importĂ©s +- **Contrats associĂ©s** : Cliquer pour voir le contrat +- **Statut** : ValidĂ©, en cours, rejetĂ© +- **Actions** : Voir, modifier, supprimer + +## 📄 Gestion des Processus + +### Vue d'Ensemble + +#### Onglets du Processus +- **📋 Informations** : DĂ©tails du processus +- **đŸ‘„ Membres** : Participants et rĂŽles +- **📁 Documents** : Fichiers associĂ©s +- **✍ Signatures** : Demandes de signature +- **💬 Chat** : Communication interne + +### Gestion des Membres + +#### Ajouter un Membre +1. Cliquer sur "Ajouter Membre" +2. Choisir la mĂ©thode : + - **Scanner QR Code** : Invitation directe + - **Envoyer un lien** : Lien d'invitation + - **Saisir l'adresse** : Adresse device manuelle + +#### Assigner des RĂŽles +1. SĂ©lectionner un membre +2. Cliquer sur "Assigner RĂŽle" +3. Choisir le rĂŽle : + - **Admin** : Gestion complĂšte + - **Signataire** : Peut signer des documents + - **Lecteur** : Lecture seule + - **Custom** : RĂŽle personnalisĂ© + +### Gestion des Documents + +#### Importer un Document +1. Cliquer sur "Importer Document" +2. Choisir le fichier (PDF, DOC, etc.) +3. Remplir les mĂ©tadonnĂ©es : + - **Nom** : Nom du document + - **Description** : DĂ©tails du document + - **RĂŽles requis** : Qui doit signer +4. Valider l'import + +#### Organiser les Documents +- **Dossiers** : CrĂ©er des dossiers pour organiser +- **Tags** : Ajouter des Ă©tiquettes +- **Recherche** : Filtrer par nom, type, statut +- **Tri** : Par date, nom, taille + +## ✍ SystĂšme de Signatures + +### Demandes de Signature + +#### CrĂ©er une Demande +1. Aller dans l'onglet "Signatures" +2. Cliquer sur "Nouvelle Demande" +3. Remplir les informations : + - **Document** : SĂ©lectionner le document + - **Signataires** : Choisir les participants + - **Description** : DĂ©tails de la demande + - **Date limite** : ÉchĂ©ance de signature + - **VisibilitĂ©** : Publique ou privĂ©e +4. Valider la crĂ©ation + +#### GĂ©rer les Demandes +- **En attente** : Demandes non signĂ©es +- **SignĂ©es** : Demandes complĂ©tĂ©es +- **ExpirĂ©es** : Demandes dĂ©passĂ©es +- **Actions** : Voir, modifier, annuler + +### Signer un Document + +#### Processus de Signature +1. Recevoir une notification de demande +2. Cliquer sur "Voir la demande" +3. PrĂ©visualiser le document +4. Cliquer sur "Signer" +5. Confirmer la signature + +#### Types de Signature +- **Signature Ă©lectronique** : Signature numĂ©rique +- **Signature biomĂ©trique** : Empreinte digitale +- **Signature par mot de passe** : Code secret + +## 💬 SystĂšme de Chat + +### Communication Interne + +#### AccĂšs au Chat +1. Aller dans l'onglet "Chat" +2. SĂ©lectionner le processus +3. Voir les conversations + +#### Envoyer un Message +1. SĂ©lectionner un utilisateur ou groupe +2. Taper le message +3. Cliquer sur "Envoyer" + +#### Types de Messages +- **Texte** : Messages simples +- **Documents** : Fichiers partagĂ©s +- **Images** : Captures d'Ă©cran +- **Liens** : URLs partagĂ©es + +### Notifications + +#### Types de Notifications +- **Messages** : Nouveaux messages reçus +- **Signatures** : Demandes de signature +- **Processus** : Mises Ă  jour de processus +- **SystĂšme** : Alertes systĂšme + +#### Gestion des Notifications +- **Marquer comme lu** : Cliquer sur la notification +- **RĂ©pondre** : RĂ©pondre directement +- **Ignorer** : Masquer la notification +- **ParamĂštres** : Configurer les alertes + +## 🔗 SystĂšme de Pairing + +### Connexion avec d'Autres Utilisateurs + +#### MĂ©thodes de Pairing +1. **QR Code** : Scanner le code d'un autre device +2. **Lien d'invitation** : Envoyer un lien +3. **Adresse manuelle** : Saisir l'adresse device + +#### Processus de Pairing +1. **Initiative** : Un utilisateur initie la connexion +2. **Confirmation** : L'autre utilisateur confirme +3. **Établissement** : La connexion est Ă©tablie +4. **VĂ©rification** : Test de communication + +#### Gestion des Connexions +- **Connexions actives** : Devices connectĂ©s +- **Demandes en attente** : Invitations non acceptĂ©es +- **Historique** : Connexions passĂ©es +- **Actions** : DĂ©connecter, renommer, supprimer + +## 🔔 Notifications et Alertes + +### Centre de Notifications + +#### AccĂšs aux Notifications +- **IcĂŽne cloche** : En haut Ă  droite +- **Compteur** : Nombre de notifications non lues +- **Liste** : Toutes les notifications + +#### Types d'Alertes +- **Urgentes** : Rouge, action immĂ©diate requise +- **Importantes** : Orange, attention requise +- **Informatives** : Bleu, information gĂ©nĂ©rale +- **SuccĂšs** : Vert, confirmation d'action + +### Configuration des Notifications + +#### ParamĂštres +1. Aller dans "ParamĂštres" > "Notifications" +2. Configurer par type : + - **Messages** : Notifications de chat + - **Signatures** : Demandes de signature + - **Processus** : Mises Ă  jour + - **SystĂšme** : Alertes systĂšme + +#### PrĂ©fĂ©rences +- **Son** : Activer/dĂ©sactiver les sons +- **Pop-up** : Notifications en pop-up +- **Email** : Notifications par email +- **Push** : Notifications push (si supportĂ©) + +## đŸ› ïž FonctionnalitĂ©s AvancĂ©es + +### Recherche Globale + +#### Utilisation +1. Cliquer sur l'icĂŽne de recherche +2. Taper le terme recherchĂ© +3. Voir les rĂ©sultats : + - **Processus** : Processus correspondants + - **Documents** : Documents correspondants + - **Messages** : Messages correspondants + - **Utilisateurs** : Utilisateurs correspondants + +### Filtres et Tri + +#### Filtres Disponibles +- **Date** : Filtrer par pĂ©riode +- **Type** : Filtrer par type de contenu +- **Statut** : Filtrer par statut +- **Utilisateur** : Filtrer par utilisateur + +#### Options de Tri +- **Date** : Plus rĂ©cent/ancien +- **Nom** : AlphabĂ©tique +- **Taille** : Plus grand/petit +- **Statut** : PrioritĂ© des statuts + +### Export et Sauvegarde + +#### Exporter des DonnĂ©es +```bash +# Export complet du profil +Export User Data > JSON + +# Export des processus +Processus > Exporter > CSV + +# Export des documents +Documents > Exporter > ZIP +``` + +#### Sauvegarde Automatique +- **Sauvegarde locale** : DonnĂ©es stockĂ©es localement +- **Synchronisation** : Synchronisation avec le serveur +- **RĂ©cupĂ©ration** : Restauration des donnĂ©es + +## 🚹 DĂ©pannage + +### ProblĂšmes Courants + +#### Interface ne se charge pas +```bash +# VĂ©rifier le serveur +npm run dev + +# VĂ©rifier les logs +npm run dev --verbose + +# Nettoyer le cache +npm run clean +``` + +#### Module WASM non trouvĂ© +```bash +# Recompiler le module WASM +./scripts/setup-remote-deps.sh + +# VĂ©rifier le fichier +ls -la pkg/sdk_client_bg.wasm +``` + +#### Erreurs de connexion +```bash +# VĂ©rifier les variables d'environnement +cat .env + +# Tester la connectivitĂ© +npm run test:connectivity +``` + +### Support Utilisateur + +#### Obtenir de l'Aide +1. **Documentation** : Consulter ce guide +2. **FAQ** : Questions frĂ©quentes +3. **Support** : Contacter l'Ă©quipe +4. **Issues** : Signaler un problĂšme + +#### Signaler un Bug +1. Aller sur [Issues](https://git.4nkweb.com/4nk/ihm_client/issues) +2. CrĂ©er une nouvelle issue +3. DĂ©crire le problĂšme : + - **Étapes** : Comment reproduire + - **Comportement** : Ce qui se passe + - **Attendu** : Ce qui devrait se passer + - **Environnement** : OS, navigateur, version + +## 📊 MĂ©triques d'Utilisation + +### Statistiques Personnelles +- **Processus créés** : Nombre de processus +- **Documents signĂ©s** : Nombre de signatures +- **Messages envoyĂ©s** : Communication +- **Temps d'utilisation** : Temps passĂ© + +### Performance +- **Temps de chargement** : Vitesse de l'interface +- **Temps de rĂ©ponse** : RĂ©activitĂ© +- **Utilisation mĂ©moire** : Consommation RAM +- **Taille des donnĂ©es** : Stockage utilisĂ© + +--- + +**🎯 Interface utilisateur ihm_client - PrĂȘte pour une utilisation quotidienne !** ✹