@@ -110,7 +110,7 @@ class ChallengeReviewerField extends Component {
110110 const phase = challenge . phases && challenge . phases . find ( p => p . phaseId === item . phaseId )
111111 return {
112112 ...item ,
113- name : phase . name
113+ name : phase ? .name
114114 }
115115 } )
116116
@@ -355,7 +355,7 @@ class ChallengeReviewerField extends Component {
355355 const currentReviewers = challenge . reviewers || [ ]
356356
357357 // Create a new default reviewer based on track and type
358- const defaultReviewer = this . findDefaultReviewer ( )
358+ const defaultTrackReviewer = this . findDefaultReviewer ( )
359359
360360 // Get the first available review phase if phases exist
361361 const reviewPhases = challenge . phases && challenge . phases . filter ( phase =>
@@ -368,7 +368,19 @@ class ChallengeReviewerField extends Component {
368368 ? challenge . phases [ 0 ]
369369 : null
370370
371- const isAIReviewer = this . isAIReviewer ( defaultReviewer )
371+ // Determine the default phase ID
372+ let defaultPhaseId = ''
373+ if ( defaultTrackReviewer && defaultTrackReviewer . phaseId ) {
374+ defaultPhaseId = defaultTrackReviewer . phaseId
375+ } else if ( firstReviewPhase ) {
376+ defaultPhaseId = firstReviewPhase . phaseId || firstReviewPhase . id
377+ } else if ( fallbackPhase ) {
378+ defaultPhaseId = fallbackPhase . phaseId || fallbackPhase . id
379+ }
380+
381+ const defaultReviewer = this . findDefaultReviewer ( defaultPhaseId ) ?? defaultTrackReviewer ;
382+
383+ const isAIReviewer = this . isAIReviewer ( defaultTrackReviewer )
372384
373385 // For AI reviewers, get scorecardId from the workflow if available
374386 let scorecardId = ''
@@ -386,22 +398,13 @@ class ChallengeReviewerField extends Component {
386398 scorecardId = ( defaultReviewer && defaultReviewer . scorecardId ) || ''
387399 }
388400
389- // Determine the default phase ID
390- let defaultPhaseId = ''
391- if ( defaultReviewer && defaultReviewer . phaseId ) {
392- defaultPhaseId = defaultReviewer . phaseId
393- } else if ( firstReviewPhase ) {
394- defaultPhaseId = firstReviewPhase . phaseId || firstReviewPhase . id
395- } else if ( fallbackPhase ) {
396- defaultPhaseId = fallbackPhase . phaseId || fallbackPhase . id
397- }
398-
399401 const newReviewer = {
400402 scorecardId,
401403 isMemberReview : ! isAIReviewer ,
402404 phaseId : defaultPhaseId ,
403- baseCoefficient : ( defaultReviewer && defaultReviewer . baseCoefficient ) || '0' ,
404- incrementalCoefficient : ( defaultReviewer && defaultReviewer . incrementalCoefficient ) || 0 ,
405+ fixedAmount : ( defaultReviewer && defaultReviewer . fixedAmount ) || 0 ,
406+ baseCoefficient : ( defaultReviewer && defaultReviewer . baseCoefficient ) || '0.13' ,
407+ incrementalCoefficient : ( defaultReviewer && defaultReviewer . incrementalCoefficient ) || 0.05 ,
405408 type : isAIReviewer
406409 ? undefined
407410 : ( defaultReviewer && defaultReviewer . opportunityType ) || REVIEW_OPPORTUNITY_TYPES . REGULAR_REVIEW ,
@@ -449,6 +452,14 @@ class ChallengeReviewerField extends Component {
449452 // Special handling for phase and count changes
450453 if ( field === 'phaseId' ) {
451454 this . handlePhaseChangeWithReassign ( index , value )
455+
456+ // update payment based on default reviewer
457+ const defaultReviewer = this . findDefaultReviewer ( value ) ?? updatedReviewers [ index ] ;
458+ Object . assign ( fieldUpdate , {
459+ fixedAmount : defaultReviewer . fixedAmount ,
460+ baseCoefficient : defaultReviewer . baseCoefficient ,
461+ incrementalCoefficient : defaultReviewer . incrementalCoefficient ,
462+ } )
452463 }
453464
454465 if ( field === 'memberReviewerCount' ) {
@@ -460,17 +471,15 @@ class ChallengeReviewerField extends Component {
460471 onUpdateReviewers ( { field : 'reviewers' , value : updatedReviewers } )
461472 }
462473
463- findDefaultReviewer ( ) {
474+ findDefaultReviewer ( phaseId ) {
464475 const { challenge, metadata = { } } = this . props
465476 const { defaultReviewers = [ ] } = metadata
466477
467478 if ( ! challenge || ! challenge . trackId || ! challenge . typeId ) {
468479 return null
469480 }
470481
471- return defaultReviewers . find ( dr =>
472- dr . trackId === challenge . trackId && dr . typeId === challenge . typeId
473- )
482+ return phaseId ? defaultReviewers . find ( dr => dr . phaseId === phaseId ) : defaultReviewers [ 0 ] ;
474483 }
475484
476485 validateReviewer ( reviewer ) {
@@ -560,6 +569,7 @@ class ChallengeReviewerField extends Component {
560569 scorecardId,
561570 isMemberReview : ! isAI ,
562571 phaseId : currentReviewer . phaseId ,
572+ fixedAmount : currentReviewer . fixedAmount || 0 ,
563573 baseCoefficient : currentReviewer . baseCoefficient || '0' ,
564574 incrementalCoefficient : currentReviewer . incrementalCoefficient || 0 ,
565575 type : isAI ? undefined : ( currentReviewer . type || REVIEW_OPPORTUNITY_TYPES . REGULAR_REVIEW )
@@ -827,11 +837,12 @@ class ChallengeReviewerField extends Component {
827837 const reviewersCost = reviewers
828838 . filter ( ( r ) => ! this . isAIReviewer ( r ) )
829839 . reduce ( ( sum , r ) => {
840+ const fixedAmount = r . fixedAmount || 0
830841 const basePayment = firstPlacePrize * parseFloat ( r . baseCoefficient || 0 )
831842 const incrementalPayment = parseFloat ( r . incrementalCoefficient || 0 ) * firstPlacePrize
832843
833844 const count = parseInt ( r . memberReviewerCount ) || 1
834- return sum + ( basePayment + incrementalPayment ) * count
845+ return sum + ( fixedAmount + basePayment + incrementalPayment ) * count
835846 } , 0 )
836847 . toFixed ( 2 )
837848
0 commit comments