4NK_IA_back/CONTRIBUTING.md
root 5d8ad901d1 Initial commit: Pipeline notarial complet
- Infrastructure complète de traitement de documents notariaux
- API FastAPI d'ingestion et d'orchestration
- Pipelines Celery pour le traitement asynchrone
- Support des formats PDF, JPEG, PNG, TIFF, HEIC
- OCR avec Tesseract et correction lexicale
- Classification automatique des documents avec Ollama
- Extraction de données structurées
- Indexation dans AnythingLLM et OpenSearch
- Système de vérifications et contrôles métier
- Base de données PostgreSQL pour le métier
- Stockage objet avec MinIO
- Base de données graphe Neo4j
- Recherche plein-texte avec OpenSearch
- Supervision avec Prometheus et Grafana
- Scripts d'installation pour Debian
- Documentation complète
- Tests unitaires et de performance
- Service systemd pour le déploiement
- Scripts de déploiement automatisés
2025-09-08 22:05:22 +02:00

159 lines
3.8 KiB
Markdown

# Guide de contribution
Merci de votre intérêt pour contribuer au Pipeline Notarial ! Ce document explique comment contribuer au projet.
## Comment contribuer
### Signaler un bug
1. Vérifiez que le bug n'a pas déjà été signalé dans les [issues](https://github.com/4nkweb/notariat-pipeline/issues)
2. Créez une nouvelle issue avec le label "bug"
3. Incluez :
- Description détaillée du problème
- Étapes pour reproduire
- Environnement (OS, version Docker, etc.)
- Logs d'erreur si disponibles
### Proposer une fonctionnalité
1. Vérifiez que la fonctionnalité n'a pas déjà été proposée
2. Créez une nouvelle issue avec le label "enhancement"
3. Décrivez :
- Le problème que cela résout
- La solution proposée
- Les cas d'usage
- Les considérations techniques
### Contribuer au code
1. Fork le projet
2. Créez une branche feature (`git checkout -b feature/ma-fonctionnalite`)
3. Committez vos changements (`git commit -am 'Ajout de ma fonctionnalité'`)
4. Poussez vers la branche (`git push origin feature/ma-fonctionnalite`)
5. Ouvrez une Pull Request
## Standards de code
### Python
- Respectez PEP 8
- Utilisez des docstrings pour les fonctions et classes
- Ajoutez des tests pour les nouvelles fonctionnalités
- Utilisez des noms de variables explicites
### Docker
- Utilisez des images officielles quand possible
- Optimisez la taille des images
- Documentez les variables d'environnement
- Utilisez des tags de version spécifiques
### Documentation
- Mettez à jour le README si nécessaire
- Documentez les nouvelles API
- Ajoutez des exemples d'usage
- Utilisez un français correct
## Tests
### Tests unitaires
```bash
# Installation des dépendances de test
pip install pytest pytest-cov
# Exécution des tests
pytest tests/
# Avec couverture
pytest --cov=services tests/
```
### Tests d'intégration
```bash
# Démarrage de l'environnement de test
docker compose -f docker-compose.test.yml up -d
# Exécution des tests d'intégration
pytest tests/integration/
# Nettoyage
docker compose -f docker-compose.test.yml down -v
```
### Tests de performance
```bash
# Installation de Locust
pip install locust
# Exécution des tests de performance
locust -f tests/performance/locustfile.py --host=http://localhost
```
## Processus de review
1. **Automatique** : Les tests doivent passer
2. **Manuel** : Au moins un reviewer doit approuver
3. **Critères** :
- Code lisible et bien documenté
- Tests appropriés
- Pas de régression
- Respect des standards
## Environnement de développement
### Prérequis
- Docker et Docker Compose
- Python 3.11+
- Git
- Make
### Configuration
1. Clonez le projet
2. Copiez la configuration :
```bash
cp infra/.env.example infra/.env
```
3. Modifiez les variables selon vos besoins
4. Démarrez l'environnement :
```bash
make bootstrap
```
### Structure du projet
```
notariat-pipeline/
├── docker/ # Dockerfiles
├── infra/ # Configuration Docker Compose
├── ops/ # Scripts d'installation et seeds
├── services/ # Code applicatif
│ ├── host_api/ # API FastAPI
│ ├── worker/ # Pipelines Celery
│ └── charts/ # Dashboards Grafana
└── tests/ # Tests automatisés
```
## Communication
- **Issues** : Pour les bugs et fonctionnalités
- **Discussions** : Pour les questions générales
- **Pull Requests** : Pour les contributions de code
## Code de conduite
Ce projet suit le [Code de Conduite Contributor Covenant](CODE_OF_CONDUCT.md). En participant, vous acceptez de respecter ce code.
## Licence
En contribuant, vous acceptez que vos contributions soient sous la licence MIT du projet.
## Questions ?
N'hésitez pas à ouvrir une issue pour toute question sur le processus de contribution.