Files
ICON-CRM/docs/13-suspects.md
T
schakal00783andClaude Opus 5.5 78d6bef52c Suspects: Spalte Mail und Löschen direkt in der Tabelle
- email als Symbol mit Adresse im Tooltip, Klick öffnet mailto:
  (Spalte per migrateColumns nachgezogen)
- Löschen-Knopf am Zeilenende; Server erlaubt Löschen jetzt auch
  ohne vorheriges Archivieren

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 12:33:32 +02:00

4.6 KiB
Raw Blame History

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
Mail email nach dem Speichern nur ein Briefsymbol, Adresse im Tooltip, Klick öffnet das Mailprogramm
LinkedIn 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, Mail, 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 und Löschen

Archivierte und in Leads übernommene Suspects, neueste zuerst. Zurückholen stellt die Zeile wieder in die Tabelle, Endgültig löschen entfernt sie.

Löschen geht auch direkt in der Tabelle (rotes Symbol am Zeilenende) – beide Wege fragen vorher nach. Anfangs war Löschen nur aus dem Archiv möglich; auf Wunsch vom 29.09.2026 gibt es den Knopf jetzt auch in der Tabelle.

Tabelle icon_suspects

Spalte Typ Bedeutung
id INT
name, role, company VARCHAR(190)
email VARCHAR(190) ohne mailto:; nachträglich per migrateColumns ergänzt
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 endgültig löschen (aus Tabelle oder Archiv)

Die Zähler im Menü kommen aus GET /api/dashboard (counts.suspects_open, counts.suspects_archived).