Neuer Menüpunkt über Leads mit Unterpunkt Archiv. - Tabelle Name, Funktion, Unternehmen, LinkedIn, Website, Notiz, Letzter Kontakt, Nächster Impuls; leere Zeile unten, speichert beim Verlassen. Links als Symbol mit URL im Tooltip. - Nächster Impuls: Tage eingeben, Erinnerung über den ReminderWatcher - Archivieren, Zurückholen, endgültig löschen (nur aus dem Archiv) - Lead erstellen öffnet die Lead-Karte vorbelegt (LeadModal.initial), danach wandert der Suspect mit lead_id ins Archiv Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4.2 KiB
13 Suspects
Die Stufe vor dem Lead: Personen, die interessant sein könnten, als schlichte Tabelle. Eingeführt am 29.09.2026. Menü: Suspects (über Leads) mit dem Unterpunkt Archiv.
flowchart LR
S["Suspect<br/>(Tabelle)"] -->|Lead erstellen| M["Lead-Karte<br/>vorbelegt, Titel fehlt"]
M -->|Speichern| L["Lead in 'Neuer Lead'"]
M -->|Speichern| A["Suspect → Archiv<br/>mit Verweis auf den Lead"]
S -->|Archivieren| A
A -->|Zurückholen| S
A -->|Endgültig löschen| X["weg"]
Tabelle
| Spalte | Feld | Hinweis |
|---|---|---|
| Name | name |
Pflicht – ohne Namen wird eine neue Zeile nicht gespeichert |
| Funktion | role |
Freitext |
| Unternehmen | company |
Freitext, kein Verweis auf icon_companies |
linkedin |
nach dem Speichern nur ein Symbol, URL im Tooltip | |
| Website | website |
ebenso; fehlt https://, ergänzt es der Server |
| Notiz | notes |
einzeilig, volle Länge im Tooltip |
| Letzter Kontakt | last_contact_on |
Datum |
| Nächster Impuls | remind_at |
Wecker: Anzahl Tage eingeben, der Server rechnet das Datum |
Bedienung wie eine Liste. Unten steht immer eine leere Zeile. Gespeichert wird, sobald der Fokus die Zeile verlässt oder Enter gedrückt wird. Vorhandene Zellen speichern beim Verlassen der Zelle; Esc verwirft die Eingabe. Links bearbeitet man über den kleinen Stift, der beim Überfahren neben dem Symbol erscheint.
Name, Funktion und Unternehmen sind bewusst Freitext: ein Suspect soll in Sekunden erfasst sein, ohne erst Kontakt und Unternehmen anzulegen.
Nächster Impuls
Klick auf den Wecker → Anzahl Tage → Speichern. Gesetzt zeigt die Zelle das
Datum (rot, wenn fällig). Fällige Impulse meldet derselbe Wächter wie die
Lead-Erinnerungen (ReminderWatcher, beim Anmelden und stündlich):
| Knopf | Wirkung |
|---|---|
| Kontakt aufgenommen | remind_at leer, Letzter Kontakt = heute |
| In 7 Tagen erneut | remind_at + 7 Tage |
| Schließen (×) | nichts – meldet sich beim nächsten Abfragen wieder |
Lead erstellen
Das Lead-Symbol am Zeilenende öffnet die Lead-Karte vorbelegt
(LeadModal mit initial):
- Phase Neuer Lead, zuständig der angemeldete Benutzer
- Unternehmen und Ansprechpartner nur, wenn es im CRM einen mit gleichem Namen gibt (Groß/klein, Rechtsform und Satzzeichen egal)
- Notiz mit allem aus der Zeile: Name, Funktion, Unternehmen, LinkedIn, Website, letzter Kontakt, Notiz
- Titel bleibt leer – der ist Pflicht und muss eingetragen werden
Erst beim Speichern entsteht der Lead; danach wandert der Suspect ins Archiv
und trägt lead_id (im Archiv als Lead markiert). Abbrechen ändert nichts.
Archiv
Archivierte und in Leads übernommene Suspects, neueste zuerst. Zurückholen
stellt die Zeile wieder in die Tabelle, Endgültig löschen entfernt sie
(mit Rückfrage). Löschen geht nur aus dem Archiv – der Server antwortet sonst
mit 409.
Tabelle icon_suspects
| Spalte | Typ | Bedeutung |
|---|---|---|
id |
INT | |
name, role, company |
VARCHAR(190) | |
linkedin, website |
VARCHAR(500) | immer mit Protokoll gespeichert |
notes |
TEXT | |
last_contact_on |
DATE | |
remind_at |
DATETIME | nächster Impuls, UTC wie bei den Leads |
archived |
TINYINT | |
lead_id |
INT NULL | → icon_leads, ON DELETE SET NULL |
created_by |
INT NULL | → icon_users |
In die Historie (als Systemeintrag „Suspects") kommen Archivieren, Zurückholen, Übernahme als Lead und endgültiges Löschen – nicht jede Zelländerung.
Endpunkte
Alle unter /api/suspects, alle hinter requireAuth.
| Methode | Pfad | Zweck |
|---|---|---|
| GET | /?archived=0|1 |
Liste; aktiv älteste zuerst, Archiv neueste zuerst |
| GET | /reminders |
fällige Impulse (remind_at <= NOW(), nicht archiviert) |
| POST | / |
anlegen, name Pflicht |
| PATCH | /:id |
beliebige Felder; remind_in_days (Zahl oder null), archived, lead_id |
| POST | /:id/acknowledge |
{ snooze_days } verschiebt, sonst Kontakt heute + Impuls weg |
| DELETE | /:id |
nur archivierte (409 sonst) |
Die Zähler im Menü kommen aus GET /api/dashboard
(counts.suspects_open, counts.suspects_archived).