diff --git a/README.md b/README.md index baaeeb6..205246d 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/docs/03-scanner.md b/docs/03-scanner.md index 37f9bf9..9eea638 100644 --- a/docs/03-scanner.md +++ b/docs/03-scanner.md @@ -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 diff --git a/docs/04-diktat.md b/docs/04-diktat.md index ca7750e..1b0aa2f 100644 --- a/docs/04-diktat.md +++ b/docs/04-diktat.md @@ -34,7 +34,7 @@ stateDiagram-v2 [*] --> idle : Anmeldung idle --> loading : "Sprachmodell laden" oder
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 diff --git a/docs/05-frontend.md b/docs/05-frontend.md index 038a53c..0d34b5d 100644 --- a/docs/05-frontend.md +++ b/docs/05-frontend.md @@ -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 diff --git a/docs/06-betrieb.md b/docs/06-betrieb.md index fc25c91..1187f4f 100644 --- a/docs/06-betrieb.md +++ b/docs/06-betrieb.md @@ -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 diff --git a/docs/08-anleitung-entwickler.md b/docs/08-anleitung-entwickler.md index 6f7c9cb..2602b6c 100644 --- a/docs/08-anleitung-entwickler.md +++ b/docs/08-anleitung-entwickler.md @@ -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 diff --git a/docs/11-postfach.md b/docs/11-postfach.md index 72121a2..075ecec 100644 --- a/docs/11-postfach.md +++ b/docs/11-postfach.md @@ -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