From ea5211e05dff0d2b95b539a72957ba5d6f015526 Mon Sep 17 00:00:00 2001 From: mstfyldz Date: Mon, 10 Aug 2026 00:26:22 +0300 Subject: [PATCH] revert: always send full document text in case chat context MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Özet-önce yaklaşımı, kullanıcı uzun bir mesaj/belge verdiğinde sohbet ekranında soruna yol açtığı için geri alındı — chatMessage yine her zaman belgelerin tam extracted_text'ini sistem promptuna gömüyor. Co-Authored-By: Claude Sonnet 5 --- src/controllers/chat.controller.ts | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/src/controllers/chat.controller.ts b/src/controllers/chat.controller.ts index 62523b8..6d1f3cf 100644 --- a/src/controllers/chat.controller.ts +++ b/src/controllers/chat.controller.ts @@ -3,12 +3,6 @@ import { supabase } from '../lib/supabase'; import { AuthenticatedRequest } from '../middleware/auth'; import { callOllama, streamOllama, ChatMsg } from '../lib/aiClient'; -// Kullanıcı bir belgenin TAM metnine bakılmasını açıkça istediğinde (örn. "belgenin -// tamamına bak", "tam metni incele") sistem promptuna extracted_text'in tamamı -// eklenir. Aksi halde sadece analiz özeti (summary_json) gönderilir — hem promptu -// küçültüp yanıtı hızlandırır hem gereksiz token maliyetini önler. -const FULL_TEXT_TRIGGER = /tam metn|belgenin tamam|dosyanın tamam|tüm metn|tüm belge|belgeyi (baştan sona|detaylı)/i; - // İlk mesajdan kısa bir başlık üretir (Claude/ChatGPT'nin yaptığı gibi). Başarısız // olursa null döner — çağıran taraf bu durumda varsayılan başlığı korur, asıl // sohbet cevabını etkilemez. Hem dava-dosyası-siz "Yeni Sohbet" (cases.kind='chat') @@ -104,20 +98,12 @@ export const chatMessage = async (req: AuthenticatedRequest, res: Response) => { .order('created_at', { ascending: true }) .limit(10); - // Belge bağlamı: varsayılan olarak sadece dosya adları + analiz özeti gönderilir. - // Kullanıcı açıkça tam metni isterse (FULL_TEXT_TRIGGER) extracted_text'lerin - // tamamı eklenir. Bu, her mesajda tüm belgelerin tam metnini gömüp promptu - // şişirmek yerine, çoğu soruda çok daha küçük ve hızlı bir istek üretir. - const wantsFullText = FULL_TEXT_TRIGGER.test(content); + // Belge bağlamı: her zaman TAM metin gönderiliyor (özet-önce yaklaşımı, kullanıcı + // uzun bir mesaj/belge verdiğinde sohbet ekranında soruna yol açtığı için geri alındı). let documentContext = ''; if (documents && documents.length > 0) { - if (wantsFullText) { - documentContext = '\n\nDOSYAYA AİT BELGELERİN TAM METNİ:\n' + - documents.map(d => `--- ${d.filename} ---\n${d.extracted_text}`).join('\n\n'); - } else { - documentContext = '\n\nDOSYAYA AİT BELGELER: ' + documents.map(d => d.filename).join(', ') + - '\n(Aşağıda bu belgelerin analiz özeti var. Kullanıcı tam metni isterse — "belgenin tamamına bak" gibi — tam metni isteyebileceğini kendisine hatırlatabilirsin.)'; - } + documentContext = '\n\nDOSYAYA AİT BELGELER:\n' + + documents.map(d => `--- ${d.filename} ---\n${d.extracted_text}`).join('\n\n'); } else { documentContext = '\n\nBu dosyaya henüz hiçbir belge yüklenmemiştir. Genel hukuki bilgiyle cevap ver, ama bunu kullanıcıya açıkça belirt.'; }