From 32440d72bdecdb2de30b94a15a0a005a20dc96ca Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Tue, 2 Dec 2025 13:42:05 +0200 Subject: [PATCH 01/10] PM-3091 - clear review cache --- .../ScorecardViewer/hooks/useReviewForm.ts | 48 +++++++++---------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/src/apps/review/src/lib/components/Scorecard/ScorecardViewer/hooks/useReviewForm.ts b/src/apps/review/src/lib/components/Scorecard/ScorecardViewer/hooks/useReviewForm.ts index 0122f1dbb..f21820b1b 100644 --- a/src/apps/review/src/lib/components/Scorecard/ScorecardViewer/hooks/useReviewForm.ts +++ b/src/apps/review/src/lib/components/Scorecard/ScorecardViewer/hooks/useReviewForm.ts @@ -41,32 +41,30 @@ export const useReviewForm = ({ }, [isDirty, onFormChange]) useEffect(() => { - if (reviewItems?.length) { - const newFormData = { - reviews: reviewItems.map( - (reviewItem, reviewItemIndex) => ({ - comments: 'reviewItemComments' in reviewItem ? reviewItem.reviewItemComments?.map( - (commentItem, commentIndex) => ({ - content: commentItem.content ?? '', - id: commentItem.id, - index: commentIndex, - type: commentItem.type ?? '', - }), - ) : [], - id: reviewItem.id, - index: reviewItemIndex, - initialAnswer: ( - ('finalAnswer' in reviewItem && reviewItem.finalAnswer) - || ('initialAnswer' in reviewItem && reviewItem.initialAnswer) - || ('questionScore' in reviewItem && reviewItem.questionScore) - || undefined - ) as string, - scorecardQuestionId: reviewItem.scorecardQuestionId, - }), - ), - } - reset(newFormData) + const newFormData = { + reviews: (reviewItems ?? []).map( + (reviewItem, reviewItemIndex) => ({ + comments: 'reviewItemComments' in reviewItem ? reviewItem.reviewItemComments?.map( + (commentItem, commentIndex) => ({ + content: commentItem.content ?? '', + id: commentItem.id, + index: commentIndex, + type: commentItem.type ?? '', + }), + ) : [], + id: reviewItem.id, + index: reviewItemIndex, + initialAnswer: ( + ('finalAnswer' in reviewItem && reviewItem.finalAnswer) + || ('initialAnswer' in reviewItem && reviewItem.initialAnswer) + || ('questionScore' in reviewItem && reviewItem.questionScore) + || undefined + ) as string, + scorecardQuestionId: reviewItem.scorecardQuestionId, + }), + ), } + reset(newFormData) }, [reviewItems, reset]) const touchedAllFields = useCallback(() => { From ebdef7a110b80bc72bebe0281887fe55a5bf3676 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Tue, 2 Dec 2025 13:59:07 +0200 Subject: [PATCH 02/10] PM-3089 - handle run failure --- .../pages/reviews/components/AiReviewViewer/AiReviewViewer.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/apps/review/src/pages/reviews/components/AiReviewViewer/AiReviewViewer.tsx b/src/apps/review/src/pages/reviews/components/AiReviewViewer/AiReviewViewer.tsx index 6b17ab1d4..de4fb8f7d 100644 --- a/src/apps/review/src/pages/reviews/components/AiReviewViewer/AiReviewViewer.tsx +++ b/src/apps/review/src/pages/reviews/components/AiReviewViewer/AiReviewViewer.tsx @@ -36,6 +36,7 @@ const AiReviewViewer: FC = () => { challengeInfo, }: ChallengeDetailContextModel = useChallengeDetailsContext() const navigate = useAppNavigate() + const workflowRunIsFailed = [AiWorkflowRunStatusEnum.FAILURE].includes(workflowRun?.status as AiWorkflowRunStatusEnum); const tabItems: SelectOption[] = [ { @@ -56,7 +57,7 @@ const AiReviewViewer: FC = () => { label: 'Scorecard', value: 'scorecard', }, - { label: `Attachments (${totalCount ?? 0})`, value: 'attachments' }, + { label: `Attachments${workflowRunIsFailed ? '' : ` (${totalCount ?? 0})`}`, value: 'attachments' }, ] const isFailedRun = useMemo(() => ( workflowRun && [ From 7234ac0fba5d7fc44c292d7f33429211b422a45e Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Tue, 2 Dec 2025 14:12:15 +0200 Subject: [PATCH 03/10] lint --- .../reviews/components/AiReviewViewer/AiReviewViewer.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/apps/review/src/pages/reviews/components/AiReviewViewer/AiReviewViewer.tsx b/src/apps/review/src/pages/reviews/components/AiReviewViewer/AiReviewViewer.tsx index de4fb8f7d..68ac83b8c 100644 --- a/src/apps/review/src/pages/reviews/components/AiReviewViewer/AiReviewViewer.tsx +++ b/src/apps/review/src/pages/reviews/components/AiReviewViewer/AiReviewViewer.tsx @@ -36,7 +36,9 @@ const AiReviewViewer: FC = () => { challengeInfo, }: ChallengeDetailContextModel = useChallengeDetailsContext() const navigate = useAppNavigate() - const workflowRunIsFailed = [AiWorkflowRunStatusEnum.FAILURE].includes(workflowRun?.status as AiWorkflowRunStatusEnum); + const workflowRunIsFailed = [ + AiWorkflowRunStatusEnum.FAILURE, + ].includes(workflowRun?.status as AiWorkflowRunStatusEnum) const tabItems: SelectOption[] = [ { From f5209626329f048fac5733b1afc9b4399632360a Mon Sep 17 00:00:00 2001 From: Hentry Martin Date: Tue, 2 Dec 2025 19:07:55 +0100 Subject: [PATCH 04/10] fix: removed border bottom to last row in ai table --- .../components/AiReviewsTable/AiReviewsTable.module.scss | 7 +++++++ .../TabContentSubmissions.module.scss | 1 + 2 files changed, 8 insertions(+) diff --git a/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.module.scss b/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.module.scss index e587bc4f4..5c0d0d044 100644 --- a/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.module.scss +++ b/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.module.scss @@ -10,6 +10,13 @@ width: 100%; border-collapse: collapse; + &.reviewsTable { + tr:last-child { + td { + border-bottom: none !important; + } + } + } &.reviewsTable thead tr th { border-top: 1px solid #A8A8A8; diff --git a/src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentSubmissions.module.scss b/src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentSubmissions.module.scss index 87cdbb723..03aecc665 100644 --- a/src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentSubmissions.module.scss +++ b/src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentSubmissions.module.scss @@ -128,6 +128,7 @@ } .aiReviewerRow { + padding-bottom: 0; @include ltelg { tr:has(&) { td:first-child { From 1690c772e97dbb51cf6c1027bee168b46d8d2bc8 Mon Sep 17 00:00:00 2001 From: Hentry Martin Date: Tue, 2 Dec 2025 19:17:21 +0100 Subject: [PATCH 05/10] fix: removed border bottom to last row in ai table --- .../lib/components/AiReviewsTable/AiReviewsTable.module.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.module.scss b/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.module.scss index 5c0d0d044..3af5149ec 100644 --- a/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.module.scss +++ b/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.module.scss @@ -13,7 +13,7 @@ &.reviewsTable { tr:last-child { td { - border-bottom: none !important; + border-bottom: none; } } } From bc604b36b73c42a1024a7b6958a84f66cc1ad8e3 Mon Sep 17 00:00:00 2001 From: Hentry Martin Date: Tue, 2 Dec 2025 19:46:48 +0100 Subject: [PATCH 06/10] fix: ai review table --- .../src/lib/components/TableAppeals/TableAppeals.module.scss | 2 +- .../TableAppealsForSubmitter.module.scss | 2 +- .../TableAppealsResponse/TableAppealsResponse.module.scss | 2 +- .../TableCheckpointSubmissions.module.scss | 2 +- .../TableIterativeReview/TableIterativeReview.module.scss | 2 +- .../src/lib/components/TableReview/TableReview.module.scss | 2 +- .../TableReviewForSubmitter/TableReviewForSubmitter.module.scss | 2 +- .../TableSubmissionScreening.module.scss | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/apps/review/src/lib/components/TableAppeals/TableAppeals.module.scss b/src/apps/review/src/lib/components/TableAppeals/TableAppeals.module.scss index 041eec298..c65ae7124 100644 --- a/src/apps/review/src/lib/components/TableAppeals/TableAppeals.module.scss +++ b/src/apps/review/src/lib/components/TableAppeals/TableAppeals.module.scss @@ -71,7 +71,7 @@ :global(.reviews-table) { margin-left: auto; - width: 75%; + width: 60%; margin-bottom: -9px; @include ltelg { diff --git a/src/apps/review/src/lib/components/TableAppealsForSubmitter/TableAppealsForSubmitter.module.scss b/src/apps/review/src/lib/components/TableAppealsForSubmitter/TableAppealsForSubmitter.module.scss index e846176f9..ec4def358 100644 --- a/src/apps/review/src/lib/components/TableAppealsForSubmitter/TableAppealsForSubmitter.module.scss +++ b/src/apps/review/src/lib/components/TableAppealsForSubmitter/TableAppealsForSubmitter.module.scss @@ -28,7 +28,7 @@ :global(.reviews-table) { margin-left: auto; - width: 75%; + width: 60%; margin-bottom: -9px; @include ltelg { diff --git a/src/apps/review/src/lib/components/TableAppealsResponse/TableAppealsResponse.module.scss b/src/apps/review/src/lib/components/TableAppealsResponse/TableAppealsResponse.module.scss index 0d3775b67..7e1820a16 100644 --- a/src/apps/review/src/lib/components/TableAppealsResponse/TableAppealsResponse.module.scss +++ b/src/apps/review/src/lib/components/TableAppealsResponse/TableAppealsResponse.module.scss @@ -100,7 +100,7 @@ :global(.reviews-table) { margin-left: auto; - width: 75%; + width: 60%; margin-bottom: -9px; @include ltelg { diff --git a/src/apps/review/src/lib/components/TableCheckpointSubmissions/TableCheckpointSubmissions.module.scss b/src/apps/review/src/lib/components/TableCheckpointSubmissions/TableCheckpointSubmissions.module.scss index b5d65a003..116e28b27 100644 --- a/src/apps/review/src/lib/components/TableCheckpointSubmissions/TableCheckpointSubmissions.module.scss +++ b/src/apps/review/src/lib/components/TableCheckpointSubmissions/TableCheckpointSubmissions.module.scss @@ -195,7 +195,7 @@ :global(.reviews-table) { margin-left: auto; - width: 75%; + width: 60%; margin-bottom: -9px; @include ltelg { diff --git a/src/apps/review/src/lib/components/TableIterativeReview/TableIterativeReview.module.scss b/src/apps/review/src/lib/components/TableIterativeReview/TableIterativeReview.module.scss index 284f476fb..f3f9b4369 100644 --- a/src/apps/review/src/lib/components/TableIterativeReview/TableIterativeReview.module.scss +++ b/src/apps/review/src/lib/components/TableIterativeReview/TableIterativeReview.module.scss @@ -251,7 +251,7 @@ :global(.reviews-table) { margin-left: auto; - width: 75%; + width: 60%; margin-bottom: -9px; @include ltelg { diff --git a/src/apps/review/src/lib/components/TableReview/TableReview.module.scss b/src/apps/review/src/lib/components/TableReview/TableReview.module.scss index ba353e07b..0ee0789ab 100644 --- a/src/apps/review/src/lib/components/TableReview/TableReview.module.scss +++ b/src/apps/review/src/lib/components/TableReview/TableReview.module.scss @@ -220,7 +220,7 @@ :global(.reviews-table) { margin-left: auto; - width: 75%; + width: 60%; margin-bottom: -9px; @include ltelg { diff --git a/src/apps/review/src/lib/components/TableReviewForSubmitter/TableReviewForSubmitter.module.scss b/src/apps/review/src/lib/components/TableReviewForSubmitter/TableReviewForSubmitter.module.scss index 93931865b..e827f96c1 100644 --- a/src/apps/review/src/lib/components/TableReviewForSubmitter/TableReviewForSubmitter.module.scss +++ b/src/apps/review/src/lib/components/TableReviewForSubmitter/TableReviewForSubmitter.module.scss @@ -96,7 +96,7 @@ :global(.reviews-table) { margin-left: auto; - width: 75%; + width: 60%; margin-bottom: -9px; @include ltelg { diff --git a/src/apps/review/src/lib/components/TableSubmissionScreening/TableSubmissionScreening.module.scss b/src/apps/review/src/lib/components/TableSubmissionScreening/TableSubmissionScreening.module.scss index 0a357733c..e918edb86 100644 --- a/src/apps/review/src/lib/components/TableSubmissionScreening/TableSubmissionScreening.module.scss +++ b/src/apps/review/src/lib/components/TableSubmissionScreening/TableSubmissionScreening.module.scss @@ -205,7 +205,7 @@ :global(.reviews-table) { margin-left: auto; - width: 75%; + width: 60%; margin-bottom: -9px; @include ltelg { From e74a2c71d339b35087496905fd8ed195e6cde304 Mon Sep 17 00:00:00 2001 From: Hentry Martin Date: Wed, 3 Dec 2025 13:05:23 +0100 Subject: [PATCH 07/10] fix: mutation keys --- .../ScorecardQuestion/AiFeedback/AiFeedback.tsx | 7 +++---- .../AiFeedbackComments/AiFeedbackComment.tsx | 10 ++++------ 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/apps/review/src/lib/components/Scorecard/ScorecardViewer/ScorecardQuestion/AiFeedback/AiFeedback.tsx b/src/apps/review/src/lib/components/Scorecard/ScorecardViewer/ScorecardQuestion/AiFeedback/AiFeedback.tsx index 129738904..a9bf48993 100644 --- a/src/apps/review/src/lib/components/Scorecard/ScorecardViewer/ScorecardQuestion/AiFeedback/AiFeedback.tsx +++ b/src/apps/review/src/lib/components/Scorecard/ScorecardViewer/ScorecardQuestion/AiFeedback/AiFeedback.tsx @@ -40,11 +40,10 @@ const AiFeedback: FC = props => { await createFeedbackComment(workflowId as string, workflowRun?.id as string, feedback?.id, { content, }) - await mutate(` - ${EnvironmentConfig.API.V6}/workflows/${workflowId}/runs/${workflowRun?.id}/items?[${workflowRun?.status}] - `) + // eslint-disable-next-line max-len + await mutate(`${EnvironmentConfig.API.V6}/workflows/${workflowId}/runs/${workflowRun?.id}/items?[${workflowRun?.status}]`) setShowReply(false) - }, [workflowId, workflowRun?.id, feedback?.id]) + }, [workflowId, workflowRun?.id, workflowRun?.status, feedback?.id]) if (!aiFeedbackItems?.length || !feedback) { return <> diff --git a/src/apps/review/src/lib/components/Scorecard/ScorecardViewer/ScorecardQuestion/AiFeedbackComments/AiFeedbackComment.tsx b/src/apps/review/src/lib/components/Scorecard/ScorecardViewer/ScorecardQuestion/AiFeedbackComments/AiFeedbackComment.tsx index 402f8d51f..438f6512d 100644 --- a/src/apps/review/src/lib/components/Scorecard/ScorecardViewer/ScorecardQuestion/AiFeedbackComments/AiFeedbackComment.tsx +++ b/src/apps/review/src/lib/components/Scorecard/ScorecardViewer/ScorecardQuestion/AiFeedbackComments/AiFeedbackComment.tsx @@ -36,9 +36,8 @@ export const AiFeedbackComment: FC = props => { content, parentId: comment.id, }) - await mutate(` - ${EnvironmentConfig.API.V6}/workflows/${workflowId}/runs/${workflowRun?.id}/items?[${workflowRun?.status}] - `) + // eslint-disable-next-line max-len + await mutate(`${EnvironmentConfig.API.V6}/workflows/${workflowId}/runs/${workflowRun?.id}/items?[${workflowRun?.status}]`) setShowReply(false) }, [workflowId, workflowRun?.id, props.feedback?.id]) @@ -46,9 +45,8 @@ export const AiFeedbackComment: FC = props => { await updateRunItemComment(workflowId as string, workflowRun?.id as string, props.feedback?.id, comment.id, { content, }) - await mutate(` - ${EnvironmentConfig.API.V6}/workflows/${workflowId}/runs/${workflowRun?.id}/items?[${workflowRun?.status}] - `) + // eslint-disable-next-line max-len + await mutate(`${EnvironmentConfig.API.V6}/workflows/${workflowId}/runs/${workflowRun?.id}/items?[${workflowRun?.status}]`) setEditMode(false) }, [workflowId, workflowRun?.id, props.feedback?.id]) From 242084dfea99e30c3d292953698006d9ddf7dd3e Mon Sep 17 00:00:00 2001 From: Hentry Martin Date: Wed, 3 Dec 2025 13:15:23 +0100 Subject: [PATCH 08/10] fix: review comment --- .../lib/components/AiReviewsTable/AiReviewsTable.module.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.module.scss b/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.module.scss index e587bc4f4..9f7264a6a 100644 --- a/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.module.scss +++ b/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.module.scss @@ -25,7 +25,7 @@ } .scoreCol { - text-align: right; + text-align: left; } } From 51d21888fa37944d313ec28ab2195be29f03b36b Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Wed, 3 Dec 2025 19:02:18 +0200 Subject: [PATCH 09/10] PS-469 - update wallet admin ui to show the onhold admin dropdown --- .../wallet-admin/src/home/tabs/payments/PaymentsTab.tsx | 7 +------ .../src/lib/components/payment-edit/PaymentEdit.tsx | 4 +++- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/apps/wallet-admin/src/home/tabs/payments/PaymentsTab.tsx b/src/apps/wallet-admin/src/home/tabs/payments/PaymentsTab.tsx index 1158713fa..3c1de950b 100644 --- a/src/apps/wallet-admin/src/home/tabs/payments/PaymentsTab.tsx +++ b/src/apps/wallet-admin/src/home/tabs/payments/PaymentsTab.tsx @@ -217,7 +217,7 @@ const ListView: FC = (props: ListViewProps) => { if (updateObj.paymentStatus !== undefined) { if (updateObj.paymentStatus === 'Owed') { paymentStatus = 'OWED' - } else if (updateObj.paymentStatus === 'On Hold') { + } else if (updateObj.paymentStatus === 'On Hold (Admin)') { paymentStatus = 'ON_HOLD_ADMIN' } else if (updateObj.paymentStatus === 'Cancel') { paymentStatus = 'CANCELLED' @@ -268,11 +268,6 @@ const ListView: FC = (props: ListViewProps) => { const onPaymentEditCallback = useCallback((payment: Winning) => { let status = payment.status - if (status === 'On Hold (Admin)') { - status = 'On Hold' - } else if (['On Hold (Member)', 'On Hold (Tax Form)', 'On Hold (Payment Provider)'].indexOf(status) !== -1) { - status = 'Owed' - } setConfirmFlow({ action: 'Save', diff --git a/src/apps/wallet-admin/src/lib/components/payment-edit/PaymentEdit.tsx b/src/apps/wallet-admin/src/lib/components/payment-edit/PaymentEdit.tsx index d06ebe2f6..234edc22b 100644 --- a/src/apps/wallet-admin/src/lib/components/payment-edit/PaymentEdit.tsx +++ b/src/apps/wallet-admin/src/lib/components/payment-edit/PaymentEdit.tsx @@ -179,9 +179,11 @@ const PaymentEdit: React.FC = (props: PaymentEditFormProps const options = useCallback(() => { if (props.payment.status.toUpperCase() !== 'PAID') { + const isMemberHold = ['On Hold (Member)', 'On Hold (Tax Form)', 'On Hold (Payment Provider)'].indexOf(props.payment.status) !== -1; return [ + ...(isMemberHold ? [{label: props.payment.status, value: props.payment.status}] : []), { label: 'Owed', value: 'Owed' }, - { label: 'On Hold', value: 'On Hold' }, + { label: 'On Hold (Admin)', value: 'On Hold (Admin)' }, { label: 'Cancel', value: 'Cancel' }, ] } From 674c4ed121e4427b6f96a1f0a6d56228bac667fc Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Wed, 3 Dec 2025 19:15:51 +0200 Subject: [PATCH 10/10] lint --- .../wallet-admin/src/home/tabs/payments/PaymentsTab.tsx | 7 +------ .../src/lib/components/payment-edit/PaymentEdit.tsx | 9 +++++++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/apps/wallet-admin/src/home/tabs/payments/PaymentsTab.tsx b/src/apps/wallet-admin/src/home/tabs/payments/PaymentsTab.tsx index 3c1de950b..c5cd9921c 100644 --- a/src/apps/wallet-admin/src/home/tabs/payments/PaymentsTab.tsx +++ b/src/apps/wallet-admin/src/home/tabs/payments/PaymentsTab.tsx @@ -267,8 +267,6 @@ const ListView: FC = (props: ListViewProps) => { }, [fetchWinnings]) const onPaymentEditCallback = useCallback((payment: Winning) => { - let status = payment.status - setConfirmFlow({ action: 'Save', callback: async () => { @@ -276,10 +274,7 @@ const ListView: FC = (props: ListViewProps) => { }, content: ( diff --git a/src/apps/wallet-admin/src/lib/components/payment-edit/PaymentEdit.tsx b/src/apps/wallet-admin/src/lib/components/payment-edit/PaymentEdit.tsx index 234edc22b..d67cc17a3 100644 --- a/src/apps/wallet-admin/src/lib/components/payment-edit/PaymentEdit.tsx +++ b/src/apps/wallet-admin/src/lib/components/payment-edit/PaymentEdit.tsx @@ -179,9 +179,14 @@ const PaymentEdit: React.FC = (props: PaymentEditFormProps const options = useCallback(() => { if (props.payment.status.toUpperCase() !== 'PAID') { - const isMemberHold = ['On Hold (Member)', 'On Hold (Tax Form)', 'On Hold (Payment Provider)'].indexOf(props.payment.status) !== -1; + const isMemberHold = [ + 'On Hold (Member)', + 'On Hold (Tax Form)', + 'On Hold (Payment Provider)', + ].includes(props.payment.status) + return [ - ...(isMemberHold ? [{label: props.payment.status, value: props.payment.status}] : []), + ...(isMemberHold ? [{ label: props.payment.status, value: props.payment.status }] : []), { label: 'Owed', value: 'Owed' }, { label: 'On Hold (Admin)', value: 'On Hold (Admin)' }, { label: 'Cancel', value: 'Cancel' },