feat: export validated bid sheets as real Excel workbooks

This commit is contained in:
2026-09-06 08:56:12 +03:00
parent 2dfd32aa9c
commit ca92bebb45
7 changed files with 1083 additions and 8 deletions
+10 -1
View File
@@ -89,7 +89,7 @@ Tarayıcı kanıtı: [Yenileme sonrası beş kart](evidence/qa-kanban-after-relo
## Doğrulama
`npm test`: 35/35 geçti (son yeniden çalıştırma: 6 Eylül 2026).
`npm test`: 37/37 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.
@@ -112,3 +112,12 @@ Kod testleri bütün planın tamamlandığını kanıtlamaz. Tarayıcı kanıtı
## Çıktı doğrulaması sırasındaki değişiklikler
Dosya kontrolü sürerken form/kaynak veya oturum değişirse çıktı iptal edilir. Kontrol penceresi tıklama sırasında açılır; doğrulama hatasında kapatılır. Aynı anda ikinci çıktı başlatılmaz. Taslak kaydı sürerken yapılan yeni değişiklikler, önceki kaydın yanıtı geldiğinde kaydedilmiş sayılmaz. Mevcut 35 test ve derleme geçti; bu yarış senaryolarının gecikmeli tarayıcı kabulü ayrıca bekliyor.
## Excel teklif cetveli
Hazırlık formuna gerçek XLSX çıktısı eklendi; aynı seçili satırlar ve fiyat ayrıştırıcısı kullanılır. Miktar/fiyatlar sayı hücresidir, satır tutarları yuvarlanan formüller ve önceden hesaplanmış sonuçlarla yazılır. Türkçe başlıklar, firma/İKN/kısım, tekrarlanan baskı başlıkları, filtre ve sabit başlık satırı bulunur. Götürü bedelde birim fiyat cetveli düğmeleri kapalıdır.
İki XLSX testi dosyayı üretip yeniden okuyarak 100 satır, Türkçe, 125,50 fiyat ve 25.100 toplamını; ayrıca 0,335 hassasiyet ve 1,01 yuvarlamasını doğrular. Kullanıcı metni formüle çevrilmez. PDF birim fiyat gösterimi de sekiz ondalığa kadar hassasiyeti korur. Tarayıcı indirme ve masaüstü Excel baskı görünümü kabulü bekliyor.
ExcelJS ayrı, ihtiyaç anında yüklenen pakettir. Node bağımlılığındaki UUID için uyumlu 11.1.1+ override ve mevcut nanoid yaması uygulandı; npm audit sıfır bulgu döndürdü. Bu sonuç paketlerin önceden derlenmiş tarayıcı içeriğinin bağımsız denetimi değildir. Mevcut büyük paket uyarıları sürer.