fix: mark preparation checks dirty on button updates
This commit is contained in:
@@ -1236,7 +1236,13 @@ Taslak türü seçicisine erişilebilir ad eklendi. Üretim derlemesi geçti. Ö
|
||||
### 2026-09-06 — Detaylı arama alanlarını bağımsız ve birlikte uygulama
|
||||
|
||||
- Detaylı arama kurum adını veya İKN'yi ana anahtar kelime alanına kopyalıyordu. Kurum doluysa İKN ve anahtar kelime, yalnız İKN doluysa anahtar kelime sessizce yok sayılıyordu. Anahtar kelime, kurum adı ve kayıt numarası artık ayrı durumlarda tutuluyor ve AND koşuluyla birlikte uygulanıyor. Türkçe karakter normalizasyonu üç aramada da korunuyor.
|
||||
- Pencere içindeki anahtar kelime, şehir, alım tipi, sektörler, kurum tipi, açık ihale seçimi, kurum adı ve İKN taslak olarak düzenleniyor. Kullanıcı İhaleleri Ara demeden kapatırsa etkin liste değişmiyor; yeniden açıldığında sunucuda uygulanmış filtreler yükleniyor. Temizle önce yalnız formu temizliyor, İhaleleri Ara ile bütün form ölçütleri listeye uygulanıyor.
|
||||
- Pencere içindeki anahtar kelime, şehir, alım tipi, sektörler, kurum tipi, açık ihale seçimi, kurum adı ve İKN taslak olarak düzenleniyor. Kullanıcı İhaleleri Ara demeden kapatırsa etkin liste değişmiyor; yeniden açıldığında uygulama belleğindeki etkin filtreler yükleniyor. Temizle önce yalnız formu temizliyor, İhaleleri Ara ile bütün form ölçütleri listeye uygulanıyor.
|
||||
- Kurum adı ve İKN etkin olduğunda liste üstünde ayrı görünür ölçütler ve ayrı kaldırma düğmeleri var. Ana başlıktaki anahtar kelime temizleme düğmesine erişilebilir ad eklendi. Sol menüdeki Filtreleri Sıfırla düğmesi ayrıntılı kurum/İKN alanlarını da kapsıyor. Kaydedilmiş filtre uygulanınca eski kurum/İKN ölçütleri temizleniyor.
|
||||
- On beş tarayıcı kontrolü geçti: uygulanmamış taslağın listeyi değiştirmemesi; üç alanın tek Kayseri sonucu vermesi; çelişen kurum + doğru İKN'nin sıfır sonuç vermesi; ölçütlerin bağımsız kaldırılması; sol menü sıfırlaması; kurum tipi alanı; altı ölçütün birlikte uygulanması ve yerel Temizle akışı. Kanıt `rapor/qa-detailed-search-fields.json`. Tarayıcı konsolunda hata yoktu.
|
||||
- `matchesDetailedSearch` için kurum ve İKN'nin birlikte/bağımsız eşleşmesini doğrulayan regresyon testi eklendi. 276 test ve build başarılı. Test verisi beş sentetik ihaledir; resmi kaynak alanlarının doğruluğunu kanıtlamaz. Genel plan açık.
|
||||
|
||||
### 2026-09-06 — Ürün kontrollerini sıfırlamada kayıt uyarısı
|
||||
|
||||
- Kod incelemesinde, güncel portföy ürününü alan ve kontrolleri sıfırlayan düğmenin yalnız setChecks çağırdığı görüldü. Üst kapsayıcıdaki onChange düğme tıklamasında çalışmadığından kaydedilmiş taslak etiketi değişmeden kalabiliyordu.
|
||||
- PreparationChecks üzerinden gelen bütün kontrol güncellemeleri artık taslağı kaydedilmemiş olarak işaretliyor. Fonksiyon biçimindeki state güncellemeleri korunuyor; başarılı kayıt mevcut mekanizmayla uyarıyı kaldırıyor.
|
||||
- Build ve git diff --check başarılı. Bu küçük durum bildirimi düzeltmesi için tarayıcı kabulü ve tam test paketi yeniden çalıştırılmadı. Build büyük paket uyarısı devam ediyor. Genel plan açık.
|
||||
|
||||
@@ -499,7 +499,8 @@ export const BidPackageBuilder = ({ results, tender: selectedTender, initialFocu
|
||||
</section>
|
||||
<section ref={targetRef('checks')} tabIndex={-1} aria-label="Belge ve ürün uygunluğu kontrolleri">
|
||||
<PreparationChecks rows={lotSelection.rows} documents={documents} manualDocuments={manualDocuments}
|
||||
setManualDocuments={value => {setManualDocuments(value);setDirty(true);}} checks={checks} setChecks={setChecks} vault={{...vault,tenderIkn:tender.ikn}} refreshVault={()=>setVaultRefresh(n=>n+1)} downloadFile={(file)=>downloadDocument(file.id,file.ad).catch(e=>setHata(e.message))}/>
|
||||
setManualDocuments={value => {setManualDocuments(value);setDirty(true);}} checks={checks}
|
||||
setChecks={value => {setChecks(value);setDirty(true);}} vault={{...vault,tenderIkn:tender.ikn}} refreshVault={()=>setVaultRefresh(n=>n+1)} downloadFile={(file)=>downloadDocument(file.id,file.ad).catch(e=>setHata(e.message))}/>
|
||||
{kontrolEksikleri.length > 0 && <details className="bg-amber-50 border border-amber-300 rounded-xl p-3">
|
||||
<summary className="text-xs font-bold cursor-pointer">{kontrolEksikleri.length} belge/uygunluk kontrolü tamamlanmalı</summary>
|
||||
<ul className="text-xs list-disc pl-5 mt-2 space-y-1">{kontrolEksikleri.map((message,i)=><li key={i}>{message}</li>)}</ul>
|
||||
|
||||
Reference in New Issue
Block a user