perf: sunucu waterfall'ları ve blocking analitik düzeltildi (Faz 1)
Vercel React Best Practices denetimi, sunucu tarafı: - odeme: analitik olayı after() ile yanıt sonrasına alındı; ucuz ürün doğrulaması oturum turundan öne çekildi; sonuç kartında oturum+sipariş paralel okunuyor - /api/soru POST: gövde+oturum ve 3 bağımsız sorgu Promise.all'a bağlandı - rehber: prod'da globalThis cache + özetler için frontmatter fast-path (24 dosya okuma + marked.parse her render'da tekrarlanıyordu); arama kutusuna giden payload RehberAramaKaydi'ya kırpıldı (tarih serileşmiyor) - /sonuc hattı: ProgramListeSatiri (fakulte/puan2025 client'a serileşmiyor) - katalog: universite/bolum listelerinde O(n²) filtreler tek geçişe indi - sira-gerekli + katalog-arama: effect'te setState kalktı (lint yeşil) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import "server-only";
|
||||
import { after } from "next/server";
|
||||
import { and, eq } from "drizzle-orm";
|
||||
import { appDb, schema } from "./appdb";
|
||||
import { grantCredits, URUNLER } from "./credits";
|
||||
@@ -62,15 +63,19 @@ export async function odemeyiSonuclandir(
|
||||
|
||||
// Dönüşüm kaydı. Koşullu geçişin ardında olduğu için sipariş başına tam bir
|
||||
// kez düşer (self-healing fallback tekrar çağrılsa da rowsAffected 0 döner).
|
||||
await sunucuOlayi("odeme_tamamlandi", {
|
||||
kullaniciId: order.userId,
|
||||
pathname: "/odeme/sonuc",
|
||||
ozellikler: {
|
||||
urun: order.product,
|
||||
kredi: order.credits,
|
||||
tutar: order.amountKurus / 100,
|
||||
},
|
||||
});
|
||||
// after(): yanıt gönderildikten sonra koşar — callback redirect'ini ve
|
||||
// /odeme/sonuc render'ını Rybbit'in 3 sn'lik timeout'u bloklayamaz.
|
||||
after(() =>
|
||||
sunucuOlayi("odeme_tamamlandi", {
|
||||
kullaniciId: order.userId,
|
||||
pathname: "/odeme/sonuc",
|
||||
ozellikler: {
|
||||
urun: order.product,
|
||||
kredi: order.credits,
|
||||
tutar: order.amountKurus / 100,
|
||||
},
|
||||
}),
|
||||
);
|
||||
return "paid";
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user