File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -39,6 +39,7 @@ const QUERY = `
3939 pullRequest(number: $issueNumber) {
4040 number
4141 title
42+ isDraft
4243 reviewDecision
4344 author {
4445 login
@@ -47,6 +48,9 @@ const QUERY = `
4748 target {
4849 ... on Commit {
4950 committedDate
51+ statusCheckRollup {
52+ state
53+ }
5054 }
5155 }
5256 }
@@ -324,13 +328,31 @@ async function getPrAutomationData(
324328 | 'REVIEW_REQUIRED'
325329 | undefined ;
326330
327- const headCommitDate = (
328- pr as { headRef ?: { target ?: { committedDate ?: string } } }
329- ) . headRef ?. target ?. committedDate ;
331+ const headCommit = (
332+ pr as {
333+ headRef ?: {
334+ target ?: {
335+ committedDate ?: string ;
336+ statusCheckRollup ?: { state ?: string } ;
337+ } ;
338+ } ;
339+ }
340+ ) . headRef ?. target ;
341+
342+ const headCommitDate = headCommit ?. committedDate ;
343+ const checkStatus = headCommit ?. statusCheckRollup ?. state as
344+ | 'SUCCESS'
345+ | 'FAILURE'
346+ | 'PENDING'
347+ | 'ERROR'
348+ | 'EXPECTED'
349+ | undefined ;
330350
331351 return {
332352 number : pr . number ,
333353 title : pr . title ,
354+ isDraft : ( pr as { isDraft ?: boolean } ) . isDraft ?? false ,
355+ checkStatus,
334356 authorLogin : pr . author ?. login ?? undefined ,
335357 reviewDecision,
336358 labels :
Original file line number Diff line number Diff line change @@ -176,9 +176,19 @@ export async function main() {
176176 // Get copilot review priority boost
177177 const copilotPriority = getCopilotReviewPriority ( data . reviews ) ;
178178
179- const priority = basePriority + authorScore + copilotPriority ;
179+ // Apply penalty multipliers for draft PRs (20%) and failing checks (50%)
180+ const draftMultiplier = data . isDraft ? 0.2 : 1 ;
181+ const checksPassing = data . checkStatus === 'SUCCESS' ;
182+ const checksMultiplier = checksPassing ? 1 : 0.5 ;
183+ const priority = Math . round (
184+ ( basePriority + authorScore + copilotPriority ) *
185+ draftMultiplier *
186+ checksMultiplier ,
187+ ) ;
180188
181189 const priorityParts : string [ ] = [ ] ;
190+ if ( data . isDraft ) priorityParts . push ( 'draft ×0.2' ) ;
191+ if ( ! checksPassing ) priorityParts . push ( `checks ${ data . checkStatus } ×0.5` ) ;
182192 if ( reviewerApproved ) priorityParts . push ( 'reviewer approval' ) ;
183193 if ( authorScore > 0 ) priorityParts . push ( `author score +${ authorScore } ` ) ;
184194 if ( copilotPriority > 0 ) priorityParts . push ( `copilot +${ copilotPriority } ` ) ;
Original file line number Diff line number Diff line change @@ -41,9 +41,18 @@ export interface Comment {
4141 createdAt ?: string ;
4242}
4343
44+ export type CheckStatusState =
45+ | 'SUCCESS'
46+ | 'FAILURE'
47+ | 'PENDING'
48+ | 'ERROR'
49+ | 'EXPECTED' ;
50+
4451export interface PrData {
4552 number : number ;
4653 title : string ;
54+ isDraft : boolean ;
55+ checkStatus ?: CheckStatusState ;
4756 authorLogin ?: string ;
4857 reviewDecision ?: 'APPROVED' | 'CHANGES_REQUESTED' | 'REVIEW_REQUIRED' ;
4958 labels : string [ ] ;
You can’t perform that action at this time.
0 commit comments