use Istanbul dates for document alerts
This commit is contained in:
@@ -2194,3 +2194,9 @@ Doğrulama: 293 otomatik test ve üretim derlemesi başarılı. İki gerçek hes
|
|||||||
Browser QA artık Pazar → Analitik Dashboard akışını açıp ciro hedefi alanının `Ciro hedefi (TL)` erişilebilir adına sahip olduğunu doğruluyor. Böylece yeni form sınırları yalnız kaynak kodda değil, dinamik sekme yüklemesi sonrasında da kontrol ediliyor.
|
Browser QA artık Pazar → Analitik Dashboard akışını açıp ciro hedefi alanının `Ciro hedefi (TL)` erişilebilir adına sahip olduğunu doğruluyor. Böylece yeni form sınırları yalnız kaynak kodda değil, dinamik sekme yüklemesi sonrasında da kontrol ediliyor.
|
||||||
|
|
||||||
Doğrulama: browser QA başarılı; analitik erişilebilirlik kontrolü, ICS, çıktı ve 390px kontrolleri birlikte geçti.
|
Doğrulama: browser QA başarılı; analitik erişilebilirlik kontrolü, ICS, çıktı ve 390px kontrolleri birlikte geçti.
|
||||||
|
|
||||||
|
### 2026-09-06 · Belge uyarılarında İstanbul günü
|
||||||
|
|
||||||
|
Belge son kullanma uyarısı artık “bugün” anahtarını UTC tarihinden değil İstanbul tarihinden üretiyor. Yalnız tarih içeren son kullanma değerleri `+03:00` gece yarısı olarak ayrıştırılıyor; böylece Türkiye’de gün değişimi sırasında 30 gün/son kullanma uyarısı bir gün kaymıyor. Geçersiz tarih sessizce yaklaşan belge olarak sayılmıyor.
|
||||||
|
|
||||||
|
Doğrulama: 293 otomatik test ve üretim derlemesi başarılı. Gece yarısı sınırı için gerçek saat kontrollü tarayıcı kabulü ayrıca yapılmalı.
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import { getUserDataSnapshot, setUserData, getPlan, bildirimleriGetir, bildirimO
|
|||||||
import { applyTenderStates, tenderStateKey, tenderSnapshot, publicTender, tenderSourceChanges } from '../services/tenderState';
|
import { applyTenderStates, tenderStateKey, tenderSnapshot, publicTender, tenderSourceChanges } from '../services/tenderState';
|
||||||
import { getTenderStates, saveTenderState } from '../services/account';
|
import { getTenderStates, saveTenderState } from '../services/account';
|
||||||
import { SECTORS_LIST, INSTITUTION_TYPES_LIST } from '../data/constants';
|
import { SECTORS_LIST, INSTITUTION_TYPES_LIST } from '../data/constants';
|
||||||
|
import { istanbulDateKey } from '../services/tenderCalendar';
|
||||||
|
|
||||||
const AppContext = createContext();
|
const AppContext = createContext();
|
||||||
|
|
||||||
@@ -710,7 +711,7 @@ export const AppProvider = ({ children }) => {
|
|||||||
if (!veriSenkron) return;
|
if (!veriSenkron) return;
|
||||||
const session = getToken();
|
const session = getToken();
|
||||||
const uyariAnahtari = hesapAnahtari('ihaleist_belge_uyari_gunu', authUser?.email);
|
const uyariAnahtari = hesapAnahtari('ihaleist_belge_uyari_gunu', authUser?.email);
|
||||||
const bugun = new Date().toISOString().slice(0, 10);
|
const bugun = istanbulDateKey();
|
||||||
try { if (localStorage.getItem(uyariAnahtari) === bugun) return; } catch { /* yoksay */ }
|
try { if (localStorage.getItem(uyariAnahtari) === bugun) return; } catch { /* yoksay */ }
|
||||||
listDocuments().then((d) => {
|
listDocuments().then((d) => {
|
||||||
if(getToken() !== session) return;
|
if(getToken() !== session) return;
|
||||||
@@ -718,7 +719,12 @@ export const AppProvider = ({ children }) => {
|
|||||||
const dolan = [], yakin = [];
|
const dolan = [], yakin = [];
|
||||||
for (const b of d?.belgeler || []) {
|
for (const b of d?.belgeler || []) {
|
||||||
if (!b.son_kullanma) continue;
|
if (!b.son_kullanma) continue;
|
||||||
const kalan = Math.ceil((new Date(b.son_kullanma).getTime() - simdi) / 86400000);
|
const rawDate = String(b.son_kullanma).trim();
|
||||||
|
const sonKullanmaMs = /^\d{4}-\d{2}-\d{2}$/.test(rawDate)
|
||||||
|
? Date.parse(`${rawDate}T00:00:00+03:00`)
|
||||||
|
: Date.parse(rawDate);
|
||||||
|
if (!Number.isFinite(sonKullanmaMs)) continue;
|
||||||
|
const kalan = Math.ceil((sonKullanmaMs - simdi) / 86400000);
|
||||||
if (kalan < 0) dolan.push(b.ad); else if (kalan <= 30) yakin.push(`${b.ad} (${kalan} gün)`);
|
if (kalan < 0) dolan.push(b.ad); else if (kalan <= 30) yakin.push(`${b.ad} (${kalan} gün)`);
|
||||||
}
|
}
|
||||||
if (dolan.length) notify(`${dolan.length} belgenin süresi dolmuş`, dolan.slice(0, 4).join(', '));
|
if (dolan.length) notify(`${dolan.length} belgenin süresi dolmuş`, dolan.slice(0, 4).join(', '));
|
||||||
|
|||||||
Reference in New Issue
Block a user