fix: distinguish units in price analysis selection
This commit is contained in:
@@ -1335,6 +1335,11 @@ Taslak türü seçicisine erişilebilir ad eklendi. Üretim derlemesi geçti. Ö
|
||||
- `parseTL`, nokta içeren değerleri eskiden her zaman binlik ayraç sayıyordu; `12.50 TL` bu nedenle 1250 olabiliyordu. Artık virgüllü Türkçe biçim, üç haneli binlik gruplar ve ondalık noktalı değerler ayrı ayrıştırılıyor.
|
||||
- `12.50`, `1.234` ve `1.234,50` için regresyonlar eklendi. Fiyat, sözleşme ve pazar istatistiklerinde tutar ölçeğinin yanlış değişmesi engellendi. 283 test ve build başarılı; genel plan açık.
|
||||
|
||||
### 2026-09-06 — Fiyat analizinde birim seçim anahtarı
|
||||
|
||||
- Ürün + birim ayrımından sonra fiyat analizi listesindeki seçim ve React anahtarı yalnız ürün adına bağlı kalıyordu. Aynı ürünün kutu ve adet kayıtları artık ayrı seçilebiliyor; seçim anahtarı ve gösterim birimi birlikte kullanılıyor.
|
||||
- Liste satırlarında birim medyanı açıkça yazıyor; seçilen birim değiştiğinde grafik ve özet aynı kayda geçiyor. 283 test ve build başarılı. Gerçek pazar ekranı tarayıcı kabulü hâlâ yapılmadı; genel plan açık.
|
||||
|
||||
### 2026-09-06 — Belge son kullanma tarihi doğrulaması
|
||||
|
||||
- Belge deposundaki son kullanma tarihi göstergesi artık yalnız geçerli ISO günlerini hesaplıyor. Bozuk veya yuvarlanabilir bir tarih sessizce gün hesabına girmiyor; kullanıcıya “Tarih doğrulanmalı” uyarısı gösteriliyor.
|
||||
|
||||
@@ -12,7 +12,7 @@ export const PriceAnalysis = () => {
|
||||
|
||||
const selected = useMemo(() => {
|
||||
if (!items.length) return null;
|
||||
const found = items.find((i) => i.ad === selectedKey);
|
||||
const found = items.find((i) => `${i.ad}||${i.birim}` === selectedKey);
|
||||
return found || items[0];
|
||||
}, [items, selectedKey]);
|
||||
|
||||
@@ -91,14 +91,14 @@ export const PriceAnalysis = () => {
|
||||
</h3>
|
||||
{items.slice(0, 60).map((it) => (
|
||||
<button
|
||||
key={it.ad}
|
||||
onClick={() => setSelectedKey(it.ad)}
|
||||
key={`${it.ad}||${it.birim}`}
|
||||
onClick={() => setSelectedKey(`${it.ad}||${it.birim}`)}
|
||||
className={`w-full text-left p-2.5 rounded-lg text-xs font-semibold transition-all ${
|
||||
selected?.ad === it.ad ? 'bg-emerald-600 text-white' : 'bg-slate-50 hover:bg-slate-100 text-slate-700 border border-slate-200'
|
||||
selectedKey === `${it.ad}||${it.birim}` ? 'bg-emerald-600 text-white' : 'bg-slate-50 hover:bg-slate-100 text-slate-700 border border-slate-200'
|
||||
}`}
|
||||
>
|
||||
<div className="truncate">📦 {it.ad}</div>
|
||||
<div className={`text-[10px] ${selected?.ad === it.ad ? 'text-emerald-100' : 'text-slate-400'}`}>{it.count} kayıt · medyan {formatTL(it.median)}</div>
|
||||
<div className={`text-[10px] ${selectedKey === `${it.ad}||${it.birim}` ? 'text-emerald-100' : 'text-slate-400'}`}>{it.count} kayıt · {it.birim} medyan {formatTL(it.median)}</div>
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user