diff --git a/docs/07-anleitung-benutzer.md b/docs/07-anleitung-benutzer.md index fa13bcb..854aafb 100644 --- a/docs/07-anleitung-benutzer.md +++ b/docs/07-anleitung-benutzer.md @@ -989,7 +989,9 @@ 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 sagt, dass der Berater auf das Projekt beworben wurde, und enthält die -Projektdaten samt ausgeschriebenem Link zum Projekt; eine Antwort darauf +Projektdaten samt ausgeschriebenem Link zum Projekt, sofern einer hinterlegt +ist. Ins CRM verlinkt sie nicht, die Berater haben dort keinen Zugang. 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 2fb3988..82b99d2 100644 --- a/docs/11-postfach.md +++ b/docs/11-postfach.md @@ -396,7 +396,9 @@ der Akquise ein Projekt eingetragen und dabei ein Berater ausgewählt, bekommt 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). +und die Beschreibung (gekürzt auf 1500 Zeichen). Ist kein Link hinterlegt, +fehlt die Zeile. **Einen Link ins CRM enthält die Mail bewusst nicht** - die +Berater haben keinen Zugang zum CRM. ```mermaid sequenceDiagram diff --git a/server/.env.example b/server/.env.example index 20bbbe6..e714ec9 100644 --- a/server/.env.example +++ b/server/.env.example @@ -46,9 +46,8 @@ MS_CLIENT_ID= MS_CLIENT_SECRET= MS_MAILBOX=crm@perinco.de -# Adresse des CRM fuer den Link in der Berater-Mail bei neuem Projekt -# (braucht zusaetzlich die Anwendungsberechtigung Mail.Send). -# CRM_PUBLIC_URL=https://crm.perinco.de +# Die Berater-Mail bei neuem Projekt braucht zusaetzlich die +# Anwendungsberechtigung Mail.Send (siehe docs/11-postfach.md). # Ordner im Postfach. "inbox" ist ein von Graph vorgegebener Name. # MS_MAIL_FOLDER=inbox diff --git a/server/src/acquisitionNotify.js b/server/src/acquisitionNotify.js index da9b17d..da1045d 100644 --- a/server/src/acquisitionNotify.js +++ b/server/src/acquisitionNotify.js @@ -14,12 +14,13 @@ import { splitConsultants } from './acquisitionRules.js'; * App hat dafuer die Anwendungsberechtigung Mail.Send. Antworten gehen per * Reply-To an den Benutzer, der das Projekt eingetragen hat. * + * Die Berater haben keinen Zugang zum CRM - die Mail verlinkt deshalb nur die + * Ausschreibung (falls hinterlegt) und nie das CRM selbst. + * * Der Versand laeuft nach der Antwort an den Browser und darf das Speichern nie * scheitern lassen: ein Fehler landet im Log, der Eintrag ist trotzdem da. */ -const PUBLIC_URL = (process.env.CRM_PUBLIC_URL || 'https://crm.perinco.de').replace(/\/+$/, ''); - /** Beschreibung in der Mail kuerzen - der volle Text steht im CRM. */ const MAX_DESCRIPTION_CHARS = 1500; @@ -96,9 +97,7 @@ export function buildMessage(acquisition, consultantName) { description ? `
${escapeHtml(description)}
` : '', - ``, - 'Automatische Nachricht aus dem perinco CRM. ', - 'Die Benachrichtigung lässt sich unter Einstellungen → Akquise je Berater abschalten.
', + 'Automatische Nachricht von perinco.
', '', ].join(''); diff --git a/server/test/acquisitionNotify.test.mjs b/server/test/acquisitionNotify.test.mjs index cf8a0f8..36ac1bf 100644 --- a/server/test/acquisitionNotify.test.mjs +++ b/server/test/acquisitionNotify.test.mjs @@ -54,6 +54,10 @@ check( message.html.includes('https://example.com/p?a=1&b=2') ); check('Leere Felder fehlen', !message.html.includes('Projektpreis')); +check('Kein Link ins CRM', !/crm\.perinco|CRM/.test(message.html)); + +const withoutLink = buildMessage({ id: 2, title: 'Ohne Link', link: null }, 'Nico'); +check('Ohne Link: kein ', !withoutLink.html.includes('