fix: cut reviewsTest over to new review detail apis

This commit is contained in:
wren
2026-05-06 09:19:03 +08:00
parent 9e0909ab35
commit 37e1611ed4
2 changed files with 52 additions and 214 deletions
+4 -28
View File
@@ -29,8 +29,7 @@ import { type MetaFunction, type LoaderFunctionArgs, type ActionFunctionArgs } f
import { useState, useEffect, useCallback, useRef } from "react";
import { useNavigate, useLoaderData, useFetcher, useRevalidator } from "@remix-run/react";
import reviewsStyles from "~/styles/reviews.css?url";
import { getReviewPoints, getReviewPoints_fromApi, getUnifiedEvaluationResults, updateReviewResult, confirmReviewResults } from "~/api/evaluation_points/reviews";
import { postgrestGet } from "~/api/postgrest-client";
import { getReviewPoints_fromApi, getUnifiedEvaluationResults, updateReviewResult, confirmReviewResults } from "~/api/evaluation_points/reviews";
import { toastService } from "~/components/ui/Toast";
import { Modal } from "~/components/ui/Modal";
import { UploadArea, type UploadAreaRef } from "~/components/ui/UploadArea";
@@ -189,27 +188,6 @@ export async function loader({ request }: LoaderFunctionArgs) {
return Response.json({ result: false, message: '文件ID不能为空' });
}
// 补充 pointCode 到 reviewPoints(直接查 DB,不受 Vite tree-shake 影响)
async function patchPointCodes(points: any[], jwt: string) {
try {
const pointIds = points.map((p: any) => p.pointId).filter(Boolean);
if (pointIds.length === 0) return;
const resp = await postgrestGet<any>('/api/postgrest/proxy/evaluation_points', {
select: 'id,code',
filter: { id: `in.(${[...new Set(pointIds)].join(',')})` },
token: jwt,
});
// resp.data 可能是 {code:200, data:[...]} 或直接 [...]
const raw = resp.data;
const epList = Array.isArray(raw) ? raw : (raw?.data && Array.isArray(raw.data) ? raw.data : []);
const codeMap: Record<string, string> = {};
epList.forEach((ep: any) => { if (ep.code) codeMap[String(ep.id)] = ep.code; });
points.forEach((p: any) => { p.pointCode = codeMap[String(p.pointId)] || ''; });
} catch (e) {
console.error('[Reviews Loader] patchPointCodes error:', e);
}
}
// 获取用户会话信息
const { getUserSession } = await import("~/api/login/auth.server");
const { userInfo, frontendJWT } = await getUserSession(request);
@@ -218,9 +196,9 @@ export async function loader({ request }: LoaderFunctionArgs) {
// 先尝试新的统一评查接口
const unifiedData = await getUnifiedEvaluationResults(id, request);
// 如果统一接口返回错误或flow_typelegacy使用原有API
// 如果统一接口返回错误或 flow_typelegacy直接走新后端聚合接口
if ('error' in unifiedData || !unifiedData.flow_type) {
console.log("[Reviews Loader] 统一接口不可用,使用旧接口...");
console.log("[Reviews Loader] 统一接口不可用,直接尝试 review-points 聚合接口...");
const reviewData = await getReviewPoints_fromApi(id, request);
if ('error' in reviewData && reviewData.error) {
@@ -229,7 +207,6 @@ export async function loader({ request }: LoaderFunctionArgs) {
}
if ('document' in reviewData && 'data' in reviewData && 'reviewInfo' in reviewData && 'stats' in reviewData) {
await patchPointCodes(reviewData.data as any[], frontendJWT);
return Response.json({
previousRoute: previousRoute,
document: reviewData.document,
@@ -277,7 +254,6 @@ export async function loader({ request }: LoaderFunctionArgs) {
postAction: '',
}));
const allReviewPoints = [...existingPoints, ...notApplicablePoints];
await patchPointCodes(allReviewPoints, frontendJWT);
return Response.json({
previousRoute: previousRoute,
@@ -300,7 +276,7 @@ export async function loader({ request }: LoaderFunctionArgs) {
scoredSummary: unifiedData.summary
});
} else {
// legacy 流程但统一接口可用,也走原有逻辑
// legacy 流程但统一接口可用,也统一走 review-points 聚合接口
const reviewData = await getReviewPoints_fromApi(id, request);
if ('error' in reviewData && reviewData.error) {
return Response.json({ result: false, message: reviewData.error });