fix: exclude nonpositive prices from comparisons
This commit is contained in:
@@ -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.
|
- `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.
|
- 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.
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ export function itemStats(tenders) {
|
|||||||
for (const t of tenders) {
|
for (const t of tenders) {
|
||||||
for (const it of t.items || []) {
|
for (const it of t.items || []) {
|
||||||
const bf = parseTL(it.birimFiyat);
|
const bf = parseTL(it.birimFiyat);
|
||||||
if (bf == null) continue;
|
if (bf == null || bf <= 0) continue;
|
||||||
itemCount++;
|
itemCount++;
|
||||||
const quantity=quantityParts(it.miktar ?? it.quantity);
|
const quantity=quantityParts(it.miktar ?? it.quantity);
|
||||||
const rawUnit=quantity.birim || it.birim || '';
|
const rawUnit=quantity.birim || it.birim || '';
|
||||||
|
|||||||
@@ -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:'2 kutu',birimFiyat:'10 TL'},
|
||||||
{ad:'Test kiti',miktar:'3 adet',birimFiyat:'12 TL'},
|
{ad:'Test kiti',miktar:'3 adet',birimFiyat:'12 TL'},
|
||||||
{ad:'Test kiti',miktar:'bilinmiyor',birimFiyat:'99 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.equal(result.itemCount,2); assert.equal(result.uniqueItems,2);
|
||||||
assert.deepEqual(result.items.map(x=>x.birim).sort(),['adet','kutu']);
|
assert.deepEqual(result.items.map(x=>x.birim).sort(),['adet','kutu']);
|
||||||
|
|||||||
Reference in New Issue
Block a user