Aperçu
PRWise extrait les données des PR GitHub et les transforme en scènes 3D pilotées par la physique qui répondent à quatre questions — combien de temps avant que quelqu'un regarde une PR, ce qui est bloqué et a besoin d'un coup de pouce, qui porte la charge de révision, et si les merges respectent réellement les règles de protection de branche. Chaque rapport est une scène, pas un graphique. Des particules circulent dans les pipelines, les réviseurs apparaissent comme des puits gravitationnels avec des PR en orbite, les violations de conformité franchissent les barrières. Les contraintes de confidentialité sont intégrées à l'architecture: pas de classement, pseudonymes par défaut, et l'affichage des vrais noms nécessite d'activer un toggle — avec journal d'audit.
Le défi
Les équipes d'ingénierie génèrent des milliers de PRs et de révisions, mais les schémas importants restent invisibles. La charge de révision s'accumule-t-elle sur deux personnes pendant que les autres regardent? Les règles de protection de branche sont-elles contournées? Combien de temps les PRs attendent-elles avant que quelqu'un les regarde? Les tableaux de bord GitHub ne répondent pas à ces questions. Les outils existants déversent des données brutes sans structure, ou créent des classements qui poussent à jouer avec les chiffres et détruisent la confiance. Les managers ont besoin de voir la santé du processus de révision sans que cela devienne un outil de surveillance.
La solution
Un backend Django communique avec GitHub via un seul client API. Les webhooks se déclenchent sur les événements de PR, mais au lieu de faire confiance au payload, ils récupèrent l'état actuel de la PR via GraphQL — upserts idempotents, le replay est inoffensif. Un backfill reprenable couvre l'historique avec persistance du curseur. Chaque nuit, un balayage de réconciliation rattrape ce que les webhooks ont manqué. Les définitions de métriques vivent dans un seul module derive en tant que fonctions pures: une PR entre, un ensemble de faits calculés sort. Les rapports agrègent à partir de ces lignes, ils ne peuvent donc pas se contredire. Le frontend est React avec Three.js et d3-force-3d pour les scènes 3D, avec un fallback HTML statique pour les utilisateurs en reduced motion. PostgreSQL 17 avec pgvector pour la recherche vectorielle. Redis 7, Celery, Docker Compose. Le système de rôles applique les pseudonymes au niveau member, les vrais noms au niveau manager avec infobulle d'accompagnement, et chaque révélation de nom est enregistrée dans le journal d'audit.