Persist client document read failures with stale-state protection
This commit is contained in:
@@ -3,7 +3,7 @@ import React, { useState, useEffect, useRef, useCallback } from 'react';
|
||||
import { useApp } from '../context/AppContext';
|
||||
import { getToken } from '../services/auth';
|
||||
import { FileText, ExternalLink, Loader2, Sparkles, AlertTriangle, Download, Upload, Trash2, Paperclip, Route } from 'lucide-react';
|
||||
import { uploadDocument, listTenderDocuments, deleteDocument } from '../services/account';
|
||||
import { uploadDocument, listTenderDocuments, deleteDocument, reportDocumentReadError } from '../services/account';
|
||||
import { extractText } from '../services/pdfText';
|
||||
|
||||
/**
|
||||
@@ -65,7 +65,13 @@ export const TenderDocuments = ({ tender }) => {
|
||||
let kalemHata = cevap.processing?.status === 'error' ? cevap.processing.error : null;
|
||||
if (!kalem && ikn && /\.(pdf|txt|md)$/i.test(f.name)) {
|
||||
try {
|
||||
const { text } = await extractText(f);
|
||||
let text;
|
||||
try { ({text} = await extractText(f)); }
|
||||
catch (readError) {
|
||||
try { await reportDocumentReadError(cevap.id,cevap.belgeler.find(b=>b.id===cevap.id)?.isleme); }
|
||||
catch { throw new Error(`${readError.message} (hata durumu kaydedilemedi; listeyi yenileyin)`); }
|
||||
throw readError;
|
||||
}
|
||||
const { kalemCikar } = await import('../services/kalem');
|
||||
const d = await kalemCikar({ ikn, metin: text, dosya: f.name, documentId:cevap.id });
|
||||
kalem = d.sayi || null;
|
||||
@@ -111,7 +117,13 @@ export const TenderDocuments = ({ tender }) => {
|
||||
const kalemleriYenidenCikar = async (b) => {
|
||||
setBusy('kalem'); setError(null); setBilgi(null);
|
||||
try {
|
||||
const metin = await belgeMetni(b);
|
||||
let metin;
|
||||
try { metin = await belgeMetni(b); }
|
||||
catch (readError) {
|
||||
try { await reportDocumentReadError(b.id,b.isleme); }
|
||||
catch { throw new Error(`${readError.message} (hata durumu kaydedilemedi; listeyi yenileyin)`); }
|
||||
throw readError;
|
||||
}
|
||||
const { kalemCikar } = await import('../services/kalem');
|
||||
const result = await kalemCikar({ ikn, metin, dosya:b.ad, documentId:b.id });
|
||||
setBilgi({ isleme: `${b.ad}: ${result.sayi || 0} kalem çıkarıldı.` });
|
||||
|
||||
@@ -106,3 +106,6 @@ export const bildirimOkundu = (idler) => iste('/api/me/bildirimler', { method: '
|
||||
export const getTenderStates = () => iste('/api/me/tender-state').then(d => d.records || {});
|
||||
export const saveTenderState = (key, patch, snapshot, version) =>
|
||||
iste('/api/me/tender-state', {method:'PUT',body:JSON.stringify({key,patch,snapshot,version})}).then(d => d.record);
|
||||
|
||||
export const reportDocumentReadError = (id, expectedProcessing) =>
|
||||
iste('/api/me/documents/read-error', { method:'POST', body:JSON.stringify({id,expectedProcessing:expectedProcessing ?? null}) });
|
||||
|
||||
Reference in New Issue
Block a user