Carry OCR and missing-source warnings into analysis readiness
This commit is contained in:
@@ -120,10 +120,11 @@ export const TenderDocuments = ({ tender }) => {
|
||||
setBusy('belge'); setError(null);
|
||||
try {
|
||||
if (!okunabilirMi(b.ad)) throw new Error('Bu dosya türünden metin çıkarılamıyor (PDF, DOCX, XLSX, ZIP ve TXT destekleniyor).');
|
||||
const metin = await belgeMetni(b);
|
||||
const reading = await inspectStoredDocument(b);
|
||||
const metin = reading.text;
|
||||
if (!metin || metin.length < 100) throw new Error('Belgeden analiz için yeterli metin çıkarılamadı (taranmış PDF olabilir).');
|
||||
setIsAiSpecAnalyzerOpen(true);
|
||||
await analyzeSpecPdfWithGemini({ text: metin, fileName: b.ad, tender, mode: mod });
|
||||
await analyzeSpecPdfWithGemini({ text: metin, fileName: b.ad, extraction:{ocr:reading.ocr,pageCount:reading.pageCount,usedPages:reading.usedPages,complete:reading.complete,fileName:b.ad}, tender, mode: mod });
|
||||
} catch (e) {
|
||||
setError(e.message);
|
||||
} finally { setBusy(null); }
|
||||
@@ -188,6 +189,7 @@ export const TenderDocuments = ({ tender }) => {
|
||||
const tumEvrakiTopla = async () => {
|
||||
const parcalar = [];
|
||||
const atlanan = [];
|
||||
const extraction = [];
|
||||
|
||||
if (ekapIhalesi) {
|
||||
setIlerleme('EKAP ilan metni alınıyor…');
|
||||
@@ -198,28 +200,32 @@ export const TenderDocuments = ({ tender }) => {
|
||||
}
|
||||
} catch {
|
||||
atlanan.push('EKAP ilan metni (alınamadı)');
|
||||
extraction.push({fileName:'EKAP ilan metni',complete:false});
|
||||
}
|
||||
}
|
||||
|
||||
for (const b of belgeler) {
|
||||
if (!okunabilirMi(b.ad)) { atlanan.push(`${b.ad} (metin çıkarılamıyor)`); continue; }
|
||||
if (!okunabilirMi(b.ad)) { atlanan.push(`${b.ad} (metin çıkarılamıyor)`); extraction.push({fileName:b.ad,complete:false}); continue; }
|
||||
setIlerleme(`${b.ad} okunuyor…`);
|
||||
try {
|
||||
const t = await belgeMetni(b);
|
||||
const reading = await inspectStoredDocument(b);
|
||||
const t = reading.text;
|
||||
extraction.push({ocr:reading.ocr,pageCount:reading.pageCount,usedPages:reading.usedPages,complete:reading.complete,fileName:b.ad});
|
||||
if (t && t.length >= 200) parcalar.push(`===== BELGE: ${b.ad} =====\n${t}`);
|
||||
else atlanan.push(`${b.ad} (yeterli metin yok — taranmış olabilir)`);
|
||||
else { atlanan.push(`${b.ad} (yeterli metin yok — taranmış olabilir)`); extraction.push({fileName:b.ad,complete:false}); }
|
||||
} catch (e) {
|
||||
atlanan.push(`${b.ad} (${e.message})`);
|
||||
extraction.push({fileName:b.ad,complete:false});
|
||||
}
|
||||
}
|
||||
|
||||
return { metin: parcalar.join('\n\n'), parcaSayisi: parcalar.length, atlanan };
|
||||
return { metin: parcalar.join('\n\n'), parcaSayisi: parcalar.length, atlanan, extraction };
|
||||
};
|
||||
|
||||
const derinAnalizEt = async () => {
|
||||
setBusy('derin'); setError(null); setBilgi(null);
|
||||
try {
|
||||
const { metin, parcaSayisi, atlanan } = await tumEvrakiTopla();
|
||||
const { metin, parcaSayisi, atlanan, extraction } = await tumEvrakiTopla();
|
||||
if (!metin || metin.length < 200) {
|
||||
throw new Error('Derin analiz için yeterli metin toplanamadı. EKAP dokümanını indirip PDF olarak yükleyin.');
|
||||
}
|
||||
@@ -228,6 +234,7 @@ export const TenderDocuments = ({ tender }) => {
|
||||
setIsAiSpecAnalyzerOpen(true);
|
||||
await analyzeSpecPdfWithGemini({
|
||||
text: metin,
|
||||
extraction,
|
||||
fileName: `${ikn || 'ihale'} — ${parcaSayisi} evrak birlikte`,
|
||||
tender,
|
||||
mode: 'derin',
|
||||
|
||||
Reference in New Issue
Block a user