From ebcaf056255efb0e6b79b9f923c10ac50e02f9f1 Mon Sep 17 00:00:00 2001 From: DocAuditAI Dev Date: Mon, 23 Mar 2026 18:13:59 +0800 Subject: [PATCH] revert: reset to 32bee87 for clean text_bbox baseline Co-Authored-By: Claude Opus 4.6 (1M context) --- .gitignore | 3 - app/api/axios-client.ts | 5 +- .../cross-checking/ReviewPointsList.tsx | 114 ++++++---------- app/components/reviews/FilePreview.tsx | 4 +- app/components/reviews/ReviewPointsList.tsx | 126 +++++++----------- .../reviews/previewComponents/PdfPreview.tsx | 14 -- app/config/api-config.ts | 20 +-- app/routes/entry-modules._index.tsx | 17 --- app/routes/entry-modules.new.tsx | 17 --- app/routes/reviews.tsx | 8 +- 10 files changed, 100 insertions(+), 228 deletions(-) diff --git a/.gitignore b/.gitignore index cb1611a..4e0782d 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,3 @@ auth_doc/ teach/ typecheck_result.txt *.DS_Store -*.swp -run.log -package-lock.json diff --git a/app/api/axios-client.ts b/app/api/axios-client.ts index 4f10b88..c917180 100644 --- a/app/api/axios-client.ts +++ b/app/api/axios-client.ts @@ -1,5 +1,4 @@ import axios, { AxiosRequestConfig, AxiosResponse, isAxiosError } from 'axios'; -import http from 'http'; import { mockData, type MockApiResponse } from './mock'; import { API_BASE_URL, DOCUMENT_URL } from '../config/api-config'; import { toastService } from '../components/ui/Toast'; @@ -42,9 +41,7 @@ const axiosInstance = axios.create({ headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' - }, - // 修复 ECONNRESET: 禁用 keep-alive 复用,避免后端关闭空闲连接后前端仍复用导致 reset - httpAgent: new http.Agent({ keepAlive: false }), + } }); // 请求白名单 - 这些接口不需要添加 Authorization 头 diff --git a/app/components/cross-checking/ReviewPointsList.tsx b/app/components/cross-checking/ReviewPointsList.tsx index 04b9280..023e842 100644 --- a/app/components/cross-checking/ReviewPointsList.tsx +++ b/app/components/cross-checking/ReviewPointsList.tsx @@ -93,32 +93,6 @@ export interface CharPosition { score: number; // OCR识别置信度 } -/** - * text_bbox -> CharPosition[] 转换 - * GraphRAG 抽取结果只有 text_bbox (段落级坐标), 没有 char_positions (字符级坐标)。 - * 将 text_bbox 转为单个 CharPosition 矩形框, 让 PdfPreview 的高亮逻辑复用。 - */ -function resolveCharPositions(data: any): CharPosition[] | undefined { - // 优先用 char_positions - if (data?.char_positions && data.char_positions.length > 0) { - return data.char_positions; - } - // fallback: text_bbox -> CharPosition[] - if (data?.text_bbox) { - const b = data.text_bbox; - if (b.x_min != null && b.y_min != null && b.x_max != null && b.y_max != null - && (b.x_max - b.x_min) > 0 && (b.y_max - b.y_min) > 0) { - return [{ - box: [[b.x_min, b.y_min], [b.x_max, b.y_min], [b.x_max, b.y_max], [b.x_min, b.y_max]], - char: '', - score: 1 - }]; - } - } - return undefined; -} - - /** * 评查点类型定义 * 用于展示单个评查结果 @@ -1538,7 +1512,7 @@ export function ReviewPointsList({ for (const item of chain) { if (item.data.page && typeof onReviewPointSelect === 'function') { hasPage = true; - onReviewPointSelect(reviewPoint.id, Number(item.data.page), resolveCharPositions(item.data), item.data.value); + onReviewPointSelect(reviewPoint.id, Number(item.data.page), item.data.char_positions, item.data.value); break; } } @@ -1552,7 +1526,7 @@ export function ReviewPointsList({ // 遍历chain找到第一个有效的page for (const item of chain) { if (item.data.page && typeof onReviewPointSelect === 'function') { - onReviewPointSelect(reviewPoint.id, Number(item.data.page), resolveCharPositions(item.data), item.data.value); + onReviewPointSelect(reviewPoint.id, Number(item.data.page), item.data.char_positions, item.data.value); break; } } @@ -1592,11 +1566,11 @@ export function ReviewPointsList({ // 假设onReviewPointSelect在作用域内可用 const reviewPointId = reviewPoint.id as string; if (reviewPointId && typeof onReviewPointSelect === 'function') { - onReviewPointSelect(reviewPointId, Number(item.data.page), resolveCharPositions(item.data), item.data.value); + onReviewPointSelect(reviewPointId, Number(item.data.page), item.data.char_positions, item.data.value); } } else if(reviewPoint.contentPage && reviewPoint.contentPage[item.field]){ - onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[item.field]), resolveCharPositions(item.data), item.data.value); + onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[item.field]), item.data.char_positions, item.data.value); } else{ toastService.error(`没有找到${item.field}对应的索引内容`); @@ -1675,11 +1649,11 @@ export function ReviewPointsList({ if (chain[0].data.page) { const reviewPointId = reviewPoint.id as string; if (reviewPointId && typeof onReviewPointSelect === 'function') { - onReviewPointSelect(reviewPointId, chain[0].data.page, resolveCharPositions(chain[0].data), chain[0].data.value); + onReviewPointSelect(reviewPointId, chain[0].data.page, chain[0].data.char_positions, chain[0].data.value); } } else if(reviewPoint.contentPage && reviewPoint.contentPage[chain[0].field]){ - onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[chain[0].field]), resolveCharPositions(chain[0].data), chain[0].data.value); + onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[chain[0].field]), chain[0].data.char_positions, chain[0].data.value); } else{ toastService.error(`没有找到${chain[0].field}对应的索引内容`); @@ -1701,11 +1675,11 @@ export function ReviewPointsList({ if (chain[1].data.page) { const reviewPointId = reviewPoint.id as string; if (reviewPointId && typeof onReviewPointSelect === 'function') { - onReviewPointSelect(reviewPointId, chain[1].data.page, resolveCharPositions(chain[1].data), chain[1].data.value); + onReviewPointSelect(reviewPointId, chain[1].data.page, chain[1].data.char_positions, chain[1].data.value); } } else if(reviewPoint.contentPage && reviewPoint.contentPage[chain[1].field]){ - onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[chain[1].field]), resolveCharPositions(chain[1].data), chain[1].data.value); + onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[chain[1].field]), chain[1].data.char_positions, chain[1].data.value); } else{ toastService.error(`没有找到${chain[1].field}对应的索引内容`); @@ -1841,9 +1815,9 @@ export function ReviewPointsList({ onClick={(e) => { e.stopPropagation(); if (mainTypeValue.page && typeof onReviewPointSelect === 'function') { - onReviewPointSelect(reviewPoint.id, Number(mainTypeValue.page), resolveCharPositions(mainTypeValue), mainTypeValue.value); + onReviewPointSelect(reviewPoint.id, Number(mainTypeValue.page), mainTypeValue.char_positions, mainTypeValue.value); }else if(reviewPoint.contentPage && reviewPoint.contentPage[fieldKey]){ - onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[fieldKey]), resolveCharPositions(mainTypeValue), mainTypeValue.value); + onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[fieldKey]), mainTypeValue.char_positions, mainTypeValue.value); }else{ toastService.error(`没有找到${fieldKey}对应的索引内容`); } @@ -1852,9 +1826,9 @@ export function ReviewPointsList({ if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); if (mainTypeValue.page && typeof onReviewPointSelect === 'function') { - onReviewPointSelect(reviewPoint.id, Number(mainTypeValue.page), resolveCharPositions(mainTypeValue), mainTypeValue.value); + onReviewPointSelect(reviewPoint.id, Number(mainTypeValue.page), mainTypeValue.char_positions, mainTypeValue.value); }else if(reviewPoint.contentPage && reviewPoint.contentPage[fieldKey]){ - onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[fieldKey]), resolveCharPositions(mainTypeValue), mainTypeValue.value); + onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[fieldKey]), mainTypeValue.char_positions, mainTypeValue.value); }else{ toastService.error(`没有找到${fieldKey}对应的索引内容`); } @@ -1922,7 +1896,6 @@ export function ReviewPointsList({ fields?: Record; ai_suggestion?: { @@ -1981,14 +1954,14 @@ export function ReviewPointsList({ - ); - })()} - { reviewPoint.pointName === '签署甲方详细信息校验' && (() => { - const firstContentKey = reviewPoint.content ? Object.keys(reviewPoint.content)[0] : undefined; - const firstContentValue = firstContentKey ? reviewPoint.content![firstContentKey]?.value : undefined; - return ( + )} + { reviewPoint.pointName === '签署甲方详细信息校验' && ( - ); - })()} + )} {/*
{reviewPoint.title}
diff --git a/app/components/reviews/FilePreview.tsx b/app/components/reviews/FilePreview.tsx index e692608..adbd7d9 100644 --- a/app/components/reviews/FilePreview.tsx +++ b/app/components/reviews/FilePreview.tsx @@ -53,7 +53,6 @@ interface FilePreviewProps { activeReviewPointResultId: string | null; targetPage?: number; // 新增目标页码参数 charPositions?: Array<{ box: number[][], char: string, score: number }>; // 字符位置信息(仅用于PDF) - textBbox?: { x_min: number; y_min: number; x_max: number; y_max: number }; // GraphRAG段落级坐标 highlightValue?: string; // 高亮文本值(用于DOCX) isStructuredView?: boolean; // 是否显示结构化视图 userInfo?: { @@ -75,7 +74,7 @@ export interface FilePreviewHandle { } // export function FilePreview({ fileContent, reviewPoints, activeReviewPointResultId, targetPage }: FilePreviewProps) { -export const FilePreview = forwardRef(function FilePreview({ fileContent, activeReviewPointResultId, targetPage, charPositions, textBbox, highlightValue, isStructuredView = false, userInfo, aiSuggestionReplace, isTemplate = false }, ref) { +export const FilePreview = forwardRef(function FilePreview({ fileContent, activeReviewPointResultId, targetPage, charPositions, highlightValue, isStructuredView = false, userInfo, aiSuggestionReplace, isTemplate = false }, ref) { // 获取文件类型 const real_path = fileContent.path || fileContent.template_contract_path || ''; const fileExtension = real_path.split('.').pop()?.toLowerCase(); @@ -237,7 +236,6 @@ export const FilePreview = forwardRef(funct filePath={real_path} targetPage={targetPage} charPositions={charPositions} - textBbox={textBbox} isStructuredView={isStructuredView} activeReviewPointResultId={activeReviewPointResultId} pageOffset={pageOffset} diff --git a/app/components/reviews/ReviewPointsList.tsx b/app/components/reviews/ReviewPointsList.tsx index 59190e9..69b5937 100644 --- a/app/components/reviews/ReviewPointsList.tsx +++ b/app/components/reviews/ReviewPointsList.tsx @@ -82,32 +82,6 @@ export interface CharPosition { score: number; // OCR识别置信度 } -/** - * text_bbox -> CharPosition[] 转换 - * GraphRAG 抽取结果只有 text_bbox (段落级坐标), 没有 char_positions (字符级坐标)。 - * 将 text_bbox 转为单个 CharPosition 矩形框, 让 PdfPreview 的高亮逻辑复用。 - */ -function resolveCharPositions(data: any): CharPosition[] | undefined { - // 优先用 char_positions - if (data?.char_positions && data.char_positions.length > 0) { - return data.char_positions; - } - // fallback: text_bbox -> CharPosition[] - if (data?.text_bbox) { - const b = data.text_bbox; - if (b.x_min != null && b.y_min != null && b.x_max != null && b.y_max != null - && (b.x_max - b.x_min) > 0 && (b.y_max - b.y_min) > 0) { - return [{ - box: [[b.x_min, b.y_min], [b.x_max, b.y_min], [b.x_max, b.y_max], [b.x_min, b.y_max]], - char: '', - score: 1 - }]; - } - } - return undefined; -} - - /** * 评查点类型定义 * 用于展示单个评查结果 @@ -1288,7 +1262,7 @@ export function ReviewPointsList({ for (const item of chain) { if (item.data.page && typeof onReviewPointSelect === 'function') { hasPage = true; - onReviewPointSelect(reviewPoint.id, Number(item.data.page), resolveCharPositions(item.data)); + onReviewPointSelect(reviewPoint.id, Number(item.data.page), item.data.char_positions); break; } } @@ -1302,7 +1276,7 @@ export function ReviewPointsList({ // 遍历chain找到第一个有效的page for (const item of chain) { if (item.data.page && typeof onReviewPointSelect === 'function') { - onReviewPointSelect(reviewPoint.id, Number(item.data.page), resolveCharPositions(item.data)); + onReviewPointSelect(reviewPoint.id, Number(item.data.page), item.data.char_positions); break; } } @@ -1338,15 +1312,15 @@ export function ReviewPointsList({ onClick={(e) => { e.stopPropagation(); if (item.data.page) { - console.log('点击了长链条评查点', resolveCharPositions(item.data), item.data); + console.log('点击了长链条评查点', item.data.char_positions, item.data); // 假设onReviewPointSelect在作用域内可用 const reviewPointId = reviewPoint.id as string; if (reviewPointId && typeof onReviewPointSelect === 'function') { - onReviewPointSelect(reviewPointId, Number(item.data.page), resolveCharPositions(item.data), item.data.value); + onReviewPointSelect(reviewPointId, Number(item.data.page), item.data.char_positions, item.data.value); } } else if(reviewPoint.contentPage && reviewPoint.contentPage[item.field]){ - onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[item.field]), resolveCharPositions(item.data), item.data.value); + onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[item.field]), item.data.char_positions, item.data.value); } else{ toastService.error(`没有找到${item.field}对应的索引内容`); @@ -1422,16 +1396,16 @@ export function ReviewPointsList({ ${res ? 'hover:bg-[rgba(0,128,0,0.1)]' : 'hover:bg-[rgba(255,255,0,0.1)]'} transition-colors flex flex-col`} onClick={(e) => { e.stopPropagation(); - console.log('点击了短链1左', resolveCharPositions(chain[0].data), chain[0].data) + console.log('点击了短链1左', chain[0].data.char_positions, chain[0].data) if (chain[0].data.page) { - // console.log('点击了短链1左', resolveCharPositions(chain[0].data), chain[0].data) + // console.log('点击了短链1左', chain[0].data.char_positions, chain[0].data) const reviewPointId = reviewPoint.id as string; if (reviewPointId && typeof onReviewPointSelect === 'function') { - onReviewPointSelect(reviewPointId, chain[0].data.page, resolveCharPositions(chain[0].data), chain[0].data.value); + onReviewPointSelect(reviewPointId, chain[0].data.page, chain[0].data.char_positions, chain[0].data.value); } } else if(reviewPoint.contentPage && reviewPoint.contentPage[chain[0].field]){ - onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[chain[0].field]), resolveCharPositions(chain[0].data),chain[0].data.value); + onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[chain[0].field]), chain[0].data.char_positions,chain[0].data.value); } else{ toastService.error(`没有找到${chain[0].field}对应的索引内容`); @@ -1451,14 +1425,14 @@ export function ReviewPointsList({ onClick={(e) => { e.stopPropagation(); if (chain[1].data.page) { - console.log('点击了短链2右', resolveCharPositions(chain[1].data), chain[1].data) + console.log('点击了短链2右', chain[1].data.char_positions, chain[1].data) const reviewPointId = reviewPoint.id as string; if (reviewPointId && typeof onReviewPointSelect === 'function') { - onReviewPointSelect(reviewPointId, chain[1].data.page, resolveCharPositions(chain[1].data), chain[1].data.value); + onReviewPointSelect(reviewPointId, chain[1].data.page, chain[1].data.char_positions, chain[1].data.value); } } else if(reviewPoint.contentPage && reviewPoint.contentPage[chain[1].field]){ - onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[chain[1].field]), resolveCharPositions(chain[1].data), chain[1].data.value); + onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[chain[1].field]), chain[1].data.char_positions, chain[1].data.value); } else{ toastService.error(`没有找到${chain[1].field}对应的索引内容`); @@ -1595,10 +1569,10 @@ export function ReviewPointsList({ e.stopPropagation(); if (mainTypeValue.page && typeof onReviewPointSelect === 'function') { console.log("点击了其他评查点", mainTypeValue) - onReviewPointSelect(reviewPoint.id, Number(mainTypeValue.page), resolveCharPositions(mainTypeValue), mainTypeValue.value); - // onReviewPointSelect(reviewPoint.id, undefined, resolveCharPositions(mainTypeValue), mainTypeValue.value); + onReviewPointSelect(reviewPoint.id, Number(mainTypeValue.page), mainTypeValue.char_positions, mainTypeValue.value); + // onReviewPointSelect(reviewPoint.id, undefined, mainTypeValue.char_positions, mainTypeValue.value); }else if(reviewPoint.contentPage && reviewPoint.contentPage[fieldKey]){ - onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[fieldKey]), resolveCharPositions(mainTypeValue), mainTypeValue.value); + onReviewPointSelect(reviewPoint.id, Number(reviewPoint.contentPage[fieldKey]), mainTypeValue.char_positions, mainTypeValue.value); }else{ toastService.error(`没有找到${fieldKey}对应的索引内容`); } @@ -1607,7 +1581,7 @@ export function ReviewPointsList({ if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); if (mainTypeValue.page && typeof onReviewPointSelect === 'function') { - onReviewPointSelect(reviewPoint.id, Number(mainTypeValue.page), resolveCharPositions(mainTypeValue), mainTypeValue.value); + onReviewPointSelect(reviewPoint.id, Number(mainTypeValue.page), mainTypeValue.char_positions, mainTypeValue.value); }else{ toastService.error(`没有找到${fieldKey}对应的索引内容`); } @@ -1675,7 +1649,6 @@ export function ReviewPointsList({ fields?: Record; @@ -1736,15 +1709,15 @@ export function ReviewPointsList({
- {/* {res ? ( */} - { value.res ? ( + {res ? ( ) : ( @@ -1805,7 +1777,7 @@ export function ReviewPointsList({
大模型判断:
- { value.res ? '通过' : '不通过'} + {res ? '通过' : '不通过'}
@@ -1902,7 +1874,6 @@ export function ReviewPointsList({ if (!isReplaceDisabled && onAiSuggestionReplace && config.fields) { // 从 config.fields[key] 中获取对应的字段信息 const fieldData = config.fields[key]; - console.log("替换原始数据", config, key) if (fieldData) { // 调用回调函数,传递搜索文本(原文)、替换文本(AI建议)和页码 onAiSuggestionReplace( @@ -2604,10 +2575,7 @@ export function ReviewPointsList({ {/*
*/}
{reviewPoint.pointName}
- { reviewPoint.pointName === '签署乙方详细信息校验' && (() => { - const firstContentKey = reviewPoint.content ? Object.keys(reviewPoint.content)[0] : undefined; - const firstContentValue = firstContentKey ? reviewPoint.content![firstContentKey]?.value : undefined; - return ( + { reviewPoint.pointName === '签署乙方详细信息校验' && ( - ); - })()} - { reviewPoint.pointName === '签署甲方详细信息校验' && (() => { - const firstContentKey = reviewPoint.content ? Object.keys(reviewPoint.content)[0] : undefined; - const firstContentValue = firstContentKey ? reviewPoint.content![firstContentKey]?.value : undefined; - return ( + )} + { reviewPoint.pointName === '签署甲方详细信息校验' && ( - ); - })()} + )}
{/*
diff --git a/app/components/reviews/previewComponents/PdfPreview.tsx b/app/components/reviews/previewComponents/PdfPreview.tsx index 9b6833e..3bfbaf2 100644 --- a/app/components/reviews/previewComponents/PdfPreview.tsx +++ b/app/components/reviews/previewComponents/PdfPreview.tsx @@ -38,7 +38,6 @@ interface PdfPreviewProps { filePath: string; // PDF 文件路径 targetPage?: number; // 目标页码 charPositions?: Array<{ box: number[][], char: string, score: number }>; // 字符位置信息(用于高亮显示) - textBbox?: { x_min: number; y_min: number; x_max: number; y_max: number }; // GraphRAG段落级坐标 isStructuredView?: boolean; // 是否结构化视图 activeReviewPointResultId?: string | null; // 激活的评查点结果ID pageOffset?: number; // 页码偏移量(用于调整 OCR 结果的页码) @@ -50,7 +49,6 @@ export function PdfPreview({ filePath, targetPage, charPositions, - textBbox, isStructuredView = false, activeReviewPointResultId, pageOffset = 0, @@ -229,18 +227,6 @@ export function PdfPreview({ // ============ 处理字符位置数据,转换为高亮矩形 ============ const processCharPositionsToHighlights = () => { - // GraphRAG fallback: charPositions 为空但有 textBbox 时,用段落级坐标画高亮 - if ((!charPositions || charPositions.length === 0) && textBbox && targetPage) { - const scale = zoomLevel / 100; - return { - x: textBbox.x_min * coordinateScale * scale, - y: textBbox.y_min * coordinateScale * scale, - width: (textBbox.x_max - textBbox.x_min) * coordinateScale * scale, - height: (textBbox.y_max - textBbox.y_min) * coordinateScale * scale, - text: '' - }; - } - if (!charPositions || charPositions.length === 0 || !targetPage) { return null; } diff --git a/app/config/api-config.ts b/app/config/api-config.ts index a6a30c2..bbb7bb3 100644 --- a/app/config/api-config.ts +++ b/app/config/api-config.ts @@ -47,11 +47,11 @@ export const portConfigs: Record> = { // 梅州 '51703': { - // baseUrl: 'http://nas.7bm.co:8073', - // documentUrl: 'http://nas.7bm.co:8073/docauditai/', - // uploadUrl: 'http://nas.7bm.co:8073/api/v2/documents', - // collaboraUrl: 'http://nas.7bm.co:9980', - // appUrl: 'http://nas.7bm.co:51703', + baseUrl: 'http://nas.7bm.co:8073', + documentUrl: 'http://nas.7bm.co:8073/docauditai/', + uploadUrl: 'http://nas.7bm.co:8073/api/v2/documents', + collaboraUrl: 'http://nas.7bm.co:9980', + appUrl: 'http://nas.7bm.co:51703', // baseUrl: 'http://172.16.0.56:8073', @@ -60,11 +60,11 @@ export const portConfigs: Record> = { // collaboraUrl: 'http://172.16.0.81:9980', // appUrl: 'http://172.16.0.34:51703', - baseUrl: 'http://nas.7bm.co:8073', - documentUrl: 'http://nas.7bm.co:8073/docauditai/', - uploadUrl: 'http://nas.7bm.co:8073/api/v2/documents', - collaboraUrl: 'http://nas.7bm.co:9980', - appUrl: 'http://nas.7bm.co:51703', + // baseUrl: 'http://10.79.97.17:8000', + // documentUrl: 'http://10.79.97.17:8000/docauditai/', + // uploadUrl: 'http://10.79.97.17:8000/api/v2/documents', + // collaboraUrl: 'http://10.79.97.17:9980', + // appUrl: 'http://10.79.97.17:51703', oauth: { redirectUri: 'http://10.79.97.17:51703/callback', diff --git a/app/routes/entry-modules._index.tsx b/app/routes/entry-modules._index.tsx index 61798ec..cb695d0 100644 --- a/app/routes/entry-modules._index.tsx +++ b/app/routes/entry-modules._index.tsx @@ -100,23 +100,6 @@ const AREA_OPTIONS = [ { value: "云浮", label: "云浮" }, { value: "揭阳", label: "揭阳" }, { value: "潮州", label: "潮州" }, - { value: "湛江", label: "湛江" }, - // { value: "广州", label: "广州" }, - // { value: "深圳", label: "深圳" }, - // { value: "珠海", label: "珠海" }, - // { value: "佛山", label: "佛山" }, - // { value: "惠州", label: "惠州" }, - // { value: "江门", label: "江门" }, - // { value: "茂名", label: "茂名" }, - // { value: "汕尾", label: "汕尾" }, - // { value: "汕头", label: "汕头" }, - // { value: "河源", label: "河源" }, - // { value: "阳江", label: "阳江" }, - // { value: "清远", label: "清远" }, - // { value: "东莞", label: "东莞" }, - // { value: "中山", label: "中山" }, - // { value: "肇庆", label: "肇庆" }, - // { value: "韶关", label: "韶关" }, { value: "省局", label: "省局" } ]; diff --git a/app/routes/entry-modules.new.tsx b/app/routes/entry-modules.new.tsx index f594ef4..e7efb0e 100644 --- a/app/routes/entry-modules.new.tsx +++ b/app/routes/entry-modules.new.tsx @@ -76,23 +76,6 @@ const AREA_OPTIONS = [ { value: "云浮", label: "云浮" }, { value: "揭阳", label: "揭阳" }, { value: "潮州", label: "潮州" }, - { value: "湛江", label: "湛江" }, - // { value: "广州", label: "广州" }, - // { value: "深圳", label: "深圳" }, - // { value: "珠海", label: "珠海" }, - // { value: "佛山", label: "佛山" }, - // { value: "惠州", label: "惠州" }, - // { value: "江门", label: "江门" }, - // { value: "茂名", label: "茂名" }, - // { value: "汕尾", label: "汕尾" }, - // { value: "汕头", label: "汕头" }, - // { value: "河源", label: "河源" }, - // { value: "阳江", label: "阳江" }, - // { value: "清远", label: "清远" }, - // { value: "东莞", label: "东莞" }, - // { value: "中山", label: "中山" }, - // { value: "肇庆", label: "肇庆" }, - // { value: "韶关", label: "韶关" }, { value: "省局", label: "省局" } ]; diff --git a/app/routes/reviews.tsx b/app/routes/reviews.tsx index a04ba7d..0e64d6f 100644 --- a/app/routes/reviews.tsx +++ b/app/routes/reviews.tsx @@ -386,7 +386,6 @@ export default function ReviewDetails() { const [targetPage, setTargetPage] = useState(undefined); const [templateTargetPage, setTemplateTargetPage] = useState(undefined); const [charPositions, setCharPositions] = useState | undefined>(undefined); - const [textBbox, setTextBbox] = useState<{ x_min: number; y_min: number; x_max: number; y_max: number } | undefined>(undefined); const [highlightValue, setHighlightValue] = useState(undefined); const [pendingUpdate, setPendingUpdate] = useState<{ reviewPointResultId: string; @@ -552,19 +551,17 @@ export default function ReviewDetails() { setActiveTab(tabKey); }; - const handleReviewPointSelect = (reviewPointId: string, page?: number, charPos?: Array<{ box: number[][], char: string, score: number }>, value?: string, bbox?: { x_min: number; y_min: number; x_max: number; y_max: number }) => { + const handleReviewPointSelect = (reviewPointId: string, page?: number, charPos?: Array<{ box: number[][], char: string, score: number }>, value?: string) => { // 如果点击的是相同的评查点,但有page参数,先重置targetPage以确保useEffect能够触发 if (reviewPointId === activeReviewPointResultId && page) { setTargetPage(undefined); setCharPositions(undefined); - setTextBbox(undefined); setHighlightValue(undefined); // 使用setTimeout确保状态更新后再设置新的targetPage、charPositions和highlightValue setTimeout(() => { setActiveReviewPointResultId(reviewPointId); setTargetPage(page); setCharPositions(charPos); - setTextBbox(bbox); setHighlightValue(value); }, 0); } else { @@ -572,7 +569,6 @@ export default function ReviewDetails() { setActiveReviewPointResultId(reviewPointId); setTargetPage(page); setCharPositions(charPos); - setTextBbox(bbox); setHighlightValue(value); } }; @@ -970,7 +966,6 @@ export default function ReviewDetails() { activeReviewPointResultId={activeReviewPointResultId} targetPage={targetPage} charPositions={charPositions} - textBbox={textBbox} highlightValue={highlightValue} userInfo={loaderData.userInfo} aiSuggestionReplace={aiSuggestionReplace} @@ -1024,7 +1019,6 @@ export default function ReviewDetails() { activeReviewPointResultId={activeReviewPointResultId} targetPage={targetPage} charPositions={charPositions} - textBbox={textBbox} />