revert: always send full document text in case chat context

Ö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 <noreply@anthropic.com>
This commit is contained in:
mstfyldz
2026-08-10 00:26:22 +03:00
co-authored by Claude Sonnet 5
parent bcc78ce304
commit ea5211e05d
+4 -18
View File
@@ -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.';
}