@@ -148,6 +148,8 @@ interface PullRequest {
148148 comments : {
149149 totalCount : number ;
150150 } ;
151+ additions ?: number ;
152+ deletions ?: number ;
151153 __typename ?: string ;
152154}
153155
@@ -163,6 +165,8 @@ interface PullRequestWithReviews extends PullRequest {
163165
164166interface StalePullRequest extends Omit < PullRequest , "assignees" > {
165167 reviewDecision : string | null ;
168+ additions ?: number ;
169+ deletions ?: number ;
166170}
167171
168172class GitHubGraphQLClient {
@@ -521,7 +525,7 @@ class GitHubGraphQLClient {
521525 }
522526 }
523527 }
524- # Assigned Pull Requests
528+ # Assigned Pull Requests
525529 pullRequests(states: OPEN, first: 50) {
526530 nodes {
527531 __typename
@@ -552,6 +556,8 @@ class GitHubGraphQLClient {
552556 comments {
553557 totalCount
554558 }
559+ additions
560+ deletions
555561 }
556562 }
557563 }
@@ -587,6 +593,8 @@ class GitHubGraphQLClient {
587593 totalCount
588594 }
589595 reviewDecision
596+ additions
597+ deletions
590598 }
591599 }
592600 }
@@ -622,6 +630,8 @@ class GitHubGraphQLClient {
622630 totalCount
623631 }
624632 reviewDecision
633+ additions
634+ deletions
625635 }
626636 }
627637 }
@@ -690,6 +700,8 @@ class GitHubGraphQLClient {
690700 }
691701 }
692702 }
703+ additions
704+ deletions
693705 }
694706 }
695707 }
@@ -733,6 +745,8 @@ class GitHubGraphQLClient {
733745 }
734746 }
735747 }
748+ additions
749+ deletions
736750 }
737751 }
738752 }
@@ -857,6 +871,11 @@ class GitHubGraphQLClient {
857871 const labelNames = labels . map ( ( l ) => l . name ) ;
858872
859873 const isPR = this . isPullRequest ( item ) ;
874+ const commentCount = item . comments ?. totalCount || 0 ;
875+
876+ const prSize = isPR && "additions" in item && "deletions" in item
877+ ? { additions : item . additions , deletions : item . deletions }
878+ : undefined ;
860879
861880 return {
862881 id : item . id ,
@@ -869,11 +888,17 @@ class GitHubGraphQLClient {
869888 avatarUrl : item . author ?. avatarUrl || "" ,
870889 } ,
871890 labels,
872- priority : this . calculateActionPriority ( labelNames , daysOld , mentionType ) ,
891+ priority : this . calculateActionPriority (
892+ labelNames ,
893+ daysOld ,
894+ mentionType ,
895+ commentCount ,
896+ prSize
897+ ) ,
873898 daysOld,
874899 createdAt : item . createdAt ,
875900 updatedAt : item . updatedAt ,
876- comments : item . comments ?. totalCount || 0 ,
901+ comments : commentCount ,
877902 stars : item . repository . stargazerCount || 0 ,
878903 ...( mentionType && { mentionType } ) ,
879904 } ;
@@ -882,10 +907,36 @@ class GitHubGraphQLClient {
882907 private calculateActionPriority (
883908 labels : string [ ] ,
884909 daysOld : number ,
885- mentionType ?: "mention" | "review_request" | "comment"
910+ mentionType ?: "mention" | "review_request" | "comment" ,
911+ commentCount = 0 ,
912+ prSize ?: { additions ?: number ; deletions ?: number }
886913 ) : "urgent" | "high" | "medium" | "low" {
887- if ( mentionType === "review_request" ) {
888- return "urgent" ;
914+ let score = 0 ;
915+
916+ const statusScores = {
917+ review_request : 50 ,
918+ mention : 30 ,
919+ comment : 25 ,
920+ } ;
921+ if ( mentionType && statusScores [ mentionType ] ) {
922+ score += statusScores [ mentionType ] ;
923+ } else {
924+ score += 20 ;
925+ }
926+
927+ score += Math . min ( commentCount * 2 , 30 ) ;
928+
929+ if ( prSize && ( prSize . additions || prSize . deletions ) ) {
930+ const totalChanges = ( prSize . additions || 0 ) + ( prSize . deletions || 0 ) ;
931+ if ( totalChanges > 1000 ) {
932+ score += 20 ;
933+ } else if ( totalChanges > 500 ) {
934+ score += 15 ;
935+ } else if ( totalChanges > 100 ) {
936+ score += 10 ;
937+ } else {
938+ score += 5 ;
939+ }
889940 }
890941
891942 const lowerLabels = labels . map ( ( l ) => l . toLowerCase ( ) ) ;
@@ -896,20 +947,33 @@ class GitHubGraphQLClient {
896947 l . includes ( "critical" ) || l . includes ( "urgent" ) || l . includes ( "p0" )
897948 )
898949 ) {
899- return "urgent" ;
900- }
901- if (
950+ score += 40 ;
951+ } else if (
902952 lowerLabels . some (
903953 ( l ) => l . includes ( "high" ) || l . includes ( "p1" ) || l . includes ( "bug" )
904954 )
905955 ) {
906- return "high" ;
956+ score += 25 ;
957+ } else if (
958+ lowerLabels . some (
959+ ( l ) =>
960+ l . includes ( "low" ) || l . includes ( "p3" ) || l . includes ( "enhancement" )
961+ )
962+ ) {
963+ score -= 10 ;
907964 }
908965
909- if ( daysOld > 14 ) return "urgent" ;
910- if ( daysOld > 7 ) return "high" ;
911- if ( daysOld > 3 ) return "medium" ;
966+ if ( daysOld > 14 ) {
967+ score *= 1.5 ;
968+ } else if ( daysOld > 7 ) {
969+ score *= 1.3 ;
970+ } else if ( daysOld > 3 ) {
971+ score *= 1.1 ;
972+ }
912973
974+ if ( score >= 100 ) return "urgent" ;
975+ if ( score >= 70 ) return "high" ;
976+ if ( score >= 40 ) return "medium" ;
913977 return "low" ;
914978 }
915979}
0 commit comments