Persist client document read failures with stale-state protection

This commit is contained in:
2026-09-06 09:36:47 +03:00
parent a109c2e548
commit ba1f93bd76
6 changed files with 52 additions and 3 deletions
+15 -3
View File
@@ -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ı.` });