gongxiangp2/lib/work-review-policy.ts

23 lines
828 B
TypeScript

export type WorkReviewDecision = 'approved' | 'revision_required'
export type WorkReviewReviewerRole = 'manager' | 'final_reviewer'
export function deriveWorkReviewDecision(
decisions: ReadonlyArray<{ decision: WorkReviewDecision }>,
): WorkReviewDecision {
return decisions.some((item) => item.decision === 'revision_required')
? 'revision_required'
: 'approved'
}
export function deriveCompletedWorkReviewStatus(
reviews: ReadonlyArray<{
reviewerRole: string
decision: WorkReviewDecision
}>,
): WorkReviewDecision | null {
const manager = reviews.find((review) => review.reviewerRole === 'manager')
const finalReviewer = reviews.find((review) => review.reviewerRole === 'final_reviewer')
if (!manager || !finalReviewer) return null
return deriveWorkReviewDecision([manager, finalReviewer])
}