From 68139631d909303c33b80e82dba007393980b60b Mon Sep 17 00:00:00 2001 From: wren <“porlong@qq.com”> Date: Wed, 6 May 2026 17:35:11 +0800 Subject: [PATCH] fix: support nested review detail loader payload --- app/routes/reviewsTest.tsx | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/app/routes/reviewsTest.tsx b/app/routes/reviewsTest.tsx index 2dfcb08..b2d2e09 100644 --- a/app/routes/reviewsTest.tsx +++ b/app/routes/reviewsTest.tsx @@ -284,6 +284,14 @@ interface ReviewsTestLoaderError { type ReviewsTestLoaderData = ReviewsTestLoaderSuccess | ReviewsTestLoaderError; +interface NestedReviewPayload { + data?: ReviewPoint[]; + stats?: Partial; + reviewInfo?: Partial; + document?: unknown; + comparison_document?: unknown; +} + const EMPTY_STATISTICS: Statistics = { total: 0, success: 0, @@ -305,6 +313,13 @@ function isReviewsTestLoaderError(data: ReviewsTestLoaderData): data is ReviewsT return 'result' in data && data.result === false; } +function getNestedReviewPayload(value: unknown): NestedReviewPayload | null { + if (!value || typeof value !== 'object' || Array.isArray(value)) return null; + const candidate = value as NestedReviewPayload; + if (!('data' in candidate) && !('document' in candidate) && !('stats' in candidate)) return null; + return candidate; +} + export const meta: MetaFunction = () => { return [ { title: "评查详情 - 中国烟草AI合同及卷宗审核系统" }, @@ -447,11 +462,20 @@ export default function ReviewDetails() { const fetcher = useFetcher(); const isLoaderError = isReviewsTestLoaderError(loaderData); const successLoaderData = isLoaderError ? null : loaderData; - const document = successLoaderData?.document ?? null; - const reviewPoints = successLoaderData?.reviewPoints ?? []; - const statistics = successLoaderData?.statistics ?? EMPTY_STATISTICS; - const reviewInfo = successLoaderData?.reviewInfo ?? EMPTY_REVIEW_INFO; - const comparison_document = successLoaderData?.comparison_document ?? null; + const nestedReviewPayload = getNestedReviewPayload(successLoaderData?.reviewPoints); + const document = successLoaderData?.document ?? nestedReviewPayload?.document ?? null; + const reviewPoints = successLoaderData?.reviewPoints ?? nestedReviewPayload?.data ?? []; + const statistics = { + ...EMPTY_STATISTICS, + ...(nestedReviewPayload?.stats ?? null), + ...(successLoaderData?.statistics ?? null), + }; + const reviewInfo = { + ...EMPTY_REVIEW_INFO, + ...(nestedReviewPayload?.reviewInfo ?? null), + ...(successLoaderData?.reviewInfo ?? null), + }; + const comparison_document = successLoaderData?.comparison_document ?? nestedReviewPayload?.comparison_document ?? null; const detailMode = successLoaderData?.detailMode ?? 'legacy'; const currentUserInfo = successLoaderData?.userInfo ?? null; const frontendJWT = successLoaderData?.frontendJWT ?? null;