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>
75 lines
2.8 KiB
Markdown
75 lines
2.8 KiB
Markdown
# Dokumentation perinco CRM
|
|
|
|
Technische Dokumentation mit Funktionszeichnungen. Die Diagramme sind Mermaid und
|
|
werden von Gitea direkt gerendert.
|
|
|
|
**Neu hier?** Wer die Anwendung *benutzen* will, fängt bei
|
|
[07 Anleitung für Benutzer](07-anleitung-benutzer.md) an. Wer daran *entwickeln*
|
|
will, bei [08 Anleitung für Entwickler](08-anleitung-entwickler.md). Beide setzen
|
|
keine Vorkenntnisse voraus.
|
|
|
|
| Kapitel | Inhalt |
|
|
| --- | --- |
|
|
| [01 Architektur](01-architektur.md) | Topologie, Prozesse, Ports, Anfrageweg, Rollen |
|
|
| [02 Datenmodell](02-datenmodell.md) | Tabellen beider Datenbanken als ER-Diagramme |
|
|
| [03 Projekt Scanner](03-scanner.md) | Suchlauf von der Börse bis zum Treffer, Parallelbetrieb |
|
|
| [04 Diktat](04-diktat.md) | Spracherkennung im Browser, Modell-Lebenszyklus |
|
|
| [05 Frontend](05-frontend.md) | Ansichten, Menü, Komponentenkarte, Zustand |
|
|
| [06 Betrieb](06-betrieb.md) | Deployment, Umgebungsvariablen, Dienste, Störungssuche |
|
|
| [07 Anleitung für Benutzer](07-anleitung-benutzer.md) | Bedienung aller Bereiche, Schritt für Schritt |
|
|
| [08 Anleitung für Entwickler](08-anleitung-entwickler.md) | Einrichten, erweitern, bekannte Fallen |
|
|
| [09 Quellcode-Referenz](09-quellcode.md) | jede Datei, ihre Exporte und Zusagen |
|
|
| [10 Glossar](10-glossar.md) | Agent, Match, Lead, Opportunity, Status- und Portalwerte |
|
|
| [11 Postfachanbindung](11-postfach.md) | crm@perinco.de über Microsoft Graph, Kontakte aus Mails |
|
|
|
|
Die Designentscheidungen und die Messwerte zur Spracherkennung stehen im
|
|
[README des Projekts](../README.md).
|
|
|
|
## Das Ganze in einem Bild
|
|
|
|
```mermaid
|
|
flowchart TB
|
|
subgraph Browser
|
|
SPA["React-SPA<br/>Vite-Build"]
|
|
WSP["Whisper im Web Worker<br/>WebGPU / WASM"]
|
|
end
|
|
|
|
subgraph Server["Server 212.227.135.41"]
|
|
AP["Apache<br/>:443"]
|
|
API["Express-Backend<br/>127.0.0.1:5006"]
|
|
SCH["Scanner-Scheduler<br/>node-cron"]
|
|
MSCH["Mail-Scheduler<br/>node-cron"]
|
|
PW["Playwright<br/>Chromium"]
|
|
DB1[("MariaDB<br/>perinco_CRM")]
|
|
DB2[("MariaDB<br/>perinco_scanner")]
|
|
ALT["alte Scanner-App<br/>:5005"]
|
|
DB3[("MariaDB<br/>project_scanner")]
|
|
end
|
|
|
|
OAI["OpenAI<br/>gpt-4o-mini"]
|
|
BOERSE["Projektbörsen<br/>freelancermap, hays, ..."]
|
|
GRAPH["Microsoft Graph<br/>crm@perinco.de"]
|
|
|
|
SPA -->|"HTTPS /api"| AP
|
|
AP --> API
|
|
API --> DB1
|
|
API --> DB2
|
|
SCH --> PW
|
|
PW --> BOERSE
|
|
SCH --> OAI
|
|
SCH --> DB2
|
|
API -.-> SCH
|
|
API -.-> MSCH
|
|
MSCH -->|"Delta Query, nur lesend"| GRAPH
|
|
MSCH --> DB1
|
|
ALT --> DB3
|
|
ALT --> BOERSE
|
|
SPA -.->|"Audio bleibt im Browser"| WSP
|
|
|
|
classDef alt fill:#f7f7f7,stroke:#9a9a9a,stroke-dasharray: 4 3
|
|
class ALT,DB3 alt
|
|
```
|
|
|
|
Gestrichelt: die ursprüngliche Scanner-App, die bis zur Ablosung parallel
|
|
weiterläuft. Sie hat ihre eigene Datenbank und wird vom CRM nicht angefasst.
|