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:
co-authored by
Claude Opus 5
parent
7973dc07b1
commit
59080019d2
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user