File size: 996 Bytes
b1df986
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import type { ProcessingStage } from '../../../types'

export function shouldDisableQueueRetry(errorMessage: string): boolean {
  return errorMessage.includes('Code retry failed after')
    || errorMessage.includes('AI retry skipped for')
}

export function getRetryMeta(job: any): {
  currentAttempt: number
  maxAttempts: number
  hasRemainingAttempts: boolean
} {
  const maxAttempts = typeof job?.opts?.attempts === 'number' && job.opts.attempts > 0 ? job.opts.attempts : 1
  const currentAttempt = (job?.attemptsMade ?? 0) + 1
  return {
    currentAttempt,
    maxAttempts,
    hasRemainingAttempts: currentAttempt < maxAttempts
  }
}

export async function storeProcessingStage(
  jobId: string,
  stage: ProcessingStage,
  options?: {
    status?: 'queued' | 'processing'
    attempt?: number
    submittedAt?: string
  }
): Promise<void> {
  const { storeJobStage } = await import('../../../infrastructure/redis/job/redis-job-state-store')
  await storeJobStage(jobId, stage, options)
}