Skip to content

Commit ec9074e

Browse files
committed
Better iterative review handling for TG Task
1 parent c483939 commit ec9074e

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

src/autopilot/services/first2finish.service.spec.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,38 @@ describe('First2FinishService', () => {
188188
expect(schedulerService.advancePhase).not.toHaveBeenCalled();
189189
});
190190

191+
it('keeps the active iterative review phase open when no submissions are available', async () => {
192+
const activePhase = buildIterativePhase({
193+
isOpen: true,
194+
actualEndDate: null,
195+
});
196+
197+
const challenge = buildChallenge({
198+
phases: [activePhase],
199+
reviewers: [buildReviewer()],
200+
});
201+
202+
challengeApiService.getChallengeById.mockResolvedValue(challenge);
203+
204+
resourcesService.getReviewerResources.mockResolvedValue([
205+
{
206+
id: 'resource-1',
207+
memberId: '2001',
208+
memberHandle: 'iterativeReviewer',
209+
roleName: 'Iterative Reviewer',
210+
},
211+
]);
212+
213+
reviewService.getAllSubmissionIdsOrdered.mockResolvedValue([]);
214+
reviewService.getExistingReviewPairs.mockResolvedValue(new Set());
215+
216+
await service.handleSubmissionByChallengeId(challenge.id);
217+
218+
expect(reviewService.createPendingReview).not.toHaveBeenCalled();
219+
expect(schedulerService.advancePhase).not.toHaveBeenCalled();
220+
expect(schedulerService.schedulePhaseTransition).not.toHaveBeenCalled();
221+
});
222+
191223
it('reopens the seeded iterative review phase when the first submission arrives', async () => {
192224
const seedPhase = buildIterativePhase({
193225
isOpen: false,

src/autopilot/services/first2finish.service.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,20 @@ export class First2FinishService {
364364
);
365365

366366
if (!assigned) {
367+
const submissionSnapshot =
368+
await this.reviewService.getAllSubmissionIdsOrdered(challenge.id);
369+
370+
if (!submissionSnapshot.length) {
371+
this.logger.debug(
372+
`No submissions available yet for iterative review on challenge ${challenge.id}; keeping phase ${activePhase.id} open.`,
373+
{
374+
submissionId: submissionId ?? null,
375+
phaseId: activePhase.id,
376+
},
377+
);
378+
return;
379+
}
380+
367381
this.logger.debug(
368382
`No additional submissions available for iterative review on challenge ${challenge.id}; closing phase ${activePhase.id}.`,
369383
);

0 commit comments

Comments
 (0)