diff --git a/lib/chat.js b/lib/chat.js index e5a08e6..9312c8b 100644 --- a/lib/chat.js +++ b/lib/chat.js @@ -103,6 +103,7 @@ async function streamChat({ system, messages, onToken, temperature = 0.6, signal // Each entry is already trimmed to the fields the prompt needs. function buildContextPrompt(ctx) { const name = (ctx && ctx.settings && ctx.settings.name) || 'der Bewerber'; + const heute = (ctx && ctx.heute) || ''; const parts = []; parts.push( 'Du bist ein hilfreicher, deutschsprachiger Bewerbungs-Assistent für ' + name + '. ' + @@ -113,6 +114,13 @@ function buildContextPrompt(ctx) { 'Wenn eine Angabe nötig ist, die du nicht weißt, setze einen klar erkennbaren ' + 'Platzhalter in eckigen Klammern. Verwende nur den einfachen Bindestrich "-".' ); + if (heute) { + parts.push('# Heute\n' + 'Heutiges Datum: ' + heute + '. ' + + 'Terminangaben unten sind UTC-Zeitstempel (ISO, endet auf Z). ' + + 'Rechne in UTC-Zeiten und leite daraus ab, was "heute", "morgen" usw. ist. ' + + 'Zeige dem Nutzer Terminzeiten in seiner lokalen Zeit (Europe/Berlin = UTC+1, ' + + 'bzw. UTC+2 während der Sommerzeit).'); + } const apps = (ctx && ctx.applications) || []; if (apps.length) { diff --git a/server.js b/server.js index 6cb3b1a..2cb4222 100644 --- a/server.js +++ b/server.js @@ -2328,13 +2328,15 @@ initializeDatabase().then(() => { dbGet('SELECT name FROM settings WHERE id = 1'), dbAll(`SELECT firma, stelle, status, datum, notizen FROM bewerbungen ORDER BY datum DESC, created_at DESC LIMIT 25`), - dbAll(`SELECT e.subject, e.from_addr AS from, b.firma AS bewerbung + dbAll(`SELECT e.subject, e.from_addr, b.firma AS bewerbung FROM emails e LEFT JOIN bewerbungen b ON b.id = e.bewerbung_id WHERE e.direction = 'received' ORDER BY e.email_date DESC, e.created_at DESC LIMIT 12`), upcomingTermine(8), ]); + const heute = new Date().toLocaleDateString('de-DE', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); return { + heute, settings: settings || {}, applications: applications.map((a) => ({ firma: a.firma, stelle: a.stelle, status: a.status,