feat(akquise): E-Mail-Adresse je Berater in den Einstellungen

Neue Spalte crm_acquisition_options.email, pflegbar unter
Einstellungen -> Akquise direkt in der Berater-Zeile. Beim ersten Start
werden vorhandene Berater einmalig mit vorname.nachname@perinco.de
vorbelegt (Merker consultant_email_seeded); Namen ohne Nachnamen bleiben leer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Sascha Wolf
2026-10-21 09:05:59 +02:00
co-authored by Claude Opus 5.5
parent b9d6544b30
commit 907b010f3c
9 changed files with 223 additions and 19 deletions
+1
View File
@@ -103,6 +103,7 @@ erDiagram
int id PK
enum field "sender | channel | consultant"
varchar value "Inhalt des Dropdowns"
varchar email "nur bei consultant"
}
crm_acquisition_history {
date found_on PK
+7
View File
@@ -976,6 +976,13 @@ Zwei Dinge sind dabei unterschiedlich:
behalten ihn und zeigen ihn im Formular als „nicht in der Liste" - so ändert
das Aufräumen einer Liste keine Daten.
Bei den **Beratern** steht unter jedem Namen zusätzlich ein Feld für die
**E-Mail-Adresse**. Gespeichert wird beim Verlassen des Feldes oder mit Enter;
ein leeres Feld entfernt die Adresse. Beim Einführen des Feldes (21.10.2026)
wurden die vorhandenen Berater einmalig mit `vorname.nachname@perinco.de`
vorbelegt - Umlaute ausgeschrieben, bei mehrteiligen Namen erster und letzter
Teil. Berater mit nur einem Namen blieben leer und brauchen eine Adresse von Hand.
Im Reiter **Scanner** steht das **Suchintervall (Minuten)** - also wie oft der
Hintergrund-Scanner die Börsen durchsucht.
+4
View File
@@ -56,6 +56,10 @@ Mal etwas:
das Feld ist Freitext mit Vorschlägen. Erkannt am Spaltentyp: steht `provider`
noch im ENUM, ist die Umstellung offen. Die Zeilen müssen vor dem Verengen weg,
sonst weist MariaDB den `ALTER` ab.
* `addConsultantEmail()` legt `crm_acquisition_options.email` an und belegt die
vorhandenen Berater einmalig mit `vorname.nachname@perinco.de` vor
(`guessPerincoEmail()`, Merker `consultant_email_seeded`). Namen ohne
Nachnamen bleiben leer.
`ensureAdminUser()` legt nur an, wenn `crm_users` **leer** ist. Ohne
`ADMIN_PASSWORD` erzeugt es ein Zufallspasswort und schreibt es einmalig ins Log -