From 6772f34b4edb6abd54fa83712c9151da9c2bec19 Mon Sep 17 00:00:00 2001 From: Sascha Wolf Date: Wed, 21 Oct 2026 09:49:41 +0200 Subject: [PATCH] feat(akquise): Berater-Mail sagt "beworben" und zeigt den Link Betreff "Du wurdest beworben: ", Text "wir haben dich auf folgendes Projekt beworben", Link zum Projekt als ausgeschriebene Zeile in der Tabelle statt versteckt hinter "Zur Ausschreibung". Co-Authored-By: Claude Opus 5.5 --- docs/07-anleitung-benutzer.md | 3 ++- docs/11-postfach.md | 6 ++++-- server/src/acquisitionNotify.js | 17 ++++++++++------- server/test/acquisitionNotify.test.mjs | 8 ++++++-- 4 files changed, 22 insertions(+), 12 deletions(-) diff --git a/docs/07-anleitung-benutzer.md b/docs/07-anleitung-benutzer.md index 3e998b8..fa13bcb 100644 --- a/docs/07-anleitung-benutzer.md +++ b/docs/07-anleitung-benutzer.md @@ -988,7 +988,8 @@ bei allen an). Ist er gesetzt, bekommt der Berater eine Mail von crm@perinco.de, sobald er in der Akquise einem Projekt zugeordnet wird - beim Anlegen und auch, wenn er später beim Bearbeiten dazukommt. Wer schon zugeordnet war, bekommt beim erneuten Speichern keine zweite Mail. Die Mail -enthält die Projektdaten und den Link zur Ausschreibung; eine Antwort darauf +sagt, dass der Berater auf das Projekt beworben wurde, und enthält die +Projektdaten samt ausgeschriebenem Link zum Projekt; eine Antwort darauf geht an den, der das Projekt eingetragen hat. Ohne hinterlegte Adresse geht nichts heraus, der Haken zeigt dann einen Hinweis. diff --git a/docs/11-postfach.md b/docs/11-postfach.md index 980c358..2fb3988 100644 --- a/docs/11-postfach.md +++ b/docs/11-postfach.md @@ -393,8 +393,10 @@ Fremdschlüssel nicht. Seit 21.10.2026 verschickt das CRM selbst Mails - bisher nur eine Sorte: Wird in der Akquise ein Projekt eingetragen und dabei ein Berater ausgewählt, bekommt -dieser eine Mail mit Titel, Endkunde, Anbieter, Tagessatz, Zeitraum, Link zur -Ausschreibung und Beschreibung (gekürzt auf 1500 Zeichen). +dieser eine Mail: Betreff „Du wurdest beworben: ‹Titel›", im Text „wir haben +dich auf folgendes Projekt beworben", dazu Titel, Endkunde, Anbieter, Kanal, +Tagessatz, Zeitraum, der **Link zum Projekt** ausgeschrieben, wer beworben hat +und die Beschreibung (gekürzt auf 1500 Zeichen). ```mermaid sequenceDiagram diff --git a/server/src/acquisitionNotify.js b/server/src/acquisitionNotify.js index c570d1c..da9b17d 100644 --- a/server/src/acquisitionNotify.js +++ b/server/src/acquisitionNotify.js @@ -65,14 +65,20 @@ export function buildMessage(acquisition, consultantName) { ['Projektpreis', formatEuro(acquisition.fixed_price)], ['Zeitraum', period || null], ['Laufzeit', acquisition.duration_days ? `${acquisition.duration_days} Tage` : null], - ['Eingetragen von', acquisition.created_by_name], + ['Link zum Projekt', acquisition.link], + ['Beworben von', acquisition.created_by_name], ].filter(([, value]) => value !== null && value !== undefined && value !== ''); + // Der Link steht ausgeschrieben da - auch wer die Mail als Text liest, sieht ihn. + const cell = (label, value) => + label === 'Link zum Projekt' + ? `${escapeHtml(value)}` + : escapeHtml(value); const table = rows .map( ([label, value]) => `${escapeHtml(label)}` + - `${escapeHtml(value)}` + `${cell(label, value)}` ) .join(''); @@ -85,11 +91,8 @@ export function buildMessage(acquisition, consultantName) { const html = [ '
', `

Hallo ${escapeHtml(firstName)},

`, - '

in der Akquise wurde ein neues Projekt eingetragen und dir zugeordnet:

', + '

wir haben dich auf folgendes Projekt beworben:

', `${table}
`, - acquisition.link - ? `

Zur Ausschreibung

` - : '', description ? `

${escapeHtml(description)}

` : '', @@ -99,7 +102,7 @@ export function buildMessage(acquisition, consultantName) { '
', ].join(''); - return { subject: `Neues Projekt für dich: ${acquisition.title}`, html }; + return { subject: `Du wurdest beworben: ${acquisition.title}`, html }; } /** diff --git a/server/test/acquisitionNotify.test.mjs b/server/test/acquisitionNotify.test.mjs index 02a4f34..cf8a0f8 100644 --- a/server/test/acquisitionNotify.test.mjs +++ b/server/test/acquisitionNotify.test.mjs @@ -43,12 +43,16 @@ const message = buildMessage( }, 'Jörg Müller' ); -check('Betreff mit Titel', message.subject === 'Neues Projekt für dich: SAP