fix: preserve bid drafts and align tender source data

This commit is contained in:
2026-09-06 08:40:10 +03:00
parent c91631d99f
commit 456728b4bd
26 changed files with 510 additions and 81 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

@@ -0,0 +1,144 @@
- banner:
- text: İhale
- generic: ist
- textbox "İhale, kurum veya İKN no ile arayın..."
- button "ARA":
- generic: ARA
- button "ÜRÜN ARA":
- generic: ÜRÜN ARA
- button "Detaylı İhale Arama":
- button "AI Şartname Analizi":
- generic: AI Şartname Analizi
- button "Web Siteni Tara (AI)":
- generic: Web Siteni Tara (AI)
- generic: 7 gün
- button:
- button "L Laboratuvar":
- generic: L
- generic: Laboratuvar
- generic: "5"
- generic: Canlı İhale Havuzu
- generic: "5"
- generic: Yüklü İhale
- generic: "0"
- generic: Bugün Eklenen
- generic: "5"
- generic: Kalem
- generic: "0"
- generic: Sonuç Arşivi
- generic: "5"
- generic: Takibimdeki
- button "Önceki sekmeler":
- button "Sonraki sekmeler":
- button "Ana İhale Listesi":
- generic: Ana İhale Listesi
- button "Günlük Bülten":
- generic: Günlük Bülten
- button "Sonuç Sorgula":
- generic: Sonuç Sorgula
- button "İhale Takvimi":
- generic: İhale Takvimi
- button "Sözleşme Sorgula":
- generic: Sözleşme Sorgula
- button "KDV Hesapla":
- generic: KDV Hesapla
- button "Sınır Değer":
- generic: Sınır Değer
- button "Fiyat Analizi":
- generic: Fiyat Analizi
- button "Kanban Pano Sürükle Takip" [active]:
- generic: Kanban Pano
- generic: Sürükle Takip
- button "Rakip Radar Canlı Uyar":
- generic: Rakip Radar
- generic: Canlı Uyar
- button "Doküman Deposu":
- generic: Doküman Deposu
- button "Analitik Dashboard":
- generic: Analitik Dashboard
- button "Kırmızı Bayrak Şeffaflık":
- generic: Kırmızı Bayrak
- generic: Şeffaflık
- button "KİK Kurul Kararları":
- generic: KİK Kurul Kararları
- button "AB İhaleleri (TED)":
- generic: AB İhaleleri (TED)
- button "Planlar":
- generic: Planlar
- button "API & Webhooks":
- generic: API & Webhooks
- button "Mobil PWA":
- generic: Mobil PWA
- main:
- heading "Ekip Kanban Takip Panosu" [level=1]
- paragraph: Kartları kolonlar arasında sürükleyerek ihale süreçlerinizi yönetin.
- combobox:
- option "Tüm Personeller" [selected]
- button "💬 Slack/Teams'e Gönder":
- generic: 💬 Slack/Teams'e Gönder
- generic: İncelenecek
- generic: "0"
- paragraph: İhale yok
- generic: İnceleniyor
- generic: "0"
- paragraph: İhale yok
- generic: Teklif Hazırlanıyor
- generic: "5"
- generic: "#2026/1582991"
- 'generic "Teslim: 10.09.2026 10:00"': 5 gün
- button "Detayı Aç":
- heading "QA — Giresun laboratuvar" [level=4]
- text: Giresun
- text: 10.09.2026
- generic: "Atanan:"
- combobox:
- option "Atama Yap" [selected]
- generic: "#2026/1534665"
- 'generic "Teslim: 22.09.2026 11:00"': 17 gün
- button "Detayı Aç":
- heading "QA — Kayseri laboratuvar" [level=4]
- text: Kayseri
- text: 22.09.2026
- generic: "Atanan:"
- combobox:
- option "Atama Yap" [selected]
- generic: "#2026/1499061"
- 'generic "Teslim: 22.09.2026 10:30"': 17 gün
- button "Detayı Aç":
- heading "QA — Akdeniz laboratuvar" [level=4]
- text: Akdeniz
- text: 22.09.2026
- generic: "Atanan:"
- combobox:
- option "Atama Yap" [selected]
- generic: "#2026/1573235"
- 'generic "Teslim: 09.09.2026 10:00"': 4 gün
- button "Detayı Aç":
- heading "QA — Aksaray laboratuvar" [level=4]
- text: Aksaray
- text: 09.09.2026
- generic: "Atanan:"
- combobox:
- option "Atama Yap" [selected]
- generic: "#2026/1523851"
- 'generic "Teslim: 11.09.2026 10:00"': 6 gün
- button "Detayı Aç":
- heading "QA — Tepecik laboratuvar" [level=4]
- text: Tepecik
- text: 11.09.2026
- generic: "Atanan:"
- combobox:
- option "Atama Yap" [selected]
- generic: Teklif Verildi
- generic: "0"
- paragraph: İhale yok
- generic: Kazanıldı
- generic: "0"
- paragraph: İhale yok
- generic: Kaybedildi
- generic: "0"
- paragraph: İhale yok
- button
- button "Kullanım kılavuzu (? tuşu)":
- region "Notifications (F8)":
- list
+16 -3
View File
@@ -9,14 +9,27 @@ Planın tamamı henüz bitmedi. Canlı yayın yapılmadı.
- Eski belgeler tablosunda ikn indeksi kolon migration'ından önce oluşuyordu. Transaction içinde kolonlar önce ekleniyor; eski belgeyi koruyan, tekrarlanabilir migration testi geçti.
- Veri deposu hataları artık boş hesap veya başarılı yazma gibi yutulmuyor.
- İhale başına kullanıcıya ait hazırlık durumu, snapshot ve sürüm saklanıyor. Yeni API sürüm çakışmasında 409 döndürüyor. İki kullanıcı ve beş kayıt testi geçti.
- Arayüz görev/takip/atama/not işlemlerini sunucu onayıyla güncelliyor. Tarayıcıyla uçtan uca doğrulama bekliyor.
- Arayüz görev/takip/atama/not işlemlerini sunucu onayıyla güncelliyor. İzole tarayıcı testinde beş sentetik ihale görevi yenilemeden sonra Kanban’da korundu; atama/not ve yeniden giriş kabulü ayrıca bekliyor.
- ICS sabit tarih kullanmıyor. Beş tarih, yıl geçişi, artık gün, geçersiz tarih ve UTF-8 katlama testleri geçti.
- Uydurma 150 TL fiyat/sürüklenen kaşe simülatörü gerçek hazırlık formuyla değiştirildi. Boş kalem, fiyat, süre ve firma kontrolleri eklendi. Bu alanlarda görsel/işlevsel test bekliyor.
- Şehir filtresi mevcut 81 il tablosundan besleniyor.
## İkinci değişiklik paketi
- Tam ilan metnindeki 4.000 karakter sınırı kaldırıldı; saat/teslimat gibi alanlar kaynak metinden çıkarılıyor. Sentetik uzun metin testi geçti; beş resmi metinle kabul bekliyor.
- DT kayıtları kurum ve kimlik ile tekilleştiriliyor, kaynak kimlikleri korunuyor. Farklı sözleşme kısımları birleştirilmiyor. Mevcut kullanıcı referanslarının toplu dönüşümü hâlâ açık.
- Cetvel miktar/birim ayrıştırması ve para yuvarlaması ortak yardımcıya taşındı. Eksik fiyat engeli, Türkçe sayı ve 100 satırlık yazdırılabilir HTML testi geçti. Gerçek PDF sayfalama testi yerine geçmez.
- Firma, fiyatlar, süre ve teklif türü hazırlık taslağı olarak sunucuya kaydedilebiliyor. HTTP testinde kimlik doğrulama, hesap ayrımı, kalıcılık ve eski sürüme 409 yanıtı doğrulandı. Formun tarayıcıda yeniden yüklenmesi ayrıca test edilmeli.
- Sabit kurlar kaldırıldı; TCMB döviz satış kuru bülten tarihi ve kaynakla gösteriliyor. Kaynak hatasında uydurma değer üretilmiyor. Kategori tutarından birim fiyat önerisi ve kesin eşleşme garantisi kaldırıldı.
- Belge okuyucularının `metin`/`text` uyumsuzluğu giderildi. Bu, AI kaynak çelişkilerinin tamamının çözüldüğü anlamına gelmiyor; sürümlü ortak model açık.
- Ürün arama sonuçları son çalıştırılan sorguya bağlı. Sonraki/önceki sayfa aynı sorguyu kullanıyor; düzenlenmiş alanlar için önceki sonuç uyarısı gösteriliyor. Kapanan aramanın geç yanıtı yok sayılıyor ve yüklenme durumu sıfırlanıyor. Etkileşimli regresyon testi bekliyor.
- `tests/browser-qa.mjs` localhost üzerinde geçici hesap/veritabanı ve açıkça sentetik beş ilanla test ortamı sağlar. Üretim giriş mekanizmasına eklenmez.
Tarayıcı kanıtı: [Yenileme sonrası beş kart](evidence/qa-kanban-after-reload.png), [ekran metni](evidence/qa-kanban-after-reload.txt). Bu kanıt gerçek beş ihale dokümanıyla başvuru kabulü değildir.
## Doğrulama
`node --test tests/*.test.mjs`: 9/9 geçti.
`npm test`: 19/19 geçti (son yeniden çalıştırma: 6 Eylül 2026).
`npm run build`: geçti; mevcut büyük paket/dinamik import uyarıları sürüyor.
`node --check server/index.js`, `node --check server/user-store.mjs`, `git diff --check`: geçti.
@@ -34,4 +47,4 @@ Planın tamamı henüz bitmedi. Canlı yayın yapılmadı.
- D10: beş resmi doküman ve uygun test firma verisiyle gerçek hazırlık kabulü; tarihleri geçmişse güncel beş adayla ayrıca kabul.
- D11: küçük sürümlerle yayın, yedek/geri dönüş ve canlı ölçümler.
Kod testleri bütün planın tamamlandığını kanıtlamaz. Uçtan uca tarayıcı ve canlı kabul henüz yoktur.
Kod testleri bütün planın tamamlandığını kanıtlamaz. Tarayıcı kanıtı şu an yalnız sentetik görev kalıcılığı senaryosunu kapsar; kapsamlı uçtan uca ve canlı kabul henüz yoktur.