<%- include('partials/head') %> <%- include('partials/header', { hideSettings: true }) %> <% const statusColor = { 'Entwurf': 'bg-purple-100 text-purple-800 dark:bg-purple-900 dark:text-purple-200', 'Gesendet': 'bg-indigo-100 text-indigo-800 dark:bg-indigo-900 dark:text-indigo-200', 'Eingangsbestätigung': 'bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200', 'In Bearbeitung': 'bg-teal-100 text-teal-800 dark:bg-teal-900 dark:text-teal-200', 'Interessiert': 'bg-pink-100 text-pink-800 dark:bg-pink-900 dark:text-pink-200', 'Warten auf Rückmeldung': 'bg-orange-100 text-orange-800 dark:bg-orange-900 dark:text-orange-200', 'Warten auf meine Antwort': 'bg-fuchsia-100 text-fuchsia-800 dark:bg-fuchsia-900 dark:text-fuchsia-200', 'Vorstellungsgespräch': 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200', 'Vertragsverhandlung': 'bg-lime-100 text-lime-800 dark:bg-lime-900 dark:text-lime-200', 'Einstellung': 'bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200', 'Absage': 'bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200', 'Absage von meiner Seite': 'bg-rose-100 text-rose-800 dark:bg-rose-900 dark:text-rose-200', 'Keine Rückmeldung': 'bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-300' }; const aktuellerStatus = (application.status && application.status.trim()) ? application.status.trim() : 'Ohne Status'; const today = new Date().toISOString().split('T')[0]; %>
Zurück zur Übersicht

<%= application.firma %> <%= application.stelle %>

<%= aktuellerStatus %> <%- include('partials/favorit-button', { j: application, endpoint: '/api/bewerbungen/' + application.id + '/favorit' }) %>

Bewerbungsdaten

<%- include('partials/labelPicker', { labelOptions: labelOptions, selected: application.labelsArr }) %>

Eigene Anhänge

Nur für dich – erscheinen nicht im PDF und werden nicht mitversendet.

<% if (interneAnhaenge && interneAnhaenge.length) { %> <% } else { %>

Noch keine eigenen Anhänge.

<% } %>

PDFs lassen sich per Klick direkt öffnen. Max. 15 MB.

<% const genStatus = application.generierung_status; %> <% if (genStatus || (anhaenge && anhaenge.length) || (application.stellenbeschreibung && application.stellenbeschreibung.trim())) { %>

Bewerbungsunterlagen

<% if (!genStatus || genStatus === 'nicht_gestartet') { %>
Noch keine Unterlagen generiert. Ergänze bei Bedarf unten Notizen (z. B. die vollständige Firmenanschrift) und starte die Generierung.
<% } else if (genStatus === 'ausstehend') { %>
Die KI erstellt gerade individuelle Bewerbungsunterlagen … Diese Seite aktualisiert sich automatisch.
<% } else if (genStatus === 'fehler') { %>
Generierung fehlgeschlagen

<%= application.generierung_fehler || 'Unbekannter Fehler.' %>

<% } else if (genStatus === 'fertig') { %>
Unterlagen wurden erstellt. Bitte vor dem Versand prüfen und ggf. anpassen.
<% } %>
<% if (anhaenge && anhaenge.length) { %> <% } else if (genStatus !== 'ausstehend') { %>

Noch keine generierten Unterlagen vorhanden.

<% } %>
<% if ((application.email_anschreiben && application.email_anschreiben.trim()) || genStatus === 'fertig') { %>

Begleit-E-Mail

Kurzer, normgerechter Text zum Versand der Bewerbung per E-Mail (Unterlagen im Anhang). Du kannst Betreff und Text vor dem Versand frei anpassen und speichern.

<% } %>

Zusätzliche Infos für die Generierung – z. B. die vollständige Firmenanschrift (Straße, PLZ, Ort), ein Ansprechpartner oder besondere Hinweise zur Bewerbung. Die KI berücksichtigt diese Angaben.

Standardmäßig werden Anschreiben und Lebenslauf erstellt. Wird der Lebenslauf abgewählt, führt ihn das Anschreiben auch nicht mehr unter „Anlagen“ auf.

<% if (basisAnhaenge && basisAnhaenge.length) { %>

Wähle aus, welche Anlagen (z. B. Zeugnisse) mitgeschickt werden. Standardmäßig ist nichts ausgewählt; die Auswahl wird auch im Anschreiben unter „Anlagen“ berücksichtigt.

<% basisAnhaenge.forEach(function(ba){ %> <% }); %>
<% } else { %>

Keine zusätzlichen Anlagen hinterlegt. Unter Vorlagen kannst du statische Anlagen (z. B. Zeugnisse) hochladen.

<% } %>
<% if (application.stellenbeschreibung && application.stellenbeschreibung.trim()) { %>
Importierte Stellenbeschreibung anzeigen
<% if (application.quelle_url) { %> <%= application.quelle_url %> <% } %>

<%= application.stellenbeschreibung %>

<% } %>
<% } %>

E-Mail-Korrespondenz

<% if (mailConfigured) { %>
<% } %>
<% if (!mailConfigured) { %>
E-Mail ist nicht konfiguriert. Bitte MAIL_HOST, MAIL_USER und MAIL_PASSWORD in der .env setzen.
<% } else { %> <% if (mailError) { %>
<%= mailError %>
<% } %> <% if (mailOk) { %>
<%= mailOk %>
<% } %> <% if (emails && emails.length) { %> <% } else { %>

Noch keine E-Mails. Sende die Bewerbung unten oder rufe das Postfach ab.

<% } %>

Bewerbung per E-Mail senden

Versand über <%= mailFrom %>. Empfängeradresse eingeben, Betreff und Text prüfen, Anhänge auswählen und senden.

<% if (anhaenge && anhaenge.length) { %>

Anhänge

<% anhaenge.forEach(function(a){ %> <% }); %>
<% } else { %>

Keine generierten Anhänge vorhanden - erst Unterlagen generieren.

<% } %>
<% } %>

Status-Verlauf

Jede Statusänderung wird mit Datum dokumentiert. Der jüngste Eintrag bestimmt den aktuellen Status.

<% if (verlauf.length > 0) { %>
    <% verlauf.forEach(eintrag => { %>
  1. <% }); %>
<% } else { %>

Noch keine Statusänderungen dokumentiert.

<% } %>

Statusänderung hinzufügen

<% if (caldavConfigured) { %>

Termine

<% if (terminOk) { %>
Termin wurde im Kalender angelegt.
<% } %> <% if (terminError) { %>
<%= terminError %>
<% } %> <% if (terminVorschlag) { %>
Vorstellungsgespräch erfasst – möchtest du den Termin in den Kalender aufnehmen? Zeit prüfen und speichern.
<% } %> <% if (termine && termine.length) { %> <% } else { %>

Noch keine Termine für diese Bewerbung.

<% } %>
class="border-t border-gray-200 dark:border-gray-700 pt-3"> Termin hinzufügen
<% } %>
<%- include('partials/footer') %> <%- include('partials/favorit-script') %>