diff --git a/docs/quality/uygulama-durumu.md b/docs/quality/uygulama-durumu.md index 85323c9..12f6e5b 100644 --- a/docs/quality/uygulama-durumu.md +++ b/docs/quality/uygulama-durumu.md @@ -1286,3 +1286,9 @@ Taslak türü seçicisine erişilebilir ad eklendi. Üretim derlemesi geçti. Ö - Hazırlık özetindeki “Belge durumunu yenile” düğmesi belge deposu okunurken artık `aria-busy=true` bildiriyor. Görsel disabled durumu, mevcut yükleniyor mesajı ve hata sonrası yeniden deneme davranışı korunuyor. - 279 test ve build başarılı. Bu tek nitelik için ayrı ekran okuyucu kabulü yapılmadı; genel plan açık. + +### 2026-09-06 — Analiz durumlarının hazırlığı engellemesi + +- Hazırlık ekranı yalnız `partial` analizde değil; `error`, `processing` ve `pending` durumlarında da artık hazır olamıyor. Ortak `analysisStatusBlocksPreparation` yordamı bu dört tamamlanmamış durumu tek yerde tanımlıyor. +- Kullanıcıya gösterilen uyarı artık gerçek durumu (`error`, `processing` gibi) yazıyor; eksik kaynak/OCR/kalem açıklaması korunuyor. +- Dört engelli ve üç tamamlanmış durum için regresyon testi eklendi. 280 test ve build başarılı. Gerçek AI sağlayıcılarında hata/işleniyor ekranı kabulü henüz yapılmadı; genel plan açık. diff --git a/src/components/BidPackageBuilder.jsx b/src/components/BidPackageBuilder.jsx index 2ecaa47..f2cb7d2 100644 --- a/src/components/BidPackageBuilder.jsx +++ b/src/components/BidPackageBuilder.jsx @@ -1,5 +1,5 @@ import { bidFirmFields as ALANLAR, bidFirmIssues } from '../services/bidFirmFields'; -import { preparationAnalysisSource, preparationConditionSections, conditionText } from '../services/preparationAnalysis'; +import { preparationAnalysisSource, preparationConditionSections, conditionText, analysisStatusBlocksPreparation } from '../services/preparationAnalysis'; import { preparationDeadlineProblem } from '../services/preparationDeadline'; import { bidValidityForForm, bidTypeForForm } from '../services/bidTerms'; import { createBidWorkbook, downloadBidWorkbook } from '../services/bidWorkbook'; @@ -139,7 +139,7 @@ export const BidPackageBuilder = ({ results, tender: selectedTender, initialFocu useEffect(() => {const timer=setInterval(()=>setDeadlineNow(new Date()),30000);return ()=>clearInterval(timer);},[]); const deadlineProblem = preparationDeadlineProblem(tender,deadlineNow); const kontrolEksikleri = preparationBlockers(lotSelection.rows, documents, checks, {...vault,healthPortfolio:userProfile.scrapedCapabilities?.healthPortfolio || [],deadlineDate:tenderDateKey(tender),tenderIkn:tender.ikn}); - const analizEksik = effectiveResults.sourceReview?.status === 'partial'; + const analizEksik = analysisStatusBlocksPreparation(effectiveResults.sourceReview?.status); const hazir = !deadlineProblem && eksikler.length === 0 && toplam > 0 && !kalemEksik && !turCeliskisi && !sureEksik && !kaynakKontrolGerekli && kontrolEksikleri.length === 0 && lotSelection.errors.length === 0 && !analizEksik && !sourceOptions.needsSelection; const missingActions = [ @@ -313,7 +313,7 @@ export const BidPackageBuilder = ({ results, tender: selectedTender, initialFocu Metin incelemesi: sürüm {effectiveResults.sourceReview.humanReview.revision} · {effectiveResults.sourceReview.humanReview.reviewedBy} · {effectiveResults.sourceReview.humanReview.reviewedAt}. Kullanıcı karşılaştırmasıdır; resmi onay değildir.
} {deadlineProblem &&{deadlineProblem}
} - {analizEksik &&Analiz kısmi: kaynak, OCR veya kalem bilgisi kontrol gerektiriyor. {(effectiveResults.sourceReview.issues || []).join(' ')} Tam ve doğrulanabilir kaynakla analizi tamamlayın.
} + {analizEksik &&Analiz tamamlanmadı ({effectiveResults.sourceReview?.status || 'durum bilinmiyor'}): kaynak, OCR veya kalem bilgisi kontrol gerektiriyor. {(effectiveResults.sourceReview?.issues || []).join(' ')} Tam ve doğrulanabilir kaynakla analizi tamamlayın.
} {/* Sizden beklenen bilgiler */} {eksikler.length > 0 && (