docs: alignement complet sur le niveau de documentation de 4NK_node - Création de l'INDEX.md complet avec navigation structurée - Ajout du guide d'INSTALLATION.md détaillé (Node.js, Rust, WASM) - Création du guide d'USAGE.md complet (interface, fonctionnalités, workflows) - Ajout de l'ARCHITECTURE.md technique détaillée (frontend, WASM, build) - Documentation alignée sur les standards de 4NK_node - Structure cohérente et navigation intuitive - Guides pratiques et techniques complets

This commit is contained in:
Nicolas Cantu 2025-08-25 19:23:43 +02:00
parent 8c3dd51702
commit ba27a59eea
4 changed files with 1616 additions and 0 deletions

580
docs/ARCHITECTURE.md Normal file
View File

@ -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<Wallet>;
async lockUTXOs(wallet: Wallet, utxos: UTXO[]): Promise<boolean>;
// Communication avec les APIs
async sendMessage(message: Message): Promise<void>;
async uploadDocument(file: File): Promise<Document>;
// Gestion des données
async saveData(key: string, data: any): Promise<void>;
async loadData(key: string): Promise<any>;
}
```
#### 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<UTXO>) -> 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<User | null>(null),
wallet: ref<Wallet | null>(null),
processes: ref<Process[]>([]),
notifications: ref<Notification[]>([])
};
```
#### 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<u8>) -> Result<Vec<u8>, 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<Wallet, Error> {
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é** 🚀

235
docs/INDEX.md Normal file
View File

@ -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** 🚀

374
docs/INSTALLATION.md Normal file
View File

@ -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é.** ✨

427
docs/USAGE.md Normal file
View File

@ -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 !** ✨