fix: support nested review detail loader payload
This commit is contained in:
@@ -284,6 +284,14 @@ interface ReviewsTestLoaderError {
|
|||||||
|
|
||||||
type ReviewsTestLoaderData = ReviewsTestLoaderSuccess | ReviewsTestLoaderError;
|
type ReviewsTestLoaderData = ReviewsTestLoaderSuccess | ReviewsTestLoaderError;
|
||||||
|
|
||||||
|
interface NestedReviewPayload {
|
||||||
|
data?: ReviewPoint[];
|
||||||
|
stats?: Partial<Statistics>;
|
||||||
|
reviewInfo?: Partial<ReviewInfo>;
|
||||||
|
document?: unknown;
|
||||||
|
comparison_document?: unknown;
|
||||||
|
}
|
||||||
|
|
||||||
const EMPTY_STATISTICS: Statistics = {
|
const EMPTY_STATISTICS: Statistics = {
|
||||||
total: 0,
|
total: 0,
|
||||||
success: 0,
|
success: 0,
|
||||||
@@ -305,6 +313,13 @@ function isReviewsTestLoaderError(data: ReviewsTestLoaderData): data is ReviewsT
|
|||||||
return 'result' in data && data.result === false;
|
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 = () => {
|
export const meta: MetaFunction = () => {
|
||||||
return [
|
return [
|
||||||
{ title: "评查详情 - 中国烟草AI合同及卷宗审核系统" },
|
{ title: "评查详情 - 中国烟草AI合同及卷宗审核系统" },
|
||||||
@@ -447,11 +462,20 @@ export default function ReviewDetails() {
|
|||||||
const fetcher = useFetcher();
|
const fetcher = useFetcher();
|
||||||
const isLoaderError = isReviewsTestLoaderError(loaderData);
|
const isLoaderError = isReviewsTestLoaderError(loaderData);
|
||||||
const successLoaderData = isLoaderError ? null : loaderData;
|
const successLoaderData = isLoaderError ? null : loaderData;
|
||||||
const document = successLoaderData?.document ?? null;
|
const nestedReviewPayload = getNestedReviewPayload(successLoaderData?.reviewPoints);
|
||||||
const reviewPoints = successLoaderData?.reviewPoints ?? [];
|
const document = successLoaderData?.document ?? nestedReviewPayload?.document ?? null;
|
||||||
const statistics = successLoaderData?.statistics ?? EMPTY_STATISTICS;
|
const reviewPoints = successLoaderData?.reviewPoints ?? nestedReviewPayload?.data ?? [];
|
||||||
const reviewInfo = successLoaderData?.reviewInfo ?? EMPTY_REVIEW_INFO;
|
const statistics = {
|
||||||
const comparison_document = successLoaderData?.comparison_document ?? null;
|
...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 detailMode = successLoaderData?.detailMode ?? 'legacy';
|
||||||
const currentUserInfo = successLoaderData?.userInfo ?? null;
|
const currentUserInfo = successLoaderData?.userInfo ?? null;
|
||||||
const frontendJWT = successLoaderData?.frontendJWT ?? null;
|
const frontendJWT = successLoaderData?.frontendJWT ?? null;
|
||||||
|
|||||||
Reference in New Issue
Block a user