Share stored document retry flow across tender detail and vault
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import { readableDocument, readStoredDocument, retryDocumentExtraction } from '../services/storedDocument';
|
||||
import { documentProcessingLabel } from '../services/documentProcessing';
|
||||
import React, { useState, useEffect, useRef, useCallback } from 'react';
|
||||
import { useApp } from '../context/AppContext';
|
||||
@@ -88,44 +89,13 @@ export const TenderDocuments = ({ tender }) => {
|
||||
try { await deleteDocument(id); belgeleriYukle(); } catch (err) { setError(err.message); }
|
||||
};
|
||||
|
||||
// PDF/metin tarayıcıda (pdfjs) okunur; docx/xlsx/zip için tarayıcıda çözücü
|
||||
// yok, sunucudaki çıkarıcıya sorulur. .doc ve .rar'ın karşılığı yok.
|
||||
const tarayicidaOkunur = (ad) => /\.(pdf|txt|md)$/i.test(String(ad || ''));
|
||||
const sunucudaOkunur = (ad) => /\.(docx|xlsx|zip)$/i.test(String(ad || ''));
|
||||
const okunabilirMi = (ad) => tarayicidaOkunur(ad) || sunucudaOkunur(ad);
|
||||
|
||||
const belgeMetni = async (b) => {
|
||||
if (sunucudaOkunur(b.ad)) {
|
||||
const r = await fetch(`/api/me/documents/text?id=${encodeURIComponent(b.id)}`, {
|
||||
headers: { Authorization: `Bearer ${getToken()}` },
|
||||
});
|
||||
const d = await r.json().catch(() => ({}));
|
||||
if (!d.success) throw new Error(d.error || 'metin çıkarılamadı');
|
||||
return d.metin;
|
||||
}
|
||||
const r = await fetch(`/api/me/documents/download?id=${encodeURIComponent(b.id)}`, {
|
||||
headers: { Authorization: `Bearer ${getToken()}` },
|
||||
});
|
||||
if (!r.ok) throw new Error('belge indirilemedi');
|
||||
const blob = await r.blob();
|
||||
// extractText { text, pageCount, usedPages } döndürür — nesneyi metin sanıp
|
||||
// göndermek analizi sessizce bozuyordu.
|
||||
const { text } = await extractText(new File([blob], b.ad, { type: b.mime || 'application/pdf' }));
|
||||
return text;
|
||||
};
|
||||
const okunabilirMi = readableDocument;
|
||||
const belgeMetni = readStoredDocument;
|
||||
|
||||
const kalemleriYenidenCikar = async (b) => {
|
||||
setBusy('kalem'); setError(null); setBilgi(null);
|
||||
try {
|
||||
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 });
|
||||
const result = await retryDocumentExtraction(b);
|
||||
setBilgi({ isleme: `${b.ad}: ${result.sayi || 0} kalem çıkarıldı.` });
|
||||
} catch (e) { setError(`Kalem çıkarımı tamamlanamadı: ${e.message}. Dosya kaydı korunmuştur.`); }
|
||||
finally { await belgeleriYukle(); setBusy(null); }
|
||||
|
||||
Reference in New Issue
Block a user