diff --git a/src/controllers/drafting.controller.ts b/src/controllers/drafting.controller.ts index e13a391..538a1d5 100644 --- a/src/controllers/drafting.controller.ts +++ b/src/controllers/drafting.controller.ts @@ -110,3 +110,88 @@ export const generateDraft = async (req: AuthenticatedRequest, res: Response) => res.status(500).json({ error: error.message || 'Internal Server Error' }); } }; + +const ANGARYA_SYSTEM_PROMPT = ` +Sen uzman bir Türk avukatısın. Sana verilen dosya bilgilerine göre, standart, resmî ve kısa bir dilekçe TASLAĞI oluşturacaksın. +Bu işlem "hızlı angarya" işlemi olduğu için hiçbir hukuki tartışmaya girme. +Sadece doğru mahkeme adını, esas numarasını, tarafı ve vekil adını yerleştirip netice-i talebi yaz. + +Dilekçe Türüne Göre İstenen Metin: +1. "Süre Tutum": Gerekçeli kararın tebliğine kadar istinaf/temyiz süresinin tutulduğuna dair standart kısa dilekçe. +2. "Mazeret": "Mesleki mazeretim (başka bir duruşmamla çakışması) nedeniyle bugünkü duruşmaya katılamıyorum, mazeretimin kabulüne..." içerikli standart kısa dilekçe. +3. "Vekaletname Sunma": "Ekte sunduğumuz onaylı vekaletname uyarınca dosyanıza vekil olarak kabulümüzü talep ederiz." içerikli standart kısa dilekçe. + +ÖNEMLİ: Markdown biçimlendirmesi (**, ##, -, *) ASLA kullanma. +Başlık/vurgu için sadece BÜYÜK HARF kullan. +Dilekçenin başına her zaman ilgili MAHKEME ADI ve ESAS NO ekle. +Sadece dilekçe metnini döndür, ek yorum yapma. +`; + +export const generateAngarya = async (req: AuthenticatedRequest, res: Response) => { + try { + const { case_id, type, client_role } = req.body || {}; + const userId = req.user?.id; + + if (!case_id || !type) { + return res.status(400).json({ error: 'case_id ve type zorunludur.' }); + } + + const validTypes = { + 'sure-tutum': 'Süre Tutum Dilekçesi', + 'mazeret': 'Mazeret Dilekçesi', + 'vekalet': 'Vekaletname Sunma Dilekçesi' + }; + + const petitionType = validTypes[type as keyof typeof validTypes]; + if (!petitionType) { + return res.status(400).json({ error: 'Geçersiz angarya türü.' }); + } + + const { data: caseRow, error: caseError } = await supabase + .from('cases') + .select('id, title, parties, user_id') + .eq('id', case_id) + .single(); + + if (caseError || !caseRow) { + return res.status(404).json({ error: 'Dava dosyası bulunamadı.' }); + } + if (caseRow.user_id !== userId) { + return res.status(403).json({ error: 'Bu dosyaya erişim yetkiniz yok.' }); + } + + const partiesText = Array.isArray(caseRow.parties) && caseRow.parties.length > 0 + ? caseRow.parties.map((p: any) => `${p.adi || ''} (${p.rol || ''}${p.vekil ? `, Vekil: ${p.vekil}` : ''})`).join('; ') + : 'Belirtilmemiş'; + + let userContent = `DOSYA BİLGİLERİ:\nDosya: ${caseRow.title}\nTaraflar: ${partiesText}\n`; + if (client_role) { + userContent += `Müvekkil (Bizim Tarafımız): ${client_role}\n`; + } + userContent += `\nİstenen Dilekçe: ${petitionType}\nLütfen sadece bu bilgileri kullanarak yukarıda tarif edilen standart ${petitionType} metnini oluştur.`; + + // Fast generation using a lightweight model or quick params + const { aiContent, aiModel } = await callAiModelRaw(ANGARYA_SYSTEM_PROMPT, userContent, 500); + + const { data: draftRecord, error: draftError } = await supabase + .from('drafts') + .insert([{ + user_id: userId, + case_id, + petition_type: petitionType, + content: aiContent, + template_id: null, + }]) + .select('id, created_at') + .single(); + + if (draftError) { + console.error('Save Draft Error:', draftError); + } + + res.json({ draft: aiContent, draftId: draftRecord?.id || null, model: aiModel, usedTemplate: false }); + } catch (error: any) { + console.error('Generate Angarya Error:', error); + res.status(500).json({ error: error.message || 'Internal Server Error' }); + } +}; diff --git a/src/routes/drafting.routes.ts b/src/routes/drafting.routes.ts index db74351..d30c2b5 100644 --- a/src/routes/drafting.routes.ts +++ b/src/routes/drafting.routes.ts @@ -1,9 +1,10 @@ import { Router } from 'express'; import { requireAuth } from '../middleware/auth'; -import { generateDraft } from '../controllers/drafting.controller'; +import { generateDraft, generateAngarya } from '../controllers/drafting.controller'; const router = Router(); router.post('/generate', requireAuth, generateDraft); +router.post('/generate-angarya', requireAuth, generateAngarya); export default router;