Skills/modern-git-workflow/references/pr-templates.md

4.2 KiB

Gabarits Universels de Pull Request & Merge Request

Ce document fournit des modèles structurés pour rédiger des Pull Requests (GitHub, Gitea) et Merge Requests (GitLab) professionnelles, complètes et conformes aux standards de l'art.


1. Modèle Standard Universel (Markdown)

Ce gabarit doit être utilisé dans le corps de description de la PR/MR, quel que soit l'outil ou la forge utilisée.

## 🎯 Contexte & Objectif
<!-- Expliquez brièvement le problème résolu ou le besoin fonctionnel/technique auquel répond cette branche. -->
<!-- Ex: Résout l'anomalie #42 liée à l'expiration prématurée des sessions d'authentification. -->

Refs / Closes #<NUMERO_ISSUE>

---

## 🛠️ Modifications apportées
<!-- Liste à puces synthétique des changements clés introduits dans cette PR. -->
- Ajout du middleware de validation des tokens avec délai de grâce de 30 secondes.
- Mise à jour du schéma de base de données pour inclure la date d'invalidation de session.
- Refactorisation du service de gestion des utilisateurs pour éviter les requêtes N+1.

---

## 🧪 Stratégie de Test & Preuves de Fonctionnement
<!-- Décrivez comment vous avez testé vos modifications et joignez logs ou captures si pertinent. -->
- [x] **Tests unitaires & intégration** : `pytest` / `npm test` exécutés avec 100% de succès.
- [x] **Linter & Typage** : Aucun avertissement (`ruff check`, `eslint`, `tsc --noEmit`).
- [x] **Vérification manuelle** : Parcours utilisateur testé en environnement local (login ➔ renouvellement ➔ déconnexion).

```text
<!-- Collez un extrait concis de log ou résultat de test réussi -->
PASS tests/auth/test_session_invalidation.py (14 tests passed in 0.82s)

📋 Checklist de Sécurité & Hygiène Git

  • La branche a été rebasée sur la dernière version de la branche cible (origin/main).
  • Aucun secret, clé d'API, mot de passe ou fichier sensible (.env, .pem) n'est présent dans le diff.
  • Aucun fichier temporaire, log ou déchet de build n'est inclus (.DS_Store, node_modules/, dist/).
  • Les messages de commit respectent la spécification Conventional Commits 1.0.0.
  • La PR est prête pour une fusion par Squash and Merge (ou Rebase and Merge si commits atomiques validés).

---

## 2. Commandes CLI par Forge Logicielle

### 2.1 GitHub (`gh` CLI)

```bash
# 1. Ouvrir une PR standard
gh pr create \
  --base main \
  --head feat/auth-token-refresh \
  --title "feat(auth): add automatic session token grace period" \
  --body-file .github/pull_request_template.md

# 2. Ouvrir une PR en mode Draft (travail en cours ou en attente de retours)
gh pr create --draft \
  --base main \
  --title "feat(auth): add automatic session token grace period [WIP]" \
  --body "Travail en cours, tests en phase de stabilisation."

# 3. Marquer une PR Draft comme prête pour la revue
gh pr ready <NUMERO_PR>

# 4. Fusionner via Squash and Merge
gh pr merge <NUMERO_PR> --squash --delete-branch

2.2 GitLab (glab CLI)

# 1. Ouvrir une Merge Request standard
glab mr create \
  --target-branch main \
  --source-branch feat/auth-token-refresh \
  --title "feat(auth): add automatic session token grace period" \
  --description "Description complète..." \
  --remove-source-branch \
  --squash-before-merge

# 2. Ouvrir en mode Draft / Work in Progress
glab mr create --draft \
  --target-branch main \
  --title "Draft: feat(auth): add automatic session token grace period"

2.3 Gitea & Forges Génériques

Pour Gitea ou toute forge sans outil CLI installé en local :

  1. Pousser la branche de travail vers le dépôt distant :
    git push -u origin feat/auth-token-refresh
    
  2. Git affichera dans la console le lien direct pour créer la Pull Request sur l'interface web de Gitea :
    remote: Create a pull request for 'feat/auth-token-refresh' on Gitea by visiting:
    remote:   https://gitea.example.com/org/repo/compare/main...feat/auth-token-refresh
    
  3. Remplir le formulaire avec le titre conventionnel et le corps Markdown universel ci-dessus.
  4. Sélectionner l'option Squash and Merge lors de l'approbation finale.