Persist document processing outcomes separately from upload success

This commit is contained in:
2026-09-06 09:34:52 +03:00
parent ece623d86c
commit 32ea749669
8 changed files with 72 additions and 10 deletions
+6 -3
View File
@@ -1,3 +1,4 @@
import { documentProcessingLabel } from '../services/documentProcessing';
import React, { useState, useEffect, useRef, useCallback } from 'react';
import { useApp } from '../context/AppContext';
import { getToken } from '../services/auth';
@@ -49,16 +50,17 @@ export const TenderDocuments = ({ tender }) => {
// otomatik çıkarır. PDF tarayıcıda çözüldüğü için metni biz göndeririz.
const cevap = await uploadDocument(f, 'İhale Dokümanı', ikn, {documentType:'ihale'});
let kalem = cevap?.kalem?.sayi || null;
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);
const { kalemCikar } = await import('../services/kalem');
const d = await kalemCikar({ ikn, metin: text, dosya: f.name, documentId:cevap.id });
kalem = d.sayi || null;
} catch { /* kalem çıkmazsa yükleme yine de başarılı sayılır */ }
} catch (error) { kalemHata = error.message; }
}
belgeleriYukle();
setBilgi({ yuklendi: f.name, kalem });
setBilgi({ yuklendi: f.name, kalem, kalemHata });
} catch (err) {
setError(err.kod === 'KOTA_ASILDI' ? err.message : `Yüklenemedi: ${err.message}`);
} finally { setYukleniyor(false); }
@@ -283,6 +285,7 @@ export const TenderDocuments = ({ tender }) => {
{bilgi.yuklendi && (
<>
<strong>{bilgi.yuklendi}</strong> yüklendi ve bu ihaleye bağlandı.
{bilgi.kalemHata && <span role="alert"> Kalem aktarımı tamamlanamadı: {bilgi.kalemHata}. Dosya kaydı korunmuştur.</span>}
{bilgi.kalem
? <> Teklif cetvelinden <strong>{bilgi.kalem} kalem</strong> otomatik çıkarıldı; bu ihale artık kalemleriyle listeleniyor.</>
: <> Bu dosyadan teklif cetveli kalemi çıkarılamadı.</>}
@@ -339,7 +342,7 @@ export const TenderDocuments = ({ tender }) => {
{belgeler.map((b) => (
<div key={b.id} className="flex items-center gap-2 bg-white border border-slate-200 rounded-lg px-2.5 py-2">
<FileText className="w-3.5 h-3.5 text-slate-400 shrink-0" />
<span className="text-xs text-slate-800 truncate flex-1" title={b.ad}>{b.ad}</span>
<span className="text-xs text-slate-800 truncate flex-1" title={b.ad}>{b.ad}</span><span className="block text-[10px] text-slate-500">{documentProcessingLabel(b.isleme)}</span>
<span className="text-[10px] text-slate-400 whitespace-nowrap">
{(b.boyut / 1024).toLocaleString('tr-TR', { maximumFractionDigits: 0 })} KB
</span>