diff --git a/src/features/rapor/components/sohbet-client.tsx b/src/features/rapor/components/sohbet-client.tsx index fffe67c..74182a3 100644 --- a/src/features/rapor/components/sohbet-client.tsx +++ b/src/features/rapor/components/sohbet-client.tsx @@ -300,7 +300,9 @@ export function SohbetClient({ * İstek reddedildiyse (akış hiç başlamadı) iyimser eklenen soruyu geri al * ve giriş kutusuna koy. Akış yarıda koptuysa tahmin etme: sunucu krediyi * iade edip yarım cevabı kaydetmiş olabilir — kayıtlı geçmişi ve bakiyeyi - * sunucudan çek. + * sunucudan çek. Yalnız bağlantı koptuysa sunucu cevabı üretmeyi sürdürür + * (kredi harcanır, cevap kaydedilir; kopunca iade etmek bedava cevap kapısı + * olurdu) ve o an henüz kaydetmemiş olabilir: "iade edildi" deme. */ async function hatadanSonraToparla() { const reddedilen = kanal.redAl(); @@ -337,7 +339,7 @@ export function SohbetClient({ toast.error( cevapKaydedildi ? "Bağlantı koptu — cevabın buraya kadar üretilen kısmı kaydedildi." - : "Bağlantı koptu, cevap alınamadı. Kredin harcandıysa otomatik iade edildi.", + : "Bağlantı koptu. Cevap tamamlanırsa sohbetine kaydedilir, tamamlanamazsa kredin iade edilir — yeniden göndermeden önce sayfayı yenile.", ); } diff --git a/src/lib/ai/sohbet-akisi.ts b/src/lib/ai/sohbet-akisi.ts index b6cbb92..3e3ed00 100644 --- a/src/lib/ai/sohbet-akisi.ts +++ b/src/lib/ai/sohbet-akisi.ts @@ -7,6 +7,10 @@ * Kayıt ve kredi iadesi çağıranın işidir: cevap tamamlanınca `onTamam`, * yarıda kalınca `onYarim` çağrılır (ikisi de biriken metinle). * + * İstemci bağlantıyı koparırsa üretim SÜRER ve cevap kaydedilir (kredi + * harcanmış kalır): isteğin iptal sinyali modele bilerek bağlanmaz, yoksa + * cevabı okuyup bağlantıyı kesen kullanıcı her seferinde iade alırdı. + * * Saf modül: DB'ye ve oturuma dokunmaz, Next dışından da çalışır. */ import {