203 lines
5.1 KiB
Markdown
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
|