diff --git a/docs/quality/evidence/qa-browser-acceptance-runtime.json b/docs/quality/evidence/qa-browser-acceptance-runtime.json index 4e09029..17a12f6 100644 --- a/docs/quality/evidence/qa-browser-acceptance-runtime.json +++ b/docs/quality/evidence/qa-browser-acceptance-runtime.json @@ -24,6 +24,7 @@ "count": 3 } ], + "dailyBulletinHeading": true, "analyticsTargetLabel": true, "icsImported": true, "icsStorageScoped": true, diff --git a/docs/quality/uygulama-durumu.md b/docs/quality/uygulama-durumu.md index d631cf4..3381672 100644 --- a/docs/quality/uygulama-durumu.md +++ b/docs/quality/uygulama-durumu.md @@ -2206,3 +2206,9 @@ Doğrulama: 293 otomatik test ve üretim derlemesi başarılı. Gece yarısı s `npm run qa:live -- https://ihaleist.com` komutu eklendi. Probe yalnızca ana sayfa, `/api/health` ve `/api/ready` uç noktalarını GET ile kontrol ediyor; authentication, veri yazma, ödeme veya sağlayıcı çağrısı yapmıyor. Ana sayfa ve health için güvenlik başlıklarını da zorunlu tutup JSON kanıtı `qa-live-runtime.json` içine yazıyor. 6 Eylül 2026 çalıştırmasında ana sayfa ve health 200, readiness 404 döndü; üç güvenlik başlığı canlı yanıtlarda bulunmadı. Probe bu nedenle beklenen şekilde başarısız oldu. Bu sonuç yerel düzeltmelerin canlıya alınmadığını gösteren drift kanıtıdır. + +### 2026-09-06 · Günlük bülten tarih ve erişilebilirlik düzeltmesi + +Günlük bülten “bugün” hesabını tarayıcının yerel saatinden değil ortak İstanbul tarih anahtarından yapıyor. İhale başlığı artık klavye/ekran okuyucu için gerçek `button` olarak açılıyor; detay düğmesi de açık `type="button"` taşıyor. + +Browser QA, dinamik sekme yüklemesi sonrası günlük bülten başlığını doğruluyor. 293 otomatik test ve üretim derlemesi başarılı. diff --git a/src/components/tools/DailyBulletin.jsx b/src/components/tools/DailyBulletin.jsx index d2acfca..101a8c7 100644 --- a/src/components/tools/DailyBulletin.jsx +++ b/src/components/tools/DailyBulletin.jsx @@ -1,14 +1,15 @@ import React from 'react'; import { useApp } from '../../context/AppContext'; import { Newspaper, Calendar, Building2, Package, ArrowRight } from 'lucide-react'; +import { istanbulDateKey } from '../../services/tenderCalendar'; export const DailyBulletin = () => { const { tenders, setActiveTenderDetail } = useApp(); // Bugün: yayımlanma (ilan) tarihi bugün olanlar; ilan tarihi yoksa havuza az önce eklenenler. - const bugun = new Date(); - const todayStr = `${String(bugun.getDate()).padStart(2, '0')}.${String(bugun.getMonth() + 1).padStart(2, '0')}.${bugun.getFullYear()}`; - const isoBugun = `${bugun.getFullYear()}-${String(bugun.getMonth() + 1).padStart(2, '0')}-${String(bugun.getDate()).padStart(2, '0')}`; + const isoBugun = istanbulDateKey(); + const [bugunYil, bugunAy, bugunGun] = isoBugun.split('-'); + const todayStr = `${bugunGun}.${bugunAy}.${bugunYil}`; const bugunMu = (v) => !!v && (String(v).startsWith(isoBugun) || String(v).slice(0, 10) === todayStr); const todayTenders = tenders.filter(t => bugunMu(t.ilanTarihi) || (!t.ilanTarihi && ((t.eklenmeZamani || '').includes('az') || (t.eklenmeZamani || '').includes('saat'))) @@ -42,11 +43,11 @@ export const DailyBulletin = () => { #{t.ikn} -

setActiveTenderDetail(t)} - className="font-bold text-base text-slate-900 hover:text-blue-600 cursor-pointer mt-1" - > - {t.baslik} +

+

@@ -72,6 +73,7 @@ export const DailyBulletin = () => {