cyrille-elie commited on
Commit
7a81dc3
·
1 Parent(s): 955c093

Docs: Added CONTRIBUTING.md

Browse files
Files changed (1) hide show
  1. CONTRIBUTING.md +136 -0
CONTRIBUTING.md ADDED
@@ -0,0 +1,136 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Guide de Contribution au Projet d'Attrition RH
2
+
3
+ Nous vous remercions de l'intérêt que vous portez à ce projet et de votre souhait d'y contribuer ! Ce guide a pour but de vous aider à comprendre comment contribuer de manière efficace.
4
+
5
+ ## 🚀 Comment Commencer ?
6
+
7
+ 1. **Forker & Cloner (si vous n'êtes pas un collaborateur direct) :**
8
+ * Si vous êtes un contributeur externe, "forkez" d'abord le dépôt, puis clonez votre fork.
9
+ * Si vous êtes un collaborateur direct, clonez simplement le dépôt :
10
+ ```bash
11
+ git clone [URL_DU_REPO_GITHUB]
12
+ cd nom-du-dossier-projet
13
+ ```
14
+
15
+ 2. **Installer Poetry :**
16
+ Ce projet utilise [Poetry](https://python-poetry.org/) pour la gestion des dépendances et des environnements virtuels. Suivez les [instructions d'installation officielles](https://python-poetry.org/docs/#installation).
17
+
18
+ 3. **Installer les Dépendances du Projet :**
19
+ Une fois Poetry installé, à la racine du projet :
20
+ ```bash
21
+ poetry install
22
+ ```
23
+ Cela créera un environnement virtuel et installera toutes les dépendances nécessaires (y compris celles de développement).
24
+
25
+ 4. **Activer l'Environnement Virtuel :**
26
+ ```bash
27
+ poetry shell
28
+ ```
29
+
30
+ 5. **Configurer les Variables d'Environnement (Base de Données) :**
31
+ * Copiez le fichier d'exemple `.env.example` en `.env` :
32
+ ```bash
33
+ cp .env.example .env
34
+ ```
35
+ * Modifiez le fichier `.env` avec vos identifiants pour la base de données PostgreSQL locale (voir `README.md` pour plus de détails). Ce fichier est ignoré par Git.
36
+
37
+ 6. **Démarrer la Base de Données Locale (si nécessaire) :**
38
+ Si vous travaillez sur des aspects nécessitant la base de données :
39
+ ```bash
40
+ docker-compose up -d
41
+ ```
42
+ N'oubliez pas d'initialiser les tables (`poetry run python -m src.database.init_db`) et de peupler les données (`poetry run python -m scripts.populate_employees_table`) si c'est votre première configuration.
43
+
44
+ ## 🛠️ Workflow de Développement
45
+
46
+ Nous suivons un workflow basé sur Git pour assurer la qualité et la cohérence du code.
47
+
48
+ ### 1. Branches
49
+
50
+ * **`main`** : Contient la version la plus stable et déployée. Aucun push direct n'est autorisé. Les modifications arrivent via des Pull Requests depuis `develop` après validation.
51
+ * **`develop`** : Branche principale d'intégration. Toutes les nouvelles fonctionnalités et corrections sont fusionnées ici avant de passer sur `main`. Aucun push direct n'est autorisé ; passez par une Pull Request.
52
+ * **Branches de Fonctionnalités/Corrections :**
53
+ * Toujours créer une nouvelle branche à partir de la dernière version de `develop`.
54
+ * Utilisez une convention de nommage claire :
55
+ * Pour les nouvelles fonctionnalités : `feature/nom-court-de-la-feature` (ex: `feature/api-logging`)
56
+ * Pour les corrections de bugs : `fix/description-bug` (ex: `fix/prediction-endpoint-500-error`)
57
+ * Pour la documentation : `docs/sujet-documentation` (ex: `docs/update-contributing-guide`)
58
+ * Pour les tâches diverses : `chore/description-tache` (ex: `chore/upgrade-dependencies`)
59
+ ```bash
60
+ git checkout develop
61
+ git pull origin develop
62
+ git checkout -b feature/ma-nouvelle-feature
63
+ ```
64
+
65
+ ### 2. Commits
66
+
67
+ * Rédigez des messages de commit clairs, concis et en français (ou en anglais si c'est la convention du projet).
68
+ * Utilisez les préfixes de **Conventional Commits** pour indiquer la nature du commit :
69
+ * `feat:` (nouvelle fonctionnalité)
70
+ * `fix:` (correction de bug)
71
+ * `docs:` (changements dans la documentation)
72
+ * `style:` (formatage, points-virgules manquants, etc. ; pas de changement de code)
73
+ * `refactor:` (refonte du code qui ne corrige pas de bug ni n'ajoute de fonctionnalité)
74
+ * `test:` (ajout ou correction de tests)
75
+ * `chore:` (mise à jour de tâches de build, configuration, etc.)
76
+ * `ci:` (changements dans les fichiers et scripts de CI/CD)
77
+ * Essayez de faire des commits atomiques (un changement logique par commit).
78
+
79
+ ### 3. Qualité du Code
80
+
81
+ * **Formatage :** Nous utilisons **Black** pour le formatage automatique du code. Avant de commiter, lancez :
82
+ ```bash
83
+ poetry run black .
84
+ ```
85
+ * **Linting :** Nous utilisons **Ruff** pour le linting (détection d'erreurs, de code smells, et application de règles de style). Avant de commiter, lancez :
86
+ ```bash
87
+ poetry run ruff check . --fix # Pour corriger automatiquement ce qui peut l'être
88
+ poetry run ruff format . # Ruff peut aussi remplacer Black pour le formatage
89
+ ```
90
+ (Note: Le workflow CI vérifiera le formatage avec `black --check .` et le linting avec `ruff check .`)
91
+
92
+ ### 4. Tests
93
+
94
+ * Toute nouvelle fonctionnalité ou correction de bug doit être accompagnée de **tests pertinents** (unitaires, fonctionnels, d'intégration).
95
+ * Assurez-vous que tous les tests passent localement avant de pousser votre code :
96
+ ```bash
97
+ poetry run pytest
98
+ ```
99
+ * Vérifiez la couverture de test et essayez de la maintenir ou de l'augmenter :
100
+ ```bash
101
+ poetry run pytest --cov=src tests/
102
+ ```
103
+ (Note: Le workflow CI exécutera ces tests.)
104
+
105
+ ## 🔄 Processus de Pull Request (PR)
106
+
107
+ 1. Une fois votre travail terminé sur votre branche de fonctionnalité, poussez votre branche sur GitHub :
108
+ ```bash
109
+ git push origin feature/ma-nouvelle-feature
110
+ ```
111
+ 2. Sur GitHub, créez une **Pull Request** de votre branche de fonctionnalité vers la branche `develop`.
112
+ 3. Donnez un **titre clair** et une **description détaillée** à votre PR, expliquant les changements apportés et pourquoi.
113
+ 4. Assurez-vous que tous les **checks de la CI (GitHub Actions) passent** sur votre PR (formatage, linting, tests).
114
+ 5. Si vous travaillez en équipe, assignez un ou plusieurs relecteurs.
115
+ 6. Une fois la PR approuvée et les checks de la CI au vert, elle peut être fusionnée dans `develop` par un mainteneur du projet. Privilégiez le "Squash and merge" pour garder un historique propre sur `develop`.
116
+ 7. Après la fusion, la branche de fonctionnalité peut être supprimée sur GitHub et localement.
117
+
118
+ ## 🐞 Rapporter des Bugs
119
+
120
+ * Utilisez l'onglet **"Issues"** du dépôt GitHub pour signaler les bugs.
121
+ * Veuillez inclure autant d'informations que possible :
122
+ * Version du code (hash de commit ou tag).
123
+ * Étapes pour reproduire le bug.
124
+ * Comportement observé.
125
+ * Comportement attendu.
126
+ * Messages d'erreur complets et tracebacks.
127
+
128
+ ## ✨ Proposer des Améliorations
129
+
130
+ * Les suggestions d'amélioration sont les bienvenues ! Veuillez ouvrir une **"Issue"** sur GitHub pour discuter de votre idée avant de commencer à développer.
131
+
132
+ ## ❓ Questions ?
133
+
134
+ Si vous avez des questions sur la contribution, n'hésitez pas à ouvrir une "Issue" pour en discuter.
135
+
136
+ Merci pour votre contribution !