harden analytics target form controls

This commit is contained in:
2026-09-06 19:09:56 +03:00
parent efe69dfd6b
commit 4c8bf6d972
2 changed files with 11 additions and 3 deletions
+6
View File
@@ -2176,3 +2176,9 @@ Doğrulama: browser QA başarılı; 293 otomatik test ve üretim derlemesi başa
Son giriş zaman damgası, oturum ziyaret damgası ve belge son kullanma uyarısı anahtarları ortak `hesapAnahtari` yardımcısını kullanıyor. E-posta boşlukları/büyük harfleri normalize ediliyor ve özel karakterler kodlanıyor; hesap kapsamlı istemci kayıtları artık tutarlı anahtar üretir.
Doğrulama: 293 otomatik test ve üretim derlemesi başarılı. Gerçek iki hesaplı tarayıcı kabulü açık.
### 2026-09-06 · Analitik hedef formu güvenli gönderim ve sınırları
Analitik ciro hedefi düzenleme düğmeleri açık `type="button"` kullanıyor; hedef alanı negatif değerleri kabul etmiyor ve ondalık adımı tanımlı. Panel bir form içine alınsa bile hedef düzenleme işlemi istemeden form göndermez.
Doğrulama: 293 otomatik test ve üretim derlemesi başarılı. Gerçek tarayıcıda form kapsayıcısı ve mobil klavye kabulü ayrıca yapılmalı.
+5 -3
View File
@@ -92,7 +92,7 @@ export const AnalyticsDashboard = () => {
<span className="text-blue-200 uppercase tracking-wider flex items-center gap-1">
<Target className="w-3.5 h-3.5 text-amber-300" /> Ciro Hedefi
</span>
<button onClick={() => setEditing((e) => !e)} className="text-blue-200 hover:text-white" title="Hedefi düzenle">
<button type="button" onClick={() => setEditing((e) => !e)} className="text-blue-200 hover:text-white" title="Hedefi düzenle">
{hedef > 0 ? <span className="text-amber-300 font-black">%{hedefYuzde}</span> : <Pencil className="w-3.5 h-3.5" />}
</button>
</div>
@@ -101,11 +101,13 @@ export const AnalyticsDashboard = () => {
<input
type="number"
value={hedef || ''}
onChange={(e) => setHedef(Number(e.target.value) || 0)}
min="0"
step="0.01"
onChange={(e) => setHedef(Math.max(0, Number(e.target.value) || 0))}
placeholder="Hedef bedel (₺)"
className="w-full bg-blue-950/60 border border-blue-700 rounded-lg px-2 py-1.5 text-xs text-white placeholder:text-blue-300"
/>
<button onClick={() => setEditing(false)} className="bg-amber-400 text-blue-950 font-black text-xs px-2.5 py-1.5 rounded-lg">Kaydet</button>
<button type="button" onClick={() => setEditing(false)} className="bg-amber-400 text-blue-950 font-black text-xs px-2.5 py-1.5 rounded-lg">Kaydet</button>
</div>
) : (
<>