Files
perinco-CRM/docs/07-anleitung-benutzer.md
T
Sascha WolfandClaude Opus 5 7973dc07b1 docs: echte Umlaute in der Dokumentation
893 Stellen in Fliesstext, Tabellen und Mermaid-Beschriftungen. Dazu die
sichtbaren ss-Fälle (ausschließlich, groß, außen, schließt, heißt,
draußen, weiße, anstoßen, Straße).

Nicht angetastet, damit die Doku weiter beschreibt, was wirklich in der
Datenbank steht:

- Codeblöcke und Code-Spans - dort stehen Bezeichner, SQL, Enum-Werte
  und Dateinamen: `mail_pool`, `'uebernommen'`, `extract.js`
- in Mermaid nur der Text in Anführungszeichen; Knotennamen, Pfeile und
  Werte wie source = 'Mail' bleiben, wie sie sind
- `empfaenger` im ER-Diagramm von crm_mail_contact_candidates: die
  Aufzählung dort nennt die Datenbankwerte, nicht die Anzeige

Die Menü-Skizze in der Benutzeranleitung zeigt jetzt die aufgeklappten
Kontakte mit "Aus Mails" samt Zähler.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-11 09:45:58 +02:00

387 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 07 Anleitung für Benutzer
Diese Anleitung setzt keine Vorkenntnisse voraus. Sie beschreibt, was die
Anwendung tut und wie man sie bedient.
## Was die Anwendung ist
Ein CRM für die Projektvermittlung. Es beantwortet vier Fragen:
| Frage | Bereich |
| --- | --- |
| Welche Geschäfte sind in Arbeit und was sind sie wert? | **Opportunities** |
| Wer ist wann wo, und wer ist beteiligt? | **Kalender** |
| Wen kennen wir, und wer kennt wen? | **Kontakte** |
| Welche Projekte auf den Börsen passen zu unseren Beratern? | **Scanner** |
## Anmelden
`https://pcrm.perinco.de`. Anmelden geht mit **Benutzername oder E-Mail** plus
Passwort. Die Sitzung hält 12 Stunden, danach fragt die Anwendung erneut.
Sagt die Meldung „Benutzername oder Passwort ist falsch", bleibt bewusst offen,
welches von beidem nicht stimmte - so kann über die Anmeldemaske niemand
Benutzernamen durchprobieren.
Es gibt zwei Rollen: **Administrator** sieht zusätzlich die Nutzerverwaltung und
die Scanner-Einstellungen. Alles andere ist für beide Rollen gleich.
## Sich zurechtfinden
```
┌──────────────┬───────────────────────────────────────────┐
│ Kategorien │ Titel der Ansicht [Hell/Dunkel] │
│ Opportunities├──────────────────────────────────────────┤
│ Kalender │ │
│ Kontakte ▾ │ Inhalt │
│ Alle Kont. │ │
│ Aus Mails 5│ │
│ Mails │ │
│ Scanner ▾ │ │
│ Dashboard │ │
│ Unpassend │ │
│ Suchagenten│ │
│ Börsen-… │ │
├──────────────┤ │
│ Einstellungen│ │
├──────────────┤ │
│ [Foto] Name │ │
└──────────────┴───────────────────────────────────────────┘
```
* Der Knopf mit den drei Strichen oben links klappt das Menü auf Symbolbreite
zusammen - hilfreich auf kleinen Bildschirmen.
* Rechts oben schaltet zwischen hellem und dunklem Design. Ein **Doppelklick**
auf den Schalter folgt wieder der Systemeinstellung.
* Die Menüpunkte **Kontakte** und **Scanner** klappen beim Anklicken ihre
Unterpunkte auf. Die Zahl neben *Aus Mails* sagt, wie viele Funde aus dem
Postfach noch auf eine Entscheidung warten.
## Opportunities
Der Startbereich: eine Opportunity ist ein Geschäft in Arbeit. Oben rechts
wechselt man die Darstellung:
| Ansicht | wofür |
| --- | --- |
| **Kachel** | Überblick mit Volumen, Tagessatz, Laufzeit, letzter Interaktion |
| **Liste** | viele Einträge vergleichen, Spaltenköpfe sortieren |
| **Pipeline** | Fortschritt durch die Phasen, Karten per Maus verschieben |
**Volumen** rechnet die Anwendung selbst: Tagessatz x Personentage. Das
**gewichtete** Volumen multipliziert das noch mit der Abschlusswahrscheinlichkeit.
Beide Zahlen stehen live im Formular, auf jeder Karte, als Summe über der Liste,
je Pipeline-Spalte und in der Kopfzeile.
Zu jeder Opportunity gehören beliebig viele **Ansprechpartner** aus den
Kontakten, jeder mit eigener Rolle („Entscheider", „Fachbereich", …).
Ändern und löschen darf der **Ersteller**, der **Zuständige** und jeder
**Administrator**. Wer keines davon ist, bekommt eine Fehlermeldung - das prüft
der Server, nicht nur die Oberfläche.
Auf dem Tablet oder ohne Lust auf Ziehen: die Phase lässt sich auch über das
Auswahlfeld direkt auf der Karte ändern.
## Kalender
Ein **gemeinsamer** Teamkalender - alle sehen dieselben Termine, jeder darf
eintragen.
* **Monat, Woche, Tag** oben umschalten, `Heute` und die Pfeile blättern.
* Klick auf einen Monatstag oder eine Stundenzelle legt sofort einen Termin an.
* Klick auf einen Wochentagskopf springt in die Tagesansicht.
* **Verschieben per Ziehen**: Termin anfassen und auf einen anderen Tag oder eine
andere Uhrzeit ziehen. Im Monatsraster wechselt nur der Tag, die Uhrzeit bleibt
stehen; in Woche und Tag rastet der Termin auf **15 Minuten** ein, und eine
gestrichelte Linie zeigt vorab die neue Startzeit. Die **Dauer bleibt** immer
gleich, und der Punkt, an dem man den Termin angefasst hat, wandert mit. Ziehen
darf nur, wer den Termin auch ändern darf.
* **Farben** gehören zum Ersteller. Die eigene Farbe ändert man unter
*Einstellungen → Mein Konto*; die Legende unter dem Kalender zeigt, welche
Farbe zu wem gehört.
* **Teilnehmer** erscheinen mit Foto oder Initiale und sind anklickbar.
* **@-Erwähnungen**: In der Beschreibung `@` tippen, dann Kontakte *und*
Benutzer aus der Vorschlagsliste wählen (Pfeiltasten, Enter). In der
Leseansicht sind sie klickbar - Kontakte öffnen die Kontaktkarte, Benutzer ein
Detailfenster mit nächsten Terminen.
* Rechts stehen die **nächsten Termine**, nach Tagen gruppiert. Vergangenes
fliegt aus der Liste, bleibt im Kalender aber erhalten.
Ändern und löschen darf nur der **Ersteller** oder ein **Administrator**.
Anlegen darf jeder.
## Kontakte
Drei Ansichten, davon eine besondere:
| Ansicht | wofür |
| --- | --- |
| **Kachel** | Überblick mit Foto, Firma, Status |
| **Liste** | sortierbar, viele Einträge |
| **Netzwerk** | wer steht mit wem in Kontakt |
Im **Netzwerk** sind Kreise Kontakte (Farbe = Status, Größe = Anzahl
Verbindungen) und Quadrate Benutzer, die Kontakte angelegt haben. Grüne Linien
verbinden Kontakte untereinander, graue gestrichelte den Ersteller mit seinem
Kontakt.
Bedienung: Hintergrund ziehen verschiebt, Mausrad zoomt, einen Knoten ziehen
setzt ihn fest (grüner Punkt), Doppelklick löst ihn wieder. Über *Verbindung
erstellen* zwei Kontakte anklicken, um eine Verbindung anzulegen; `Esc` bricht ab.
Suche und Statusfilter wirken auch hier.
Sobald Kontakte aus dem Postfach übernommen wurden, erscheint neben dem
Statusfilter ein **Herkunftsfilter**: *Aus Mails übernommen* zeigt nur die aus
dem Postfach stammenden, *Selbst angelegt* nur die von Hand erfassten.
### Aus Mails
Der Menüpunkt *Kontakte* klappt zwei Unterpunkte auf: *Alle Kontakte* und
*Aus Mails*. Der Zähler am Menüpunkt sagt, wie viele Funde warten.
In *Aus Mails* stehen die Personen, die der Postfachabgleich in Mails gefunden
hat. **Sie sind noch keine Kontakte**: sie erscheinen nicht in der Kontaktliste,
nicht in Opportunities und nicht im Kalender. Jede Karte zeigt alle gefundenen
Angaben und darunter, aus welcher Mail sie stammen.
Zwei Fälle:
* **Weiße Karte** - die Person ist neu. *In Kontakte übernehmen* legt sie als
Kontakt an, mit Herkunft „Mail".
* **Gold markierte Karte** - es gibt sie in den Kontakten schon, erkannt an der
E-Mail-Adresse oder am Namen. Gold hinterlegte Felder weichen ab; darunter steht
durchgestrichen, was bisher im Kontakt stand. *Kontakt aktualisieren* öffnet
die Feldauswahl: angehakt sind zunächst nur die Lücken, also Felder, die im
Kontakt leer sind. Ein Wert, der etwas Gepflegtes ersetzen würde, ist als
*überschreibt* gekennzeichnet und muss bewusst angehakt werden - die Angabe
kann aus einer alten Signatur stammen. *Neu anlegen* erzeugt trotz Dublette
einen zweiten Kontakt, etwa wenn es zwei Personen mit demselben Namen gibt.
Weitere Bedienelemente:
* **Alle neuen übernehmen** legt alle weißen Karten auf einmal als Kontakte an;
gold markierte bleiben unberührt.
* **Eintrag hier behalten** - normalerweise verschwindet ein Eintrag aus *Aus
Mails*, sobald er als Kontakt geführt wird. Mit dem Haken bleibt er stehen.
* Das **Papierkorbsymbol** entfernt einen Fund. Die Mails bleiben erhalten; taucht
die Person in einer neuen Mail auf, erscheint sie hier wieder.
* Der Filter wählt zwischen allen Einträgen, nur neuen Personen und nur
Dubletten.
## Mails
Das gemeinsame Postfach `crm@perinco.de` liegt hier im CRM. Der Zugriff ist
**nur lesend** - im Postfach selbst wird nichts verändert, keine Mail als gelesen
markiert, nichts gelöscht. Antworten geht weiter in Outlook; der Link *In Outlook
öffnen* springt direkt zur Mail.
Zwei Reiter oben:
### Postfach
Links die Mailliste, rechts die gewählte Mail. Die Kennzeichen an einem
Listeneintrag sagen, was noch zu tun ist:
| Kennzeichen | Bedeutung |
| --- | --- |
| **1x zugeordnet** | hängt an einer Opportunity oder einem Kontakt |
| **2 Kontakte** | so viele Kontakt-Vorschläge warten noch auf eine Entscheidung |
| 📎 | Anhänge vorhanden (im Postfach, nicht im CRM) |
Das Auswahlfeld filtert die Liste. **Nicht zugeordnet** ist die eigentliche
Arbeitsliste: alles, was noch nirgends hängt. Die Suche geht über Betreff,
Absender und den kompletten Mailtext; mehrere Wörter wirken als ein Suchbegriff.
**Zuordnen** hängt die Mail an eine Opportunity und/oder einen Kontakt. Der
Dialog schlägt oben vor, was zu den Mailadressen passt - ein Klick auf den
Vorschlag genügt. Beides gleichzeitig ist möglich, jede Zuordnung lässt sich
einzeln wieder mit dem **x** lösen.
Beim Mailinhalt sind externe Bilder zunächst gesperrt. Das ist Absicht: geladene
Bilder melden dem Absender, dass die Mail geöffnet wurde. Über *Externe Bilder
laden* geht es pro Mail. *Größer* klappt den Inhalt auf, *Nur Text anzeigen*
zeigt die Rohfassung ohne Formatierung.
Steht an einer Mail **Im Postfach gelöscht**, wurde sie in Outlook entfernt. Im
CRM bleibt sie erhalten, damit Zuordnungen nicht verloren gehen.
### Kontakt-Vorschläge
Aus Absender, Empfängerliste und Signatur jeder Mail liest die Anwendung
Kontaktdaten. Wer eine echte Mailadresse hat und aus Absender oder
Empfängerliste stammt, landet **automatisch** im Vorbereich
[Aus Mails](#aus-mails) - nicht direkt in den Kontakten. Alles Unsichere landet
hier - typischerweise Personen, die nur mit Telefonnummer im Text genannt werden.
Der Balken rechts ist die Zuversicht: je voller und grüner, je verlässlicher die
Angaben. Das Kennzeichen darunter sagt, woher sie stammen (*Absender*,
*Empfänger*, *Signatur*, *Im Text genannt*).
Zwei Knöpfe:
* **Als Kontakt anlegen** - es entsteht sofort ein richtiger Kontakt mit Herkunft
„Mail", nicht nur ein Eintrag in *Aus Mails*: hier hat ja schon jemand
hingesehen und entschieden.
* **Ergänzen** (statt „anlegen", wenn **Bereits vorhanden** dransteht) - der
vorhandene Kontakt wird um die fehlenden Angaben erweitert. Was schon gepflegt
ist, bleibt unangetastet.
* **Verwerfen** - der Vorschlag verschwindet aus der Liste.
Eigene Kollegen (`@perinco.de`) und Funktionsadressen wie `info@` oder
`no-reply@` werden nie vorgeschlagen.
Ist die Liste leer und die automatische Übernahme an, ist das der Normalzustand:
es gab nichts zu entscheiden.
## Scanner
Durchsucht Projektbörsen und bewertet jeden Fund mit KI gegen die Lebensläufe
der Berater.
### Dashboard
Oben vier Kennzahlen, darunter die Trefferliste. Der Knopf **Jetzt scannen**
startet sofort einen Suchlauf; läuft schon einer, sagt die Anwendung das.
Die Filterzeile:
| Feld | Bedeutung |
| --- | --- |
| **Zeitraum** | wie alt darf das Projekt sein (Standard: letzte 24 Stunden) |
| **Agent** | nur Treffer eines Beraters |
| **Anzeige ab %** | schwächere Treffer ausblenden |
| **Hinweis ab %** | ab wann Signalton und E-Mail |
Die letzten zwei Werte werden **gespeichert** und gelten auch beim nächsten Mal
und in den Einstellungen. Rechts daneben steht `sichtbar / gesamt`.
Ein Klick auf eine Zeile öffnet die Details: Projektbeschreibung, die
KI-Auswertung mit Pro und Contra, dazu die Knöpfe *Gesehen*, *Beworben*,
*Zurück auf Neu*, *Börse öffnen*, *Passt nicht* und *Treffer löschen*.
Über der Liste steht der Betriebszustand: *automatische Suche aktiv*, *nur
manuelle Suche*, *pausiert* oder *Suchlauf läuft*.
### Ton bei neuen Treffern
Findet der Scanner einen Treffer über dem Wert *Hinweis ab %*, spielt das
Dashboard einen Signalton und zeigt ein Hinweisbanner. Drei Dinge muss man dazu
wissen:
1. **Nur im Dashboard.** Wer auf Opportunities oder Kontakte wechselt, hört
nichts - und bekommt es auch später nicht nachgemeldet.
2. **In einem anderen Browsertab** klingelt es weiter, aber verzögert: der
Browser bremst versteckte Tabs auf etwa eine Prüfung pro Minute. Ausserdem
muss man vorher einmal irgendwo auf der Seite geklickt haben, sonst lässt der
Browser keinen Ton zu.
3. **Ist der Tab geschlossen, passiert nichts.** Wer unabhängig vom Browser
benachrichtigt werden will, schaltet die **E-Mail** in den Einstellungen ein.
### Unpassend
Alles, was über *Passt nicht* aussortiert wurde. Von hier bringt *Zurück ins
Dashboard* einen Treffer wieder zurück, oder er wird endgültig gelöscht.
### Suchagenten
Ein Suchagent ist ein Berater:
| Feld | wofür |
| --- | --- |
| **Name** | erscheint an jedem Treffer |
| **E-Mail** | Ziel der Benachrichtigung für diesen Berater |
| **Suchbegriffe** | kommagetrennt, damit wird auf den Börsen gesucht |
| **Ausschluss-Begriffe** | kommagetrennt; Projekte mit diesen Wörtern werden übersprungen |
| **Lebenslauf (PDF)** | wird als Text ausgelesen und gegen jedes Projekt bewertet |
| **aktiv** | nur aktive Agenten suchen im Hintergrund |
Ohne Lebenslauf kann ein Agent nichts bewerten. Die Ausschluss-Begriffe sind
nicht nur Bequemlichkeit: sie greifen **vor** der KI-Bewertung und sparen damit
echte Kosten. „Arbeitnehmerüberlassung" oder „Festanstellung" sind typische
Kandidaten.
> **Löschen nimmt die Treffer mit.** Wird ein Suchagent gelöscht, verschwinden
> alle seine bisherigen Treffer und sein Lebenslauf mit ihm - die Datenbank räumt
> das automatisch auf. Die gefundenen **Projekte** bleiben erhalten, sie gehören
> nicht zu einem einzelnen Agenten. Wer einen Berater nur vorübergehend aus der
> Suche nehmen will, setzt ihn besser auf **inaktiv** statt ihn zu löschen: dann
> sucht er nicht mehr, die Treffer bleiben aber sichtbar.
### Börsen-Konten
Zeigt für jede Börse, ob die Verbindung steht. Zwei Arten:
* **Öffentliche Portale** (Hays, Etengo, …) brauchen keinen Login.
* **Geschützte Portale** (Freelance.de, Freelancermap.de) brauchen eine
angemeldete Sitzung. Dafür exportiert man die Cookies mit der
Browser-Erweiterung *Cookie-Editor* als JSON und fügt sie unter
**Cookie-Import** ein.
*Jetzt prüfen* testet eine Verbindung sofort. Steht dort **Abgelaufen /
CAPTCHA**, hilft nur ein neuer Cookie-Import.
Die Zugangsdaten (Benutzername, Passwort) sind optional - der Scraper versucht
damit im Notfall eine eigene Anmeldung. Passwörter liegen verschlüsselt in der
Datenbank.
## Einstellungen
| Reiter | Wer | Inhalt |
| --- | --- | --- |
| **Nutzerverwaltung** | Admin | Benutzer anlegen, bearbeiten, deaktivieren, löschen |
| **Mein Konto** | alle | Foto, Kalenderfarbe, Passwort ändern |
| **Postfach** | Admin | Verbindung zu Microsoft 365, Abgleich, Kontaktübernahme |
| **Scanner** | Admin | Suchintervall, Schwellenwerte, KI-Schlüssel, Ton, E-Mail |
| **Whisper** | alle | Spracherkennung für das Diktat einrichten |
Im Reiter **Scanner** steht das **Suchintervall (Minuten)** - also wie oft der
Hintergrund-Scanner die Börsen durchsucht.
Darüber der Hauptschalter **Scanner aktiviert**. Ist er aus, sucht die Anwendung
nicht mehr: kein Lauf im Hintergrund, und *Jetzt scannen* antwortet mit einem
Hinweis statt zu starten. Der Zustand steht auch oben im Scanner-Dashboard, damit
man nicht rätselt, warum keine neuen Treffer kommen.
Im Reiter **Postfach** steht oben, ob die Verbindung zu Microsoft 365 steht.
**Verbindung testen** prüft beides: die Anmeldung *und* den tatsächlichen
Zugriff auf `crm@perinco.de`. Schlägt etwas fehl, nennt die Meldung den
wahrscheinlichen Grund. Darunter lassen sich Intervall, Zeitraum des ersten
Durchlaufs und die automatische Kontaktübernahme einstellen.
Die Zugangsdaten selbst stehen **nicht** in der Oberfläche, sondern in der
Serverkonfiguration - sie werden beim Start gelesen. Fehlt einer, sagt die Seite
welcher.
Foto und Kalenderfarbe werden **sofort** gespeichert, ohne Speichern-Knopf. Der
letzte aktive Administrator kann sich nicht selbst degradieren oder löschen -
das verhindert der Server.
## Diktat
Überall, wo längerer Text entsteht, sitzt ein Mikrofon-Knopf. Beim ersten Mal
steht dort *Diktat einrichten* und führt in die Einstellungen: dort einmal
**Sprachmodell laden** klicken, rund 759 MB, danach ist es dauerhaft in diesem
Browser.
Die Erkennung läuft **komplett auf dem eigenen Rechner**. Aufnahmen verlassen
das Gerät nicht und werden nirgends gespeichert. Auf einem anderen Rechner oder
in einem anderen Browser fällt der Download erneut an - er gehört zum Browser,
nicht zum Benutzerkonto.
## Wenn etwas nicht klappt
| Beobachtung | Ursache und Abhilfe |
| --- | --- |
| „Sitzung abgelaufen" | 12 Stunden vorbei, neu anmelden |
| Trefferliste ist leer | *Anzeige ab %* zu hoch oder *Zeitraum* zu kurz |
| Kein Ton bei Treffern | Dashboard offen? Einmal auf der Seite geklickt? Wert *Hinweis ab %* erreicht? |
| Mikrofon-Knopf fehlt | kein Mikrofon oder keine HTTPS-Verbindung |
| Börse zeigt „Abgelaufen" | Cookies neu importieren |
| „Ein Suchlauf läuft bereits" | kurz warten, es läuft nur einer zur Zeit |
| Ändern nicht erlaubt | bei Opportunities darf nur Ersteller, Zuständiger oder Admin |
| Keine Mails sichtbar | steht oben ein Hinweisbalken? Sonst Admin bitten, in *Einstellungen &rarr; Postfach* die Verbindung zu testen |
| „Erstabgleich läuft noch" | ältere Mails werden in mehreren Durchläufen nachgeholt, die Liste wächst noch |
| Bilder in einer Mail fehlen | *Externe Bilder laden* klicken - sie sind absichtlich gesperrt |
| Kontakt-Vorschläge bleiben leer | Normalfall: sichere Vorschläge wandern automatisch nach *Kontakte › Aus Mails* und tauchen hier nicht auf |