sdk_common/README.md

203 lines
5.1 KiB
Markdown

# 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