fix(akquise): Berater-Mail ohne Link ins CRM

Die Berater haben keinen Zugang zum CRM. Die Mail verlinkt nur noch die
Ausschreibung, falls hinterlegt; der Hinweis auf die Einstellungen in der
Fusszeile entfaellt ebenso. CRM_PUBLIC_URL wird nicht mehr gebraucht.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Sascha Wolf
2026-10-21 11:04:23 +02:00
co-authored by Claude Opus 5.5
parent 6772f34b4e
commit 019fa1a251
5 changed files with 16 additions and 10 deletions
+2 -3
View File
@@ -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
+4 -5
View File
@@ -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
? `<p style="white-space:pre-wrap;border-left:3px solid #ddd;padding-left:12px;color:#444">${escapeHtml(description)}</p>`
: '',
`<p><a href="${PUBLIC_URL}/">Im perinco CRM öffnen</a></p>`,
'<p style="color:#888;font-size:12px">Automatische Nachricht aus dem perinco CRM. ',
'Die Benachrichtigung lässt sich unter Einstellungen → Akquise je Berater abschalten.</p>',
'<p style="color:#888;font-size:12px">Automatische Nachricht von perinco.</p>',
'</div>',
].join('');
+4
View File
@@ -54,6 +54,10 @@ check(
message.html.includes('<a href="https://example.com/p?a=1&amp;b=2">https://example.com/p?a=1&amp;b=2</a>')
);
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 <a>', !withoutLink.html.includes('<a ') && !withoutLink.html.includes('Link zum Projekt'));
console.log(
failures === 0 ? '\nAlle Pruefungen bestanden.' : `\n${failures} Pruefung(en) fehlgeschlagen.`