docs: Umlaute auch im erklaerenden Text der Codebloecke

Der Dateibaum im README und in 05/08, die Kommentare hinter # in den
Beispielbefehlen und die Beschriftungen in Mermaid-Sequenzdiagrammen sind
Lesetext, stehen aber in Codeblöcken - die erste Runde hat sie deshalb
übersprungen.

Die Befehle selbst und alle Bezeichner bleiben unverändert: ersetzt wurde
nur hinter "# ", hinter den zwei Leerzeichen des Dateibaums und hinter
": " in Mermaid-Nachrichten. ER-Labels wie bewertet_fuer sind Bezeichner
und bleiben, "systemctl daemon-reload" ebenfalls.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sascha Wolf
2026-08-11 09:48:11 +02:00
co-authored by Claude Opus 5
parent 7973dc07b1
commit 59080019d2
7 changed files with 33 additions and 33 deletions
+15 -15
View File
@@ -104,17 +104,17 @@ src/
lib/api.ts Fetch-Wrapper + typisierte Endpunkte
lib/auth.tsx Auth-Context (JWT im localStorage)
lib/theme.tsx Theme-Context (hell/dunkel/System)
lib/navigation.tsx Ansichtswechsel fuer tief liegende Komponenten
lib/navigation.tsx Ansichtswechsel für tief liegende Komponenten
lib/whisper.tsx Modelleinstellungen, Worker-Lebenszyklus, Zustand
lib/whisper.worker.ts Whisper im Web Worker (Laden und Erkennen)
lib/audio.ts Aufnahme zu 16-kHz-Mono-PCM
lib/dictation.tsx Aufnahme-Hook (Mikrofon, Dauer, Abbruch)
lib/imageCompress.ts Bilder im Browser auf 256 px verkleinern
components/
Sidebar.tsx Menue links (Opportunities, Kalender, Kontakte,
Sidebar.tsx Menü links (Opportunities, Kalender, Kontakte,
Scanner mit aufklappbaren Unterpunkten);
unten Whisper (alle) und Einstellungen (admin only)
Header.tsx Titel, Menue-Toggle, Umschalter fuer den Dark Mode
Header.tsx Titel, Menü-Toggle, Umschalter für den Dark Mode
Toast.tsx, LoginScreen.tsx
ui/Modal.tsx Modal + Bestaetigungsdialog
ui/UserAvatar.tsx Benutzerfoto, sonst Initiale auf der Benutzerfarbe
@@ -130,10 +130,10 @@ src/
OpportunityModal.tsx Formular inkl. Ansprechpartnern und Diktat
opportunityUi.tsx Phasenfarben, Aufklapptext, Chancenbalken
calendar/
Calendar.tsx Monat/Woche/Tag + Liste der naechsten Termine
Calendar.tsx Monat/Woche/Tag + Liste der nächsten Termine
EventModal.tsx Terminformular inkl. Teilnehmerauswahl
EventDetailModal.tsx Leseansicht mit klickbaren @-Mentions
UserDetailModal.tsx Detailfenster fuer markierte Benutzer
UserDetailModal.tsx Detailfenster für markierte Benutzer
mentions.tsx Mention-Parser, Renderer, @-Autocomplete
calendarUtils.ts Datums-, Raster- und Layoutlogik
leads/
@@ -147,12 +147,12 @@ src/
ScannerDashboard.tsx Kennzahlen, Filter, Match-Tabelle, Signalton
ScannerRejected.tsx Reiter Unpassend (status = rejected)
ScannerAgents.tsx Suchagenten inkl. CV-Upload
ScannerPortals.tsx Boersen-Konten, Cookie-Import, Verbindungstest
ScannerPortals.tsx Börsen-Konten, Cookie-Import, Verbindungstest
MatchDetailModal.tsx Detailfenster eines Treffers (beide Listen)
scannerUi.tsx Prozent-Badge, Status-Pillen, Formatierung
settings/
Settings.tsx Tabs Nutzerverwaltung / Mein Konto / Scanner
UserManagement.tsx Benutzer anlegen, bearbeiten, loeschen
UserManagement.tsx Benutzer anlegen, bearbeiten, löschen
ScannerSettings.tsx Alle Einstellungen des Projekt Scanners
ColorPicker.tsx Auswahl der persoenlichen Kalenderfarbe
lib/scannerApi.ts Typisierte Endpunkte unter /api/scanner
@@ -160,8 +160,8 @@ server/
src/server.js Express-App
src/db.js Pool + Schema-Init + Admin-Seed
src/schema.sql Idempotentes Schema
src/middleware/auth.js JWT-Pruefung, Admin-Guard
src/userFields.js Pruefung von Farbe und Foto (von auth und users genutzt)
src/middleware/auth.js JWT-Prüfung, Admin-Guard
src/userFields.js Prüfung von Farbe und Foto (von auth und users genutzt)
src/routes/ auth, users, leads, connections, events, opportunities,
scanner
src/scanner/ Portierter Projekt Scanner: Sequelize-Modelle,
@@ -313,8 +313,8 @@ ausschließlich in `perinco_scanner`:
cd /var/www/perinco_CRM/server
npm run scanner:import -- --dry-run # nur anzeigen
npm run scanner:import # Einstellungen, Portale, Agenten + CVs
npm run scanner:import -- --with-matches # zusaetzlich Projekte und Treffer
npm run scanner:import -- --force # vorhandene Zieldaten vorher loeschen
npm run scanner:import -- --with-matches # zusätzlich Projekte und Treffer
npm run scanner:import -- --force # vorhandene Zieldaten vorher löschen
```
Quelle kommt aus `LEGACY_*` in `server/.env`:
@@ -581,8 +581,8 @@ der Server hat wenig freien RAM und volles Swap.
```powershell
npm run build
powershell -File deploy/deploy.ps1 # laedt dist/ und server/src hoch
powershell -File deploy/deploy.ps1 -Deps # zusaetzlich npm install auf dem Server
powershell -File deploy/deploy.ps1 # lädt dist/ und server/src hoch
powershell -File deploy/deploy.ps1 -Deps # zusätzlich npm install auf dem Server
```
Ein Rollout mit neuen Backend-Paketen braucht `-Deps`.
@@ -590,11 +590,11 @@ Ein Rollout mit neuen Backend-Paketen braucht `-Deps`.
### Einmalige Scanner-Einrichtung (am 06.08.2026 erledigt)
```bash
# 1. .env ergaenzen: erzeugt SCANNER_ENCRYPTION_KEY, holt die LEGACY_*-Werte
# 1. .env ergänzen: erzeugt SCANNER_ENCRYPTION_KEY, holt die LEGACY_*-Werte
# aus "/var/www/Projekt Scanner/backend/.env", legt vorher ein .env.bak an
bash /tmp/scanner-setup.sh # aus deploy/scanner-setup.sh
# 2. Bestand uebernehmen
# 2. Bestand übernehmen
cd /var/www/perinco_CRM/server
npm run scanner:import -- --dry-run
npm run scanner:import -- --with-matches
+2 -2
View File
@@ -16,8 +16,8 @@ sequenceDiagram
participant AI as OpenAI gpt-4o-mini
participant M as SMTP
C->>P: faellig? (Intervall, Mo-Fr, 07-22 Uhr, Sperrfrist)
P->>P: laeuft schon einer? dann abbrechen
C->>P: fällig? (Intervall, Mo-Fr, 07-22 Uhr, Sperrfrist)
P->>P: läuft schon einer? dann abbrechen
P->>DB: aktive Agenten laden
P->>P: Keywords aller Agenten zusammenfuehren
P->>DB: Portal-Sessions laden
+1 -1
View File
@@ -34,7 +34,7 @@ stateDiagram-v2
[*] --> idle : Anmeldung
idle --> loading : "Sprachmodell laden" oder<br/>automatisch, wenn schon im Cache
loading --> ready : im Worker initialisiert
loading --> error : Abbruch, Haenger, kein Speicher
loading --> error : Abbruch, Hänger, kein Speicher
error --> loading : erneut versuchen
ready --> idle : "Sprachmodell löschen"
ready --> ready : Diktat benutzen
+4 -4
View File
@@ -105,20 +105,20 @@ src/
mailApi.ts Endpunkte unter /api/mail, UTC-Datumshelfer
auth.tsx Anmeldung, Benutzer, Rolle
theme.tsx Hell/Dunkel/System
navigation.tsx Ansichtswechsel fuer tiefe Komponenten
navigation.tsx Ansichtswechsel für tiefe Komponenten
whisper.tsx Modell, Worker-Lebenszyklus
dictation.tsx Aufnahme-Hook
audio.ts Aufnahme zu 16-kHz-Mono-PCM
imageCompress.ts Bilder vor dem Upload verkleinern
components/
Sidebar.tsx Menue inkl. aufklappbarer Gruppen (Kontakte, Scanner)
Sidebar.tsx Menü inkl. aufklappbarer Gruppen (Kontakte, Scanner)
Header.tsx Titel, Untertitel, Dark-Mode-Schalter
opportunities/ Kachel, Liste, Pipeline (Drag & Drop), Formular
calendar/ Monat/Woche/Tag, Termine (Drag & Drop), @-Mentions
leads/ Kachel, Liste, Netzwerkdiagramm (d3-force),
Vorbereich "Aus Mails" mit Dublettenabgleich
mail/ Postfachliste, Detail, Zuordnung, Kontakt-Vorschlaege
scanner/ Dashboard, Unpassend, Suchagenten, Boersen-Konten
mail/ Postfachliste, Detail, Zuordnung, Kontakt-Vorschläge
scanner/ Dashboard, Unpassend, Suchagenten, Börsen-Konten
settings/ Reiter: Nutzerverwaltung, Konto, Postfach, Scanner, Whisper
whisper/ Einrichtung der Spracherkennung
ui/ Modal, Avatare, Diktatfeld
+2 -2
View File
@@ -20,7 +20,7 @@ flowchart LR
```powershell
npm run build
powershell -File deploy/deploy.ps1 # dist + Backend
powershell -File deploy/deploy.ps1 -Deps # zusaetzlich npm install
powershell -File deploy/deploy.ps1 -Deps # zusätzlich npm install
powershell -File deploy/deploy.ps1 -SkipBuild # ohne neuen Build
```
@@ -95,7 +95,7 @@ cd /var/www/perinco_CRM/server && npx playwright install chromium
## Erststart des Scanners
```bash
bash /var/www/perinco_CRM/deploy/scanner-setup.sh # .env ergaenzen, Schluessel erzeugen
bash /var/www/perinco_CRM/deploy/scanner-setup.sh # .env ergänzen, Schlüssel erzeugen
cd /var/www/perinco_CRM/server
npm run scanner:import -- --dry-run
npm run scanner:import -- --with-matches
+5 -5
View File
@@ -53,7 +53,7 @@ ansehen - siehe *Oberfläche prüfen ohne Datenbank* weiter unten.
```bash
npm run lint # = tsc --noEmit, das ist die Wahrheit
npm run build # muss ohne Fehler durchlaufen
cd server && npm test # Pruefungen der Postfachanbindung
cd server && npm test # Prüfungen der Postfachanbindung
```
Automatische Tests gibt es nur für **einen** Bereich: `server/test/mail.test.mjs`
@@ -79,8 +79,8 @@ server/src/ Backend
db.js Verbindungspool, Schema-Init, Admin-Seed
settings.js crm_settings lesen und schreiben (ohne Geheimnisse)
routes/ ein Router je Ressource
middleware/auth.js JWT pruefen, Adminrechte
mail/ Postfach crm@perinco.de ueber Microsoft Graph
middleware/auth.js JWT prüfen, Adminrechte
mail/ Postfach crm@perinco.de über Microsoft Graph
scanner/ portierter Projekt Scanner (Sequelize, Playwright, OpenAI)
docs/ diese Dokumentation
deploy/ Apache-Vhosts, systemd-Unit, Deployskript
@@ -98,12 +98,12 @@ sequenceDiagram
participant D as MariaDB
K->>A: leadsApi.update(7, { status: 'Gewonnen' })
A->>A: Token anhaengen, Content-Type setzen
A->>A: Token anhängen, Content-Type setzen
A->>E: PATCH /api/leads/7
E->>M: requireAuth
M->>D: Benutzer laden, aktiv?
M->>R: req.user gesetzt
R->>R: Eingaben pruefen und normalisieren
R->>R: Eingaben prüfen und normalisieren
R->>D: UPDATE ... ; SELECT (angereichert)
R-->>A: 200 JSON
A-->>K: typisiertes Objekt
+4 -4
View File
@@ -114,7 +114,7 @@ sequenceDiagram
participant D as MariaDB
S->>D: last_run_at, has_more
Note over S: faellig? sonst nichts tun
Note over S: fällig? sonst nichts tun
S->>Y: runMailSync()
Y->>D: delta_link lesen
alt erster Lauf
@@ -125,15 +125,15 @@ sequenceDiagram
G-->>Y: Seite mit Metadaten + nextLink/deltaLink
loop je Nachricht
Y->>D: bekannt? Text vorhanden?
Note over Y: unbekannt und aelter als die Grenze? dann weiter
Note over Y: unbekannt und älter als die Grenze? dann weiter
opt Text fehlt
Y->>G: /messages/{id}?$select=body
end
Y->>D: upsert crm_mail_messages
opt neue Mail
Y->>D: Kontakt-Vorschlaege anlegen
Y->>D: Kontakt-Vorschläge anlegen
opt gesichert und Automatik an
Y->>D: Kontakt anlegen bzw. ergaenzen
Y->>D: Kontakt anlegen bzw. ergänzen
end
end
end