fix: exclude nonpositive prices from comparisons

This commit is contained in:
2026-09-06 16:37:37 +03:00
parent b406c5b638
commit 21b902702c
3 changed files with 7 additions and 1 deletions
+5
View File
@@ -1370,3 +1370,8 @@ Taslak türü seçicisine erişilebilir ad eklendi. Üretim derlemesi geçti. Ö
- `parseTL`, metindeki eksi işaretini artık koruyor. İade veya negatif düzeltme tutarları pozitif sözleşme bedeline dönüşmüyor; Türkçe binlik/ondalık ayrıştırma davranışı aynen sürüyor.
- Negatif Türkçe tutar için regresyon eklendi. 283 test ve build başarılı. Finansal kaynakların negatif tutar anlamı ayrıca resmi veri sözleşmesiyle doğrulanmalı; genel plan açık.
### 2026-09-06 — Fiyat istatistiklerinde negatif kayıt filtresi
- İşaretli para ayrıştırması korunurken, fiyat karşılaştırması artık sıfır ve negatif birim fiyatları istatistiğe katmıyor. İade/düzeltme kayıtları fiyat medyanını bozmayacak; muhasebe amaçlı diğer tutarlar işaretini koruyor.
- Negatif fiyatın dışarıda kaldığı regresyon eklendi. 283 test ve build başarılı. Gerçek pazar verisinde düzeltme kayıtlarının sınıflandırılması hâlâ doğrulanmalı; genel plan açık.
+1 -1
View File
@@ -95,7 +95,7 @@ export function itemStats(tenders) {
for (const t of tenders) {
for (const it of t.items || []) {
const bf = parseTL(it.birimFiyat);
if (bf == null) continue;
if (bf == null || bf <= 0) continue;
itemCount++;
const quantity=quantityParts(it.miktar ?? it.quantity);
const rawUnit=quantity.birim || it.birim || '';
+1
View File
@@ -18,6 +18,7 @@ test('item price analysis separates units and ignores unknown quantities',async(
{ad:'Test kiti',miktar:'2 kutu',birimFiyat:'10 TL'},
{ad:'Test kiti',miktar:'3 adet',birimFiyat:'12 TL'},
{ad:'Test kiti',miktar:'bilinmiyor',birimFiyat:'99 TL'},
{ad:'Test kiti',miktar:'2 kutu',birimFiyat:'-4 TL'},
]}]);
assert.equal(result.itemCount,2); assert.equal(result.uniqueItems,2);
assert.deepEqual(result.items.map(x=>x.birim).sort(),['adet','kutu']);