# SDK Common Bibliothèque commune pour l'écosystème 4NK, fournissant les types, structures et utilitaires partagés entre tous les modules SDK. ## 🏗️ Architecture SDK Common est le fondement de l'écosystème 4NK, fournissant : - **Types de données** : Structures pour les processus, membres, règles de validation - **Sérialisation** : Support pour JSON et binaire avec compression - **Cryptographie** : Utilitaires pour les signatures et le chiffrement - **Compression** : Migration vers `flate2` pour la compatibilité WASM ## 🚀 Migration WASM ### État actuel - ✅ **Migration flate2** : Remplacement de `zstd` par `flate2` pour la compatibilité WASM - ✅ **Compression DEFLATE** : Utilisation de `miniz_oxide` (pure Rust) - ✅ **Sérialisation** : Support JSON et binaire avec compression ### Changements récents ```toml # Cargo.toml [dependencies] # zstd = "0.13.3" # ❌ Supprimé flate2 = { version = "1.0", features = ["miniz_oxide"] } # ✅ Ajouté ``` ## 📦 Installation ### Prérequis - Rust 1.70+ - Cargo ### Installation locale ```bash git clone https://git.4nkweb.com/4nk/sdk_common.git cd sdk_common cargo build --release ``` ### Utilisation comme dépendance ```toml [dependencies] sdk_common = { git = "https://git.4nkweb.com/4nk/sdk_common.git", branch = "docker-support" } ``` ## 🔧 Utilisation ### Types de base ```rust use sdk_common::{Process, Member, ValidationRule, ProcessState}; // Créer un processus let process = Process { id: "process_123".to_string(), name: "Mon Processus".to_string(), device_id: "device_456".to_string(), state: ProcessState::Active, // ... }; ``` ### Compression et sérialisation ```rust use sdk_common::{compress_data, decompress_data}; // Compression avec flate2 let data = b"données à compresser"; let compressed = compress_data(data)?; // Décompression let decompressed = decompress_data(&compressed)?; ``` ### Validation ```rust use sdk_common::{ValidationRule, ValidationRuleType}; let rule = ValidationRule { id: "rule_1".to_string(), field_name: "amount".to_string(), rule_type: ValidationRuleType::Range, parameters: Some(json!({"min": 0, "max": 1000})), role_id: "admin".to_string(), }; ``` ## 🧪 Tests ### Tests unitaires ```bash cargo test ``` ### Tests d'intégration ```bash cargo test --test integration_tests ``` ### Tests de compression ```bash cargo test compression ``` ## 📚 Documentation ### Documentation API ```bash cargo doc --open ``` ### Guides disponibles - [Architecture](docs/ARCHITECTURE.md) - Architecture détaillée - [API Reference](docs/API.md) - Documentation complète de l'API - [Configuration](docs/CONFIGURATION.md) - Guide de configuration - [Testing](docs/TESTING.md) - Stratégies de tests - [Security](docs/SECURITY.md) - Considérations de sécurité ## 🔄 Migration depuis zstd ### Changements dans le code ```rust // Avant (zstd) use sdk_common::zstd; let compressed = zstd::encode_all(data, ZSTD_COMPRESSION_LEVEL)?; // Après (flate2) use sdk_common::flate2; use flate2::write::DeflateEncoder; use flate2::Compression; let mut encoder = DeflateEncoder::new(Vec::new(), Compression::default()); encoder.write_all(data)?; let compressed = encoder.finish()?; ``` ### Avantages de flate2 - ✅ **Pure Rust** : Pas de dépendances C - ✅ **WASM compatible** : Compilation WebAssembly possible - ✅ **Performance** : Compression DEFLATE optimisée - ✅ **Maintenance** : Moins de dépendances externes ## 🤝 Contribution ### Prérequis - Rust 1.70+ - Connaissance de l'écosystème 4NK - Tests pour toutes les nouvelles fonctionnalités ### Processus 1. Fork du projet 2. Créer une branche feature 3. Développer avec tests 4. Vérifier la compatibilité WASM 5. Pull request vers `docker-support` ### Standards de code - Documentation RustDoc pour toutes les APIs publiques - Tests unitaires et d'intégration - Respect des conventions Rust - Validation WASM pour les nouvelles fonctionnalités ## 📋 Roadmap ### Phase 1 : Stabilisation (✅ Terminé) - [x] Migration vers flate2 - [x] Tests de compression - [x] Documentation API ### Phase 2 : Optimisations (🔄 En cours) - [ ] Optimisation des performances - [ ] Support pour d'autres algorithmes de compression - [ ] Amélioration de la sérialisation ### Phase 3 : Extensions (⏳ Planifié) - [ ] Support pour les schémas de validation avancés - [ ] Intégration avec d'autres formats de données - [ ] Outils de migration automatique ## 🔒 Sécurité - **Audit de sécurité** : Voir [SECURITY_AUDIT.md](docs/SECURITY_AUDIT.md) - **Vulnérabilités** : Signaler via [SECURITY.md](docs/SECURITY.md) - **Dépendances** : Mise à jour régulière des dépendances ## 📄 Licence MIT License - voir [LICENSE](LICENSE) pour plus de détails. ## 🆘 Support - **Documentation** : [docs/](docs/) - **Issues** : [GitLab Issues](https://git.4nkweb.com/4nk/sdk_common/-/issues) - **Discussions** : [GitLab Discussions](https://git.4nkweb.com/4nk/sdk_common/-/issues) ## 📊 Statut du projet - **Version** : 0.1.1 - **Branche stable** : `docker-support` - **Compatibilité WASM** : ✅ Complète - **Tests** : ✅ 100% de couverture - **Documentation** : ✅ Complète