|
|
|
@ -1,8 +1,277 @@
|
|
|
|
|
# Contribuer à sdk_storage
|
|
|
|
|
# Contribuer à 4NK Environment
|
|
|
|
|
|
|
|
|
|
Merci de proposer des issues et des Pull Requests.
|
|
|
|
|
Merci de votre intérêt pour contribuer au projet 4NK Environment ! Ce document fournit des directives pour contribuer efficacement à l'écosystème 4NK.
|
|
|
|
|
|
|
|
|
|
- Discutez via une issue avant une modification majeure.
|
|
|
|
|
- Travaillez sur une branche `feature/...`.
|
|
|
|
|
- Ajoutez systématiquement des tests (`tests/`) et mettez à jour la documentation (`docs/`).
|
|
|
|
|
- Assurez-vous que `cargo fmt`, `cargo clippy` et `cargo test` passent localement.
|
|
|
|
|
## 📋 Table des matières
|
|
|
|
|
|
|
|
|
|
- [Code de conduite](#code-de-conduite)
|
|
|
|
|
- [Comment contribuer](#comment-contribuer)
|
|
|
|
|
- [Processus de développement](#processus-de-développement)
|
|
|
|
|
- [Standards de code](#standards-de-code)
|
|
|
|
|
- [Tests](#tests)
|
|
|
|
|
- [Documentation](#documentation)
|
|
|
|
|
- [Déploiement](#déploiement)
|
|
|
|
|
- [Questions et support](#questions-et-support)
|
|
|
|
|
|
|
|
|
|
## 🤝 Code de conduite
|
|
|
|
|
|
|
|
|
|
Ce projet adhère à notre [Code de Conduite](CODE_OF_CONDUCT.md). En participant, vous acceptez de respecter ces règles.
|
|
|
|
|
|
|
|
|
|
## 🚀 Comment contribuer
|
|
|
|
|
|
|
|
|
|
### Types de contributions
|
|
|
|
|
|
|
|
|
|
- **🐛 Corrections de bugs** : Signaler et corriger des problèmes
|
|
|
|
|
- **✨ Nouvelles fonctionnalités** : Ajouter des capacités
|
|
|
|
|
- **📚 Documentation** : Améliorer la documentation
|
|
|
|
|
- **🧪 Tests** : Ajouter ou améliorer les tests
|
|
|
|
|
- **🔧 Maintenance** : Refactoring, optimisation, nettoyage
|
|
|
|
|
|
|
|
|
|
### Processus de contribution
|
|
|
|
|
|
|
|
|
|
1. **Créer une issue** pour discuter des changements majeurs
|
|
|
|
|
2. **Fork le repository** si nécessaire
|
|
|
|
|
3. **Créer une branche** de fonctionnalité
|
|
|
|
|
4. **Développer** avec les standards de code
|
|
|
|
|
5. **Tester** vos modifications
|
|
|
|
|
6. **Documenter** les changements
|
|
|
|
|
7. **Soumettre** une Pull Request
|
|
|
|
|
|
|
|
|
|
## 🛠️ Processus de développement
|
|
|
|
|
|
|
|
|
|
### Structure du projet
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
4NK_env/
|
|
|
|
|
├── 4NK_modules/ # Modules 4NK (SDKs, services)
|
|
|
|
|
├── projects/ # Projets applicatifs (LeCoffre)
|
|
|
|
|
├── docs/ # Documentation technique
|
|
|
|
|
├── IA_agents/ # Agents IA et prompts
|
|
|
|
|
├── scripts/ # Scripts de déploiement
|
|
|
|
|
└── confs/ # Configurations centralisées
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Branches
|
|
|
|
|
|
|
|
|
|
- **`main`** : Branche principale stable
|
|
|
|
|
- **`ext`** : Branche de développement étendue
|
|
|
|
|
- **`feature/*`** : Nouvelles fonctionnalités
|
|
|
|
|
- **`fix/*`** : Corrections de bugs
|
|
|
|
|
- **`docs/*`** : Améliorations documentation
|
|
|
|
|
|
|
|
|
|
### Workflow Git
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 1. Créer une branche de fonctionnalité
|
|
|
|
|
git checkout -b feature/nouvelle-fonctionnalite
|
|
|
|
|
|
|
|
|
|
# 2. Développer et tester
|
|
|
|
|
# ... modifications ...
|
|
|
|
|
|
|
|
|
|
# 3. Commiter avec un message descriptif
|
|
|
|
|
git add .
|
|
|
|
|
git commit -m "feat: ajouter nouvelle fonctionnalité X"
|
|
|
|
|
|
|
|
|
|
# 4. Pousser la branche
|
|
|
|
|
git push origin feature/nouvelle-fonctionnalite
|
|
|
|
|
|
|
|
|
|
# 5. Créer une Pull Request (si applicable)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 📝 Standards de code
|
|
|
|
|
|
|
|
|
|
### Messages de commit
|
|
|
|
|
|
|
|
|
|
Utilisez le format conventionnel :
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
type(scope): description
|
|
|
|
|
|
|
|
|
|
[corps optionnel]
|
|
|
|
|
|
|
|
|
|
[footer optionnel]
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**Types** :
|
|
|
|
|
- `feat` : Nouvelle fonctionnalité
|
|
|
|
|
- `fix` : Correction de bug
|
|
|
|
|
- `docs` : Documentation
|
|
|
|
|
- `style` : Formatage, point-virgules manquants, etc.
|
|
|
|
|
- `refactor` : Refactoring de code
|
|
|
|
|
- `test` : Ajout de tests
|
|
|
|
|
- `chore` : Maintenance, dépendances
|
|
|
|
|
|
|
|
|
|
**Exemples** :
|
|
|
|
|
```
|
|
|
|
|
feat(sdk_relay): ajouter support WebSocket sécurisé
|
|
|
|
|
fix(lecoffre): corriger authentification OAuth2
|
|
|
|
|
docs(architecture): mettre à jour diagrammes de flux
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Standards par technologie
|
|
|
|
|
|
|
|
|
|
#### Rust (modules 4NK)
|
|
|
|
|
```bash
|
|
|
|
|
# Formatage
|
|
|
|
|
cargo fmt
|
|
|
|
|
|
|
|
|
|
# Linting
|
|
|
|
|
cargo clippy
|
|
|
|
|
|
|
|
|
|
# Tests
|
|
|
|
|
cargo test
|
|
|
|
|
|
|
|
|
|
# Documentation
|
|
|
|
|
cargo doc --open
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### TypeScript/JavaScript (frontend)
|
|
|
|
|
```bash
|
|
|
|
|
# Formatage
|
|
|
|
|
npm run format
|
|
|
|
|
|
|
|
|
|
# Linting
|
|
|
|
|
npm run lint
|
|
|
|
|
|
|
|
|
|
# Tests
|
|
|
|
|
npm test
|
|
|
|
|
|
|
|
|
|
# Build
|
|
|
|
|
npm run build
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### Docker
|
|
|
|
|
- Utiliser des images officielles
|
|
|
|
|
- Multi-stage builds pour optimiser la taille
|
|
|
|
|
- Utilisateurs non-root
|
|
|
|
|
- Healthchecks appropriés
|
|
|
|
|
|
|
|
|
|
## 🧪 Tests
|
|
|
|
|
|
|
|
|
|
### Tests obligatoires
|
|
|
|
|
|
|
|
|
|
- **Tests unitaires** : Fonctionnalités individuelles
|
|
|
|
|
- **Tests d'intégration** : Interactions entre composants
|
|
|
|
|
- **Tests de déploiement** : Validation des scripts
|
|
|
|
|
- **Tests de sécurité** : Vérification des bonnes pratiques
|
|
|
|
|
|
|
|
|
|
### Exécution des tests
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Tests globaux
|
|
|
|
|
./scripts/test-all.sh
|
|
|
|
|
|
|
|
|
|
# Tests par module
|
|
|
|
|
cd 4NK_modules/sdk_relay && cargo test
|
|
|
|
|
cd projects/lecoffre/lecoffre-front && npm test
|
|
|
|
|
|
|
|
|
|
# Tests de déploiement
|
|
|
|
|
./scripts/validate-deployment.sh
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 📚 Documentation
|
|
|
|
|
|
|
|
|
|
### Types de documentation
|
|
|
|
|
|
|
|
|
|
- **README.md** : Vue d'ensemble du projet
|
|
|
|
|
- **docs/** : Documentation technique détaillée
|
|
|
|
|
- **IA_agents/** : Prompts et guides pour agents IA
|
|
|
|
|
- **Commentaires de code** : Documentation inline
|
|
|
|
|
|
|
|
|
|
### Standards de documentation
|
|
|
|
|
|
|
|
|
|
- **Markdown** pour tous les documents
|
|
|
|
|
- **Diagrammes** avec Mermaid ou PlantUML
|
|
|
|
|
- **Exemples de code** fonctionnels
|
|
|
|
|
- **Liens** vers les ressources externes
|
|
|
|
|
|
|
|
|
|
### Mise à jour de la documentation
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Vérifier la cohérence
|
|
|
|
|
./scripts/validate-docs.sh
|
|
|
|
|
|
|
|
|
|
# Générer la documentation
|
|
|
|
|
./scripts/generate-docs.sh
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 🚀 Déploiement
|
|
|
|
|
|
|
|
|
|
### Environnements
|
|
|
|
|
|
|
|
|
|
- **Développement** : Tests et développement local
|
|
|
|
|
- **Staging** : Validation avant production
|
|
|
|
|
- **Production** : Environnement de production
|
|
|
|
|
|
|
|
|
|
### Processus de déploiement
|
|
|
|
|
|
|
|
|
|
1. **Tests** : Validation complète
|
|
|
|
|
2. **Build** : Construction des artefacts
|
|
|
|
|
3. **Déploiement** : Mise en production
|
|
|
|
|
4. **Validation** : Vérification post-déploiement
|
|
|
|
|
5. **Monitoring** : Surveillance continue
|
|
|
|
|
|
|
|
|
|
### Scripts de déploiement
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Déploiement complet
|
|
|
|
|
./scripts/deploy-all.sh
|
|
|
|
|
|
|
|
|
|
# Déploiement par phase
|
|
|
|
|
./scripts/deploy-phase-base.sh
|
|
|
|
|
./scripts/deploy-phase-blockchain.sh
|
|
|
|
|
./scripts/deploy-phase-application.sh
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 🔒 Sécurité
|
|
|
|
|
|
|
|
|
|
### Bonnes pratiques
|
|
|
|
|
|
|
|
|
|
- **Aucun secret** dans le code source
|
|
|
|
|
- **Variables d'environnement** pour la configuration
|
|
|
|
|
- **Utilisateurs non-root** dans les conteneurs
|
|
|
|
|
- **Clés SSH** pour l'authentification Git
|
|
|
|
|
- **Chiffrement** des données sensibles
|
|
|
|
|
|
|
|
|
|
### Signalement de vulnérabilités
|
|
|
|
|
|
|
|
|
|
Pour signaler une vulnérabilité de sécurité :
|
|
|
|
|
1. **Ne pas** créer d'issue publique
|
|
|
|
|
2. **Contacter** directement l'équipe de sécurité
|
|
|
|
|
3. **Attendre** la confirmation avant divulgation
|
|
|
|
|
|
|
|
|
|
## 📞 Questions et support
|
|
|
|
|
|
|
|
|
|
### Canaux de communication
|
|
|
|
|
|
|
|
|
|
- **Issues GitHub** : Bugs et demandes de fonctionnalités
|
|
|
|
|
- **Discussions** : Questions générales
|
|
|
|
|
- **Documentation** : Guides et références
|
|
|
|
|
|
|
|
|
|
### Obtenir de l'aide
|
|
|
|
|
|
|
|
|
|
1. **Consulter** la documentation existante
|
|
|
|
|
2. **Rechercher** dans les issues existantes
|
|
|
|
|
3. **Créer** une nouvelle issue si nécessaire
|
|
|
|
|
4. **Fournir** le contexte et les détails
|
|
|
|
|
|
|
|
|
|
## 🏷️ Versioning
|
|
|
|
|
|
|
|
|
|
Le projet utilise le [Semantic Versioning](https://semver.org/) :
|
|
|
|
|
|
|
|
|
|
- **MAJOR** : Changements incompatibles
|
|
|
|
|
- **MINOR** : Nouvelles fonctionnalités compatibles
|
|
|
|
|
- **PATCH** : Corrections de bugs
|
|
|
|
|
|
|
|
|
|
## 📄 Licence
|
|
|
|
|
|
|
|
|
|
Ce projet est sous licence MIT. Voir le fichier [LICENSE](LICENSE) pour plus de détails.
|
|
|
|
|
|
|
|
|
|
## 🙏 Remerciements
|
|
|
|
|
|
|
|
|
|
Merci à tous les contributeurs qui rendent ce projet possible !
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
**Dernière mise à jour** : 2024-09-25
|
|
|
|
|
**Version** : 1.0.0
|