From ada69eb482f587aaaabeb1b7dd64ebf17c70e027 Mon Sep 17 00:00:00 2001 From: Thomas Hackner Date: Mon, 20 Jul 2026 08:23:37 +0200 Subject: [PATCH] =?UTF-8?q?/bewerbung/:id:=20zweispaltiges=20Layout,=20dez?= =?UTF-8?q?ente=20Eigene=20Anh=C3=A4nge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Zweispalter auf >=lg (links: Bewerbungsdaten+Status+Termine, rechts: Unterlagen+Korrespondenz), vorher alles untereinander auf max-w-3xl. Seite deutlich kürzer, keine Grid-Row-Lücken dank unabhängiger Spalten-Container. Unter lg weiter einspaltig. - Eigene Anhänge: amber durch neutral grau ersetzt, Papierclip durch Schloss-Icon ersetzt (signalisiert „nur für dich / nicht im PDF"). - Größte Textareas etwas kürzer (notizen 6->4, Begleit-E-Mail 12->10, Versand-Nachricht 10->8). Co-Authored-By: Claude --- views/bewerbung.ejs | 855 ++++++++++++++++++++++---------------------- 1 file changed, 431 insertions(+), 424 deletions(-) diff --git a/views/bewerbung.ejs b/views/bewerbung.ejs index 10188fd..5648692 100644 --- a/views/bewerbung.ejs +++ b/views/bewerbung.ejs @@ -27,7 +27,7 @@ const today = new Date().toISOString().split('T')[0]; %> -
+
@@ -47,6 +47,8 @@ <%- include('partials/favorit-button', { j: application, endpoint: '/api/bewerbungen/' + application.id + '/favorit' }) %> +
+

Bewerbungsdaten

@@ -83,7 +85,7 @@
-
@@ -108,16 +110,16 @@ -
+ - - <% 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. -

- - - -
- -

- Vorbelegt ist deine Auswahl aus den Einstellungen - (Standard: Anschreiben und Lebenslauf). 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. Vorbelegt ist deine Auswahl - aus den Einstellungen - (Standard: keine); 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) { %> -
    - <% emails.forEach(function(e){ var out = e.direction === 'out'; %> -
  • -
    -
    - <%= out ? 'Gesendet' : 'Empfangen' %> - - <%= out ? ('An: ' + (e.to_addr || '')) : ('Von: ' + (e.from_addr || '')) %> - -
    - <%= e.email_date ? new Date(e.email_date).toLocaleString('de-DE', { timeZone: 'Europe/Berlin' }) : '' %> -
    -

    <%= e.subject || '(kein Betreff)' %>

    - <% if (e.display_srcdoc) { %> - - <% } else { %> -

    <%= e.body_text || '' %>

    - <% } %> - - <% if (e.anhaenge && e.anhaenge.length) { %> -
    - <% e.anhaenge.forEach(function(a){ %> - - - <%= a.name || 'Anhang' %> - - <% }); %> -
    - <% } %> - - <% if (!out) { %> -
    - -
    - - <% } %> -
  • - <% }); %> -
- <% } 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

@@ -898,6 +493,418 @@
<% } %> + +
+
+ + <% 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. +

+ + + +
+ +

+ Vorbelegt ist deine Auswahl aus den Einstellungen + (Standard: Anschreiben und Lebenslauf). 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. Vorbelegt ist deine Auswahl + aus den Einstellungen + (Standard: keine); 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) { %> +
    + <% emails.forEach(function(e){ var out = e.direction === 'out'; %> +
  • +
    +
    + <%= out ? 'Gesendet' : 'Empfangen' %> + + <%= out ? ('An: ' + (e.to_addr || '')) : ('Von: ' + (e.from_addr || '')) %> + +
    + <%= e.email_date ? new Date(e.email_date).toLocaleString('de-DE', { timeZone: 'Europe/Berlin' }) : '' %> +
    +

    <%= e.subject || '(kein Betreff)' %>

    + <% if (e.display_srcdoc) { %> + + <% } else { %> +

    <%= e.body_text || '' %>

    + <% } %> + + <% if (e.anhaenge && e.anhaenge.length) { %> +
    + <% e.anhaenge.forEach(function(a){ %> + + + <%= a.name || 'Anhang' %> + + <% }); %> +
    + <% } %> + + <% if (!out) { %> +
    + +
    + + <% } %> +
  • + <% }); %> +
+ <% } 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.

+ <% } %> + +
+ +
+
+
+ <% } %> +
+ +
+
<%- include('partials/footer') %>