feat: Significantly improve AI prompt quality for template generation
Enhanced system prompt: - Professional cyber security expert role - Modern HTML/CSS styling instructions - Responsive design requirements - Persuasive and urgent tone guidance - Turkish language grammar emphasis - Realistic corporate email appearance Enhanced user prompt: - Better structured input with emojis (📌) - Clear field labels (HEDEF ŞİRKET, SENARYO, etc.) - Detailed HTML example with inline CSS - Button styling, footer, responsive design - Max 70 char subject line guidance - Multiple warnings for quality output All user inputs are sent to AI: ✅ company_name (Şirket Adı) ✅ scenario (Senaryo) ✅ employee_info (Çalışan Bilgisi) - optional ✅ custom_prompt (Ek Talimatlar) - optional template_name and template_type are for DB only, NOT sent to AI. This will produce much higher quality, styled HTML emails.
This commit is contained in:
@@ -96,43 +96,52 @@ class OllamaService {
|
||||
const { company_name, scenario, employee_info, custom_prompt } = params;
|
||||
|
||||
// Build the prompt
|
||||
const systemPrompt = `Sen profesyonel bir güvenlik uzmanısın ve phishing test maileri oluşturuyorsun.
|
||||
Amacın gerçekçi, ikna edici ancak zararsız test mailleri oluşturmak.
|
||||
Mail şablonları HTML formatında olmalı ve modern, profesyonel görünmeli.
|
||||
Şablon içinde {{company_name}} ve {{employee_name}} placeholder'ları kullan.`;
|
||||
const systemPrompt = `Sen profesyonel bir siber güvenlik uzmanısın ve şirketler için phishing farkındalık testi mail şablonları oluşturuyorsun.
|
||||
|
||||
let userPrompt = `Aşağıdaki bilgilere göre bir phishing test mail şablonu oluştur:
|
||||
GÖREV: Gerçekçi, ikna edici ve profesyonel phishing test mailleri oluştur.
|
||||
|
||||
Şirket: ${company_name}
|
||||
Senaryo: ${scenario}`;
|
||||
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
|
||||
6. Şirket logosu/branding için placeholder kullan
|
||||
|
||||
ZORUNLU PLACEHOLDER'LAR:
|
||||
- {{company_name}} - Şirket adı
|
||||
- {{employee_name}} - Çalışan adı (varsa "Sayın {{employee_name}}", yoksa "Sayın Yetkili")
|
||||
- {{tracking_url}} - Tıklama linki (button veya link olarak)
|
||||
|
||||
YANIT FORMATI: Sadece ve sadece JSON, hiçbir ek açıklama yok!`;
|
||||
|
||||
let userPrompt = `Aşağıdaki bilgilere göre profesyonel bir phishing test mail şablonu oluştur:
|
||||
|
||||
📌 HEDEF ŞİRKET: ${company_name}
|
||||
📌 SENARYO: ${scenario}`;
|
||||
|
||||
if (employee_info) {
|
||||
userPrompt += `\nÇalışan Bilgisi: ${employee_info}`;
|
||||
userPrompt += `
|
||||
📌 HEDEF KİTLE: ${employee_info}`;
|
||||
}
|
||||
|
||||
if (custom_prompt) {
|
||||
userPrompt += `\nEk Talimatlar: ${custom_prompt}`;
|
||||
userPrompt += `
|
||||
📌 ÖZEL TALİMATLAR: ${custom_prompt}`;
|
||||
}
|
||||
|
||||
userPrompt += `
|
||||
|
||||
ÖNEMLI:
|
||||
1. Yanıtını JSON formatında ver
|
||||
2. İki alan olmalı: "subject" (konu) ve "body" (HTML mail içeriği)
|
||||
3. Body HTML formatında, modern ve profesyonel olmalı
|
||||
4. {{company_name}} ve {{employee_name}} placeholder'larını kullan
|
||||
5. Gerçekçi ve ikna edici olmalı
|
||||
6. Link için {{tracking_url}} placeholder'ını kullan
|
||||
|
||||
ÇOK ÖNEMLİ: Yanıtın SADECE JSON olmalı, başka hiçbir metin olmamalı!
|
||||
|
||||
Kesinlikle bu formatta yanıt ver:
|
||||
JSON YANIT FORMATI (AYNEN BU YAPIDA):
|
||||
{
|
||||
"subject": "Mail konusu buraya",
|
||||
"body": "<html><body><h2>Başlık</h2><p>Mail içeriği buraya</p><a href='{{tracking_url}}'>Link</a></body></html>"
|
||||
"subject": "İkna edici mail konusu buraya (max 70 karakter)",
|
||||
"body": "<!DOCTYPE html><html><head><meta charset='UTF-8'><style>body{font-family:Arial,sans-serif;line-height:1.6;color:#333;max-width:600px;margin:0 auto;padding:20px;}h2{color:#d32f2f;}.button{display:inline-block;padding:12px 30px;background:#d32f2f;color:white;text-decoration:none;border-radius:5px;margin:20px 0;}.footer{font-size:12px;color:#666;margin-top:30px;border-top:1px solid #ddd;padding-top:15px;}</style></head><body><h2>Başlık</h2><p>Sayın {{employee_name}},</p><p>Mail içeriği buraya - ikna edici ve aciliyet vurgulu</p><a href='{{tracking_url}}' class='button'>Butona tıklat</a><div class='footer'>{{company_name}} © 2024</div></body></html>"
|
||||
}
|
||||
|
||||
SADECE JSON döndür, hiç açıklama yazma!`;
|
||||
⚠️ SADECE JSON DÖNDÜR! Açıklama, not, yorum YAZMA!
|
||||
⚠️ Body içinde CSS stillendir, responsive yap!
|
||||
⚠️ Konuyu çekici ve acil yap!
|
||||
⚠️ HTML'i tam ve geçerli oluştur!`;
|
||||
|
||||
try {
|
||||
logger.info(`Generating template for company: ${company_name}, scenario: ${scenario}`);
|
||||
|
||||
Reference in New Issue
Block a user