feat: implement chat history deletion functionality
All checks were successful
Deploy / deploy (push) Successful in 8m4s

Added a new DELETE endpoint to allow users to clear their chat history. This functionality ensures that while the chat messages are removed, any credits spent remain intact. Additionally, updated the ListemGovde component to reflect changes in user preferences and integrated a modal for notifying users about preference changes. Enhanced the SohbetClient component to include a button for clearing chat history, improving user experience and interface clarity.
This commit is contained in:
bilalgursen
2026-08-09 04:44:19 +03:00
parent 8870845fa1
commit 15e2c4c961
8 changed files with 591 additions and 89 deletions

View File

@@ -1,6 +1,6 @@
// Kayıtlı listenin üretildiği tercihler (rapor params) ile kullanıcının şu
// anki tercih profilini karşılaştırır. /listem'deki "tercihlerin değişti"
// uyarısı ve güncelleme CTA'sı bu farktan doğar.
// anki tercih profilini karşılaştırır. /listem başlığındaki "Tercihlerin
// değişmiş" butonu ve açtığı güncelleme modalı bu farktan doğar.
//
// İzomorfik: yalnızca tip ve etiket sabitlerine bağlı — hem client bileşeni
// hem sunucu tarafı tüketebilir.
@@ -35,20 +35,6 @@ export const FARK_ETIKET: Record<FarkAlani, string> = {
oncelikler: "önceliklerin",
};
/** Sıra/tür/seçim üçlüsünün kararlı imzası — uyarının "bu değişikliği
* gizle" kaydı bu imzaya bağlanır (tercih yine değişirse uyarı geri gelir). */
export function profilImzasi(profil: TercihProfili): string {
const s = profil.secimler;
return JSON.stringify([
Math.round(profil.sira),
profil.tur,
[...s.kategoriler].sort(),
[...s.iller].sort(),
s.universiteTipi,
[...s.oncelikler].sort(),
]);
}
// Sıra bağımsız küme kıyası: sihirbaz seçimleri tekrarsız olarak doğrulanır
// (bkz. sihirbazDogrula), aynı seçimlerin farklı sırayla kaydedilmesi
// "değişiklik" değildir.
@@ -88,13 +74,6 @@ export function tercihFarki(
return farklar;
}
/** "başarı sıralaman ve ilgi alanların" — uyarı cümlesinin ortası. */
export function farkCumlesi(farklar: FarkAlani[]): string {
const etiketler = farklar.map((f) => FARK_ETIKET[f]);
if (etiketler.length <= 1) return etiketler[0] ?? "";
return `${etiketler.slice(0, -1).join(", ")} ve ${etiketler[etiketler.length - 1]}`;
}
export type FarkSatiri = { alan: FarkAlani; etiket: string; eski: string; yeni: string };
/** Değişen her alanın eski → yeni değeri; uyarıda tek tek gösterilir. */