diff --git a/backend/src/controllers/token.controller.js b/backend/src/controllers/token.controller.js index 3bfe05d..1a0d0d2 100644 --- a/backend/src/controllers/token.controller.js +++ b/backend/src/controllers/token.controller.js @@ -65,13 +65,14 @@ exports.getTokenById = async (req, res, next) => { // Create token (without sending mail) exports.createToken = async (req, res, next) => { try { - const { company_id, target_email, employee_name, template_type } = req.body; + const { company_id, target_email, employee_name, template_type, from_name } = req.body; const token = await tokenService.createToken({ company_id, target_email, employee_name, template_type, + from_name, }); const trackingUrl = `${process.env.BASE_URL}/t/${token.token}`; @@ -92,7 +93,7 @@ exports.createToken = async (req, res, next) => { // Create token and send mail exports.createAndSendToken = async (req, res, next) => { try { - const { company_id, target_email, employee_name, template_type } = req.body; + const { company_id, target_email, employee_name, template_type, from_name } = req.body; // Create token const token = await tokenService.createToken({ @@ -100,6 +101,7 @@ exports.createAndSendToken = async (req, res, next) => { target_email, employee_name, template_type, + from_name, }); // Send mail diff --git a/backend/src/services/ollama.service.js b/backend/src/services/ollama.service.js index dae07ba..6ab7947 100644 --- a/backend/src/services/ollama.service.js +++ b/backend/src/services/ollama.service.js @@ -87,84 +87,116 @@ class OllamaService { if (generate_html) { // Full HTML generation mode - systemPrompt = `Sen profesyonel bir siber güvenlik uzmanısın ve şirketler için phishing farkındalık testi mail şablonları oluşturuyorsun. + systemPrompt = `Sen profesyonel bir siber güvenlik uzmanısın ve phishing farkındalık test mail şablonları oluşturuyorsun. -GÖREV: Gerçekçi, ikna edici ve profesyonel phishing test mailleri oluştur. +GÖREV: Gerçekçi, ikna edici ve SADECE TÜRKÇE HTML phishing test mailleri oluştur. -KURALLAR: -1. Mail şablonları modern HTML/CSS ile tasarlanmalı -2. Gerçek şirket maillerine benzer görünmeli -3. İkna edici ve inandırıcı olmalı -4. Türkçe dil bilgisi ve imla kurallarına uygun olmalı -5. Kullanıcıyı aciliyet hissi ile harekete geçirmeli +KRİTİK KURALLAR: +1. ✅ SADECE TÜRKÇE kullan - İngilizce kelime YASAK! +2. ✅ Modern HTML5 + inline CSS +3. ✅ Gerçek kurumsal maillere benzer tasarım +4. ✅ Gramer ve imla hatası OLMAYACAK +5. ✅ Mantıklı ve tutarlı senaryo +6. ✅ Responsive tasarım (max-width: 600px) +7. ✅ Aciliyet vurgusu ZORUNLU PLACEHOLDER'LAR: - {{company_name}} - Şirket adı -- {{employee_name}} - Çalışan adı -- {{tracking_url}} - Tıklama linki +- {{employee_name}} - Çalışan adı +- {{tracking_url}} - Link href'inde + +KONU BAŞLIĞI: +- Max 60 karakter +- Net, çekici, TÜRKÇE +- Senaryoya tam uygun YANIT FORMATI: Sadece JSON!`; - userPrompt = `Aşağıdaki bilgilere göre profesyonel bir phishing test mail şablonu oluştur: + userPrompt = `SENARYO DETAYLARI: -📌 HEDEF ŞİRKET: ${company_name} -📌 SENARYO: ${scenario}`; +🏢 Hedef Şirket/Kurum: ${company_name} +📋 Senaryo: ${scenario}`; - if (employee_info) userPrompt += `\n📌 HEDEF KİTLE: ${employee_info}`; - if (custom_prompt) userPrompt += `\n📌 ÖZEL TALİMATLAR: ${custom_prompt}`; + if (employee_info) userPrompt += `\n👤 Hedef Kitle: ${employee_info}`; + if (custom_prompt) userPrompt += `\n📌 Ek Talimatlar: ${custom_prompt}`; userPrompt += ` -JSON YANIT FORMATI: +BEKLENEN JSON ÇIKTISI: { - "subject": "İkna edici mail konusu (max 70 karakter)", - "body": "
Sayın {{employee_name}},
İçerik
Tıklayın" + "subject": "Net, çekici konu başlığı (max 60 karakter, SADECE TÜRKÇE)", + "body": "Sayın {{employee_name}},
İçerik paragrafı...
TıklayınSaygılarımızla,
{{company_name}}
,
${p.replace(/\{\{tracking_url\}\}/g, 'Buraya Tıklayın')}
`; + return `${p.replace(/\{\{tracking_url\}\}/g, 'buraya tıklayın')}
`; } return `${p}
`; }) diff --git a/frontend/src/pages/Templates.jsx b/frontend/src/pages/Templates.jsx index 6112e29..28f61e5 100644 --- a/frontend/src/pages/Templates.jsx +++ b/frontend/src/pages/Templates.jsx @@ -515,7 +515,7 @@ function Templates() { } - onClick={handlePreview} + onClick={() => handlePreview()} disabled={previewLoading || !form.body_html} > {previewLoading ? 'Önizleme Oluşturuluyor...' : 'Önizleme Oluştur'}