From c2c51f9fcac9c01edd570ea75bbdd2fb05327bd6 Mon Sep 17 00:00:00 2001 From: Thomas Hackner Date: Mon, 6 Jul 2026 10:06:56 +0200 Subject: [PATCH] =?UTF-8?q?Neue=20Bewerbungs-Status:=20In=20Bearbeitung,?= =?UTF-8?q?=20Interessiert,=20Warten=20auf=20R=C3=BCckmeldung/meine=20Antw?= =?UTF-8?q?ort?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Vier mittlere Pipeline-Status ergänzt (nach Eingangsbestätigung, vor Vorstellungsgespräch), inkl. Farben/Reihenfolge in Übersicht, Detailseite und PDF-Export sowie REST-API-Validierung und Swagger-Enum. Co-Authored-By: Claude Opus 4.8 --- lib/api.js | 5 +++-- lib/openapi.js | 5 +++-- public/js/main.js | 9 +++++++-- server.js | 5 +++-- views/bewerbung.ejs | 4 ++++ views/index.ejs | 13 +++++++++++-- 6 files changed, 31 insertions(+), 10 deletions(-) diff --git a/lib/api.js b/lib/api.js index 91c1106..8f83da9 100644 --- a/lib/api.js +++ b/lib/api.js @@ -18,8 +18,9 @@ function withLabels(row) { } const STATUS_OPTIONS = [ - 'Entwurf', 'Gesendet', 'Eingangsbestätigung', 'Vorstellungsgespräch', - 'Absage', 'Einstellung', 'Keine Rückmeldung', + 'Entwurf', 'Gesendet', 'Eingangsbestätigung', + 'In Bearbeitung', 'Interessiert', 'Warten auf Rückmeldung', 'Warten auf meine Antwort', + 'Vorstellungsgespräch', 'Absage', 'Einstellung', 'Keine Rückmeldung', ]; function createExternalApi(deps) { diff --git a/lib/openapi.js b/lib/openapi.js index 16af0ab..c33ef54 100644 --- a/lib/openapi.js +++ b/lib/openapi.js @@ -8,8 +8,9 @@ const ART_OPTIONS = [ 'Arbeitsagentur', 'Sonstiges', ]; const STATUS_OPTIONS = [ - 'Entwurf', 'Gesendet', 'Eingangsbestätigung', 'Vorstellungsgespräch', - 'Absage', 'Einstellung', 'Keine Rückmeldung', + 'Entwurf', 'Gesendet', 'Eingangsbestätigung', + 'In Bearbeitung', 'Interessiert', 'Warten auf Rückmeldung', 'Warten auf meine Antwort', + 'Vorstellungsgespräch', 'Absage', 'Einstellung', 'Keine Rückmeldung', ]; const { LABEL_OPTIONS } = require('./labels'); diff --git a/public/js/main.js b/public/js/main.js index 19901f1..a3fb27a 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -425,13 +425,18 @@ function generatePdfDocument(settings, applications, month, year) { yPos += 6; // ---- Group entries by status (order kept in sync with views/index.ejs) ---- - const statusOrder = ['Entwurf', 'Gesendet', 'Eingangsbestätigung', 'Vorstellungsgespräch', - 'Einstellung', 'Absage', 'Keine Rückmeldung']; + const statusOrder = ['Entwurf', 'Gesendet', 'Eingangsbestätigung', + 'In Bearbeitung', 'Interessiert', 'Warten auf Rückmeldung', 'Warten auf meine Antwort', + 'Vorstellungsgespräch', 'Einstellung', 'Absage', 'Keine Rückmeldung']; // Accent colour per status (RGB) – reused by the chart and the list headings const statusColors = { 'Entwurf': [168, 85, 247], 'Gesendet': [59, 130, 246], 'Eingangsbestätigung': [14, 165, 233], + 'In Bearbeitung': [20, 184, 166], + 'Interessiert': [236, 72, 153], + 'Warten auf Rückmeldung': [249, 115, 22], + 'Warten auf meine Antwort': [217, 70, 239], 'Vorstellungsgespräch': [245, 158, 11], 'Einstellung': [34, 197, 94], 'Absage': [239, 68, 68], diff --git a/server.js b/server.js index c5e7ab8..5590abb 100644 --- a/server.js +++ b/server.js @@ -45,8 +45,9 @@ const ART_OPTIONS = [ 'Arbeitsagentur', 'Sonstiges' ]; const STATUS_OPTIONS = [ - 'Entwurf', 'Gesendet', 'Eingangsbestätigung', 'Vorstellungsgespräch', - 'Absage', 'Einstellung', 'Keine Rückmeldung' + 'Entwurf', 'Gesendet', 'Eingangsbestätigung', + 'In Bearbeitung', 'Interessiert', 'Warten auf Rückmeldung', 'Warten auf meine Antwort', + 'Vorstellungsgespräch', 'Absage', 'Einstellung', 'Keine Rückmeldung' ]; // Base document types the user can provide as a foundation for AI tailoring const BASIS_TYP_OPTIONS = ['Anschreiben', 'Lebenslauf', 'Profil/Kurzprofil', 'Sonstiges']; diff --git a/views/bewerbung.ejs b/views/bewerbung.ejs index 91da8ea..6ce0f60 100644 --- a/views/bewerbung.ejs +++ b/views/bewerbung.ejs @@ -11,6 +11,10 @@ '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', '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', diff --git a/views/index.ejs b/views/index.ejs index eb55de4..5220c0f 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -221,12 +221,17 @@ <% if (applications.length > 0) { %> <% // Status-Reihenfolge synchron zu public/js/main.js halten - const statusOrder = ['Entwurf', 'Gesendet', 'Eingangsbestätigung', 'Vorstellungsgespräch', - 'Einstellung', 'Absage', 'Keine Rückmeldung']; + const statusOrder = ['Entwurf', 'Gesendet', 'Eingangsbestätigung', + 'In Bearbeitung', 'Interessiert', 'Warten auf Rückmeldung', 'Warten auf meine Antwort', + 'Vorstellungsgespräch', 'Einstellung', 'Absage', 'Keine Rückmeldung']; const statusDot = { 'Entwurf': 'bg-purple-500', 'Gesendet': 'bg-indigo-500', 'Eingangsbestätigung': 'bg-blue-500', + 'In Bearbeitung': 'bg-teal-500', + 'Interessiert': 'bg-pink-500', + 'Warten auf Rückmeldung': 'bg-orange-500', + 'Warten auf meine Antwort': 'bg-fuchsia-500', 'Vorstellungsgespräch': 'bg-yellow-500', 'Einstellung': 'bg-green-500', 'Absage': 'bg-red-500', @@ -288,6 +293,10 @@ <%= app.status === 'Einstellung' ? 'bg-green-100 text-green-800 dark:bg-green-800 dark:text-green-100' : app.status === 'Absage' ? 'bg-red-100 text-red-800 dark:bg-red-800 dark:text-red-100' : app.status === 'Vorstellungsgespräch' ? 'bg-yellow-100 text-yellow-800 dark:bg-yellow-800 dark:text-yellow-100' : + app.status === 'In Bearbeitung' ? 'bg-teal-100 text-teal-800 dark:bg-teal-800 dark:text-teal-100' : + app.status === 'Interessiert' ? 'bg-pink-100 text-pink-800 dark:bg-pink-800 dark:text-pink-100' : + app.status === 'Warten auf Rückmeldung' ? 'bg-orange-100 text-orange-800 dark:bg-orange-800 dark:text-orange-100' : + app.status === 'Warten auf meine Antwort' ? 'bg-fuchsia-100 text-fuchsia-800 dark:bg-fuchsia-800 dark:text-fuchsia-100' : app.status === 'Entwurf' ? 'bg-purple-100 text-purple-800 dark:bg-purple-800 dark:text-purple-100' : 'bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-300' %>"> <%= app.status || '-' %>