feat: complete targetPersona opponent attorney cross examination simulator prompts
This commit is contained in:
@@ -95,11 +95,13 @@ export const deleteChatHistory = async (req: AuthenticatedRequest, res: Response
|
||||
// yerine yazılırken görür; gerçek üretim süresi aynı kalsa da algılanan hız artar.
|
||||
export const chatMessage = async (req: AuthenticatedRequest, res: Response) => {
|
||||
const { caseId } = req.params;
|
||||
const { content, attachments, document_ids, chat_mode = 'chat', persona = 'judge' } = req.body;
|
||||
const { content, message, attachments, document_ids, chat_mode = 'chat', persona, simulator_persona } = req.body || {};
|
||||
const messageText = content || message;
|
||||
const targetPersona = simulator_persona || persona || 'judge';
|
||||
const userId = req.user?.id;
|
||||
|
||||
if (!content || !caseId) {
|
||||
return res.status(400).json({ error: 'Missing caseId or content' });
|
||||
if (!messageText || !caseId) {
|
||||
return res.status(400).json({ error: 'Missing caseId or message content' });
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -109,7 +111,7 @@ export const chatMessage = async (req: AuthenticatedRequest, res: Response) => {
|
||||
const { data: caseRow } = await supabase.from('cases').select('kind').eq('id', caseId).maybeSingle();
|
||||
const caseKind = caseRow?.kind || 'case';
|
||||
|
||||
const persistedContent = content + buildAttachmentNote(attachments);
|
||||
const persistedContent = messageText + buildAttachmentNote(attachments);
|
||||
const { error: userMsgError } = await supabase
|
||||
.from('chat_messages')
|
||||
.insert([{ case_id: caseId, user_id: userId, role: 'user', content: persistedContent, chat_mode }]);
|
||||
@@ -139,9 +141,6 @@ export const chatMessage = async (req: AuthenticatedRequest, res: Response) => {
|
||||
if (documents && documents.length > 0) {
|
||||
documentContext = '\n\nDOSYAYA AİT BELGELER:\n' +
|
||||
documents.map(d => `--- ${d.filename} ---\n${d.extracted_text}`).join('\n\n');
|
||||
// Kullanıcı sohbet ekranında dosyanın belirli belgelerini seçip vurgulamışsa
|
||||
// (bkz. frontend'deki belge seçici), buna dikkat çekiyoruz — belgeler zaten
|
||||
// yukarıda tam olarak mevcut, bu sadece hangisine öncelik vereceğini belirtiyor.
|
||||
if (Array.isArray(document_ids) && document_ids.length > 0) {
|
||||
const selected = documents.filter(d => document_ids.includes(d.id));
|
||||
if (selected.length > 0) {
|
||||
@@ -163,10 +162,10 @@ export const chatMessage = async (req: AuthenticatedRequest, res: Response) => {
|
||||
if (chat_mode === 'intern') {
|
||||
systemPrompt = `Sen bir dijital stajyersin (Canlı Arama Asistanı). Kullanıcı şu anda duruşmada veya acil bir durumda ve senden ÇOK HIZLI, KISA ve NOKTA ATIŞI bir bilgi bekliyor. Asla uzun cümleler kurma, merhaba/nasılsın deme. Yalnızca istenen tarihi, belge adını veya spesifik bilgiyi 1-2 cümleyle ver.\n${documentContext}`;
|
||||
} else if (chat_mode === 'simulator') {
|
||||
if (persona === 'opponent') {
|
||||
systemPrompt = `Sen davada karşı tarafın son derece agresif, açık arayan ve zeki avukatısın. Kullanıcının argümanlarını, iddialarını veya sunduğu belgeleri çürütmek için mantıksal hatalar arayacaksın. Aşağıdaki dosya bağlamını kullanarak kullanıcının tezini zayıflatmaya çalış, zorlayıcı çapraz sorgu soruları sor ve iddialarına itiraz et. Asla yardımcı olma, karşı tarafı zorla.\n${documentContext}`;
|
||||
if (targetPersona === 'opponent') {
|
||||
systemPrompt = `Sen bu davanın KARŞI TARAF AVUKATISIN. Amacın avukat kullanıcının tezlerindeki çelişkileri, mantık hatalarını ve delil eksikliklerini sert bir şekilde VURMAK ve YÜZÜNE VURMAKTIR. Çapraz sorgu yap, açık arayan zorlayıcı sorular sor ve onun tezini zayıflatmak için çaba sarf et. Asla kibarlık veya tavsiye yapma, tamamen karşı taraf rolünü oyna!\n${documentContext}`;
|
||||
} else { // judge
|
||||
systemPrompt = `Sen bu davanın son derece sert, tarafsız, usul ve esasa titizlikle dikkat eden acımasız hakimi rolündesin. Kullanıcının argümanlarını ve belgelerini sert bir şekilde sorgulayacaksın. Hukuki dayanaktan yoksun, soyut veya çelişkili ifadeleri anında yakala ve izahını iste. Kullanıcının argümanlarındaki açıkları bulup hukuki geçerliliğini kanıtlamasını talep et.\n${documentContext}`;
|
||||
systemPrompt = `Sen bu davanın MAHKEME HAKİMİSİN. HMK/CMK/İYUK usul kurallarına son derece bağlı, titiz ve sorgulayıcı bir duruşma hakimisin. Avukat kullanıcının her iddiasını somut delil ve kanun maddesiyle ispatlamasını iste, açıklarını yüzüne vur ve çapraz sorgula.\n${documentContext}`;
|
||||
}
|
||||
}
|
||||
const messages: ChatMsg[] = [{ role: 'system', content: systemPrompt }];
|
||||
|
||||
Reference in New Issue
Block a user