Compare commits

..

3 Commits

Author SHA1 Message Date
AyrisAI
083bc5f546 Remove specific keyword filtering for notifications 2026-05-14 19:10:11 +03:00
AyrisAI
add1876c11 Remove IMAP fallback and clean up webhook logic 2026-05-14 19:09:44 +03:00
AyrisAI
c331162704 Move webhook secret to .env for better security 2026-05-14 19:09:09 +03:00

View File

@@ -1,11 +1,9 @@
import { NextResponse } from 'next/server';
import { prisma } from '@/lib/prisma';
import { getLatestEmail } from '@/lib/mail';
import { sendTelegramNotification } from '@/lib/notifications';
// Bu kısım normalde .env içinde olmalı
const WEBHOOK_SECRET = 'besiktasK1903*';
const IMAP_PASSWORD = process.env.MAILCOW_MASTER_PASSWORD || ''; // Dovecot Master Password tavsiye edilir
const WEBHOOK_SECRET = process.env.WEBHOOK_SIGNAL_SECRET || 'besiktasK1903*';
// RFC 2047 Decode Fonksiyonu
function decodeMimeText(text: string) {
@@ -56,52 +54,27 @@ export async function POST(request: Request) {
}
// 2. Mail İçeriğini Belirle
let mailData = null;
if (incomingSubject || incomingSnippet) {
console.log(`[Signal] İçerik worker'dan hazır geldi: ${subject}`);
mailData = {
subject: subject || "(Konu Yok)",
text: incomingSnippet || "",
from: incomingFrom || "Bilinmiyor"
};
} else {
console.log("[Signal] İçerik eksik, IMAP'e gidiliyor...");
mailData = await getLatestEmail(to, IMAP_PASSWORD);
if (!incomingSubject && !incomingSnippet) {
console.log(`[Signal] İçerik eksik, işlem durduruldu: ${to}`);
return NextResponse.json({ success: true, message: 'No content provided' });
}
if (!mailData) {
console.error(`[Signal] Mail içeriği çekilemedi: ${to}`);
return NextResponse.json({ success: false, error: 'Could not fetch mail' }, { status: 500 });
}
const mailData = {
subject: subject || "(Konu Yok)",
text: incomingSnippet || "",
from: incomingFrom || "Bilinmiyor"
};
// 3. İçerik Analizi (BMW, Penti vb.)
let processed = false;
let extraInfo = "";
const analysisContent = (mailData.subject + " " + mailData.text).toLowerCase();
if (analysisContent.includes("bmw") || analysisContent.includes("tamir")) {
console.log("🚗 [Signal] BMW/Tamir içerikli mail tespit edildi!");
extraInfo = "🚗 BMW/Tamir İlgili İçerik";
processed = true;
}
if (analysisContent.includes("penti") || analysisContent.includes("sipariş")) {
console.log("🛍️ [Signal] Penti/Sipariş içerikli mail tespit edildi!");
extraInfo = "🛍️ Penti/Sipariş İlgili İçerik";
processed = true;
}
// 4. Bildirim Gönder (Telegram)
// 3. Bildirim Gönder (Telegram)
const notificationResult = await sendTelegramNotification(
mapping.userId,
to,
mailData.from,
mailData.subject,
extraInfo
"" // Analiz bilgisini kaldırdık
);
// 5. Bildirim Logu
// 4. Bildirim Logu
await prisma.notificationLog.create({
data: {
mailbox: to,
@@ -109,16 +82,14 @@ export async function POST(request: Request) {
subject: mailData.subject,
status: notificationResult.status,
userId: mapping.userId,
error: notificationResult.error || (processed ? null : "Anahtar kelime eşleşmedi")
error: notificationResult.error
}
});
return NextResponse.json({
success: true,
processed,
notification: notificationResult.status,
subject: mailData.subject,
mode: incomingSubject ? 'worker-data' : 'imap-fallback'
subject: mailData.subject
});
} catch (error: any) {