3.9 KiB
3.9 KiB
Mise à niveau TFS : Récupération des PRs assignées à l'utilisateur
🎯 Objectif
Permettre au service TFS de récupérer toutes les Pull Requests assignées à l'utilisateur sur l'ensemble de son organisation Azure DevOps, plutôt que de se limiter à un projet spécifique.
⚡ Changements apportés
1. Service TFS (src/services/tfs.ts)
Nouvelles méthodes ajoutées :
getMyPullRequests(): Récupère toutes les PRs concernant l'utilisateurgetPullRequestsByCreator(): PRs créées par l'utilisateurgetPullRequestsByReviewer(): PRs où l'utilisateur est reviewerfilterPullRequests(): Applique les filtres de configuration
Méthode syncTasks refactorisée :
- Utilise maintenant
getMyPullRequests()au lieu de parcourir tous les repositories - Plus efficace et centrée sur l'utilisateur
- Récupération directe via l'API Azure DevOps avec critères
@me
Configuration mise à jour :
projectNamedevient optionnel- Validation assouplie dans les factories
- Comportement adaptatif : projet spécifique OU toute l'organisation
2. Interface utilisateur (src/components/settings/TfsConfigForm.tsx)
Modifications du formulaire :
- Champ "Nom du projet" marqué comme optionnel
- Validation
requiredsupprimée - Placeholder mis à jour : "laisser vide pour toute l'organisation"
- Affichage du statut : "Toute l'organisation" si pas de projet
Instructions mises à jour :
- Explique le nouveau comportement synchronisation intelligente
- Précise que les PRs sont récupérées automatiquement selon l'assignation
- Note sur la portée projet vs organisation
3. Endpoints API
/api/tfs/test/route.ts
- Validation mise à jour (projectName optionnel)
- Message de réponse enrichi avec portée (projet/organisation)
- Retour détaillé du scope de synchronisation
/api/tfs/sync/route.ts
- Validation assouplie pour les deux méthodes GET/POST
- Configuration adaptative selon la présence du projectName
🔧 API Azure DevOps utilisées
Nouvelles requêtes :
// PRs créées par l'utilisateur
/_apis/git/pullrequests?searchCriteria.creatorId=@me&searchCriteria.status=active
// PRs où je suis reviewer
/_apis/git/pullrequests?searchCriteria.reviewerId=@me&searchCriteria.status=active
Comportement intelligent :
- Fusion automatique des deux types de PRs
- Déduplication basée sur
pullRequestId - Filtrage selon la configuration (repositories, branches, projet)
📊 Avantages
- Centré utilisateur : Récupère seulement les PRs pertinentes
- Performance améliorée : Une seule requête API au lieu de parcourir tous les repos
- Flexibilité : Projet spécifique OU toute l'organisation
- Scalabilité : Fonctionne avec des organisations de grande taille
- Simplicité : Configuration minimale requise
🎨 Interface utilisateur
Avant :
- Champ projet obligatoire
- Synchronisation limitée à UN projet
- Configuration rigide
Après :
- Champ projet optionnel
- Synchronisation intelligente de TOUTES les PRs assignées
- Configuration flexible et adaptative
- Instructions claires sur le comportement
✅ Tests recommandés
- Configuration avec projet spécifique : Vérifier le filtrage par projet
- Configuration sans projet : Vérifier la récupération organisation complète
- Test de connexion : Valider le nouveau comportement API
- Synchronisation : Contrôler que seules les PRs assignées sont récupérées
🚀 Déploiement
La migration est transparente :
- Les configurations existantes continuent à fonctionner
- Possibilité de supprimer le
projectNamepour étendre la portée - Pas de rupture de compatibilité
Cette mise à niveau transforme le service TFS d'un outil de surveillance de projet en un assistant personnel intelligent pour Azure DevOps. 🎯