Files
towercontrol/TFS_UPGRADE_SUMMARY.md
Julien Froidefond 723a44df32 feat: TFS Sync
2025-09-22 21:51:12 +02:00

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'utilisateur
  • getPullRequestsByCreator() : PRs créées par l'utilisateur
  • getPullRequestsByReviewer() : PRs où l'utilisateur est reviewer
  • filterPullRequests() : 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 :

  • projectName devient 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 required supprimé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

  1. Centré utilisateur : Récupère seulement les PRs pertinentes
  2. Performance améliorée : Une seule requête API au lieu de parcourir tous les repos
  3. Flexibilité : Projet spécifique OU toute l'organisation
  4. Scalabilité : Fonctionne avec des organisations de grande taille
  5. 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

  1. Configuration avec projet spécifique : Vérifier le filtrage par projet
  2. Configuration sans projet : Vérifier la récupération organisation complète
  3. Test de connexion : Valider le nouveau comportement API
  4. 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 projectName pour é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. 🎯