fix: support nested review detail loader payload
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user