fix: support nested review detail loader payload

This commit is contained in:
wren
2026-05-06 17:35:11 +08:00
parent 796ce90e32
commit 68139631d9
+29 -5
View File
@@ -284,6 +284,14 @@ interface ReviewsTestLoaderError {
type ReviewsTestLoaderData = ReviewsTestLoaderSuccess | ReviewsTestLoaderError;
interface NestedReviewPayload {
data?: ReviewPoint[];
stats?: Partial<Statistics>;
reviewInfo?: Partial<ReviewInfo>;
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;