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>
This commit is contained in:
co-authored by
Claude Opus 5
parent
8b7ce448a6
commit
7973dc07b1
+16
-16
@@ -2,7 +2,7 @@
|
||||
|
||||
## Bausteine
|
||||
|
||||
Drei Teile, keiner davon spricht direkt mit einem anderen ausser ueber HTTP bzw.
|
||||
Drei Teile, keiner davon spricht direkt mit einem anderen ausser über HTTP bzw.
|
||||
SQL:
|
||||
|
||||
| Teil | Technik | Wo |
|
||||
@@ -11,8 +11,8 @@ SQL:
|
||||
| Backend | Express 4, mysql2 (CRM), Sequelize (Scanner) | `/var/www/perinco_CRM/server`, `127.0.0.1:5006` |
|
||||
| Datenbank | MariaDB 10.11 | `perinco_CRM` und `perinco_scanner` |
|
||||
|
||||
Der Browser spricht **nie** direkt mit MariaDB - deshalb ueberhaupt ein Backend.
|
||||
Das Backend bindet ausschliesslich auf `127.0.0.1` und ist von aussen nur ueber
|
||||
Der Browser spricht **nie** direkt mit MariaDB - deshalb überhaupt ein Backend.
|
||||
Das Backend bindet ausschließlich auf `127.0.0.1` und ist von außen nur über
|
||||
den Apache-Reverse-Proxy erreichbar.
|
||||
|
||||
## Topologie
|
||||
@@ -33,20 +33,20 @@ flowchart LR
|
||||
class U2,A2,E2,S2 alt
|
||||
```
|
||||
|
||||
Der Scanner im CRM haengt unter `/api/scanner` und braucht damit **keine eigene
|
||||
Apache-Regel**: alles laeuft ueber den bestehenden `/api`-Proxy. Dasselbe gilt fuer
|
||||
Der Scanner im CRM hängt unter `/api/scanner` und braucht damit **keine eigene
|
||||
Apache-Regel**: alles läuft über den bestehenden `/api`-Proxy. Dasselbe gilt für
|
||||
die Postfachanbindung unter `/api/mail` (siehe
|
||||
[11 Postfachanbindung](11-postfach.md)).
|
||||
|
||||
## Ausgehende Verbindungen
|
||||
|
||||
Das Backend spricht von sich aus mit drei fremden Diensten. Alle drei sind
|
||||
optional - fehlen die Zugangsdaten, laeuft die Anwendung ohne den jeweiligen
|
||||
optional - fehlen die Zugangsdaten, läuft die Anwendung ohne den jeweiligen
|
||||
Teil weiter.
|
||||
|
||||
| Ziel | Wofuer | Ausgeloest von |
|
||||
| Ziel | Wofür | Ausgelöst von |
|
||||
| --- | --- | --- |
|
||||
| Projektboersen | Scraping der Projektangebote | Scanner-Scheduler |
|
||||
| Projektbörsen | Scraping der Projektangebote | Scanner-Scheduler |
|
||||
| `api.openai.com` | Bewertung Lebenslauf gegen Projekt | Scanner-Pipeline |
|
||||
| `login.microsoftonline.com`, `graph.microsoft.com` | Postfach `crm@perinco.de` lesen | Mail-Scheduler |
|
||||
|
||||
@@ -80,10 +80,10 @@ sequenceDiagram
|
||||
E-->>B: JSON
|
||||
```
|
||||
|
||||
Bei `401` loescht das Frontend das Token und springt zurueck auf den
|
||||
Bei `401` löscht das Frontend das Token und springt zurück auf den
|
||||
Anmeldeschirm (`setUnauthorizedHandler` in `src/lib/api.ts`). Das Token wird bei
|
||||
jeder Anfrage neu gegen die Datenbank geprueft - ein deaktivierter Benutzer ist
|
||||
sofort draussen, ohne auf den Ablauf des Tokens zu warten.
|
||||
jeder Anfrage neu gegen die Datenbank geprüft - ein deaktivierter Benutzer ist
|
||||
sofort draußen, ohne auf den Ablauf des Tokens zu warten.
|
||||
|
||||
## Rollen
|
||||
|
||||
@@ -98,19 +98,19 @@ Bei den Mails darf jede Rolle lesen und zuordnen - `crm@perinco.de` ist ein
|
||||
gemeinsames Vertriebspostfach. Einrichten, Verbindungstest und manueller Abgleich
|
||||
sind Administratoren vorbehalten.
|
||||
|
||||
Die Rollenpruefung sitzt **doppelt**: das Menue blendet aus, was nicht erlaubt
|
||||
ist, und das Backend weist Zugriffe zusaetzlich mit `403` ab (`requireAdmin`).
|
||||
Die Rollenprüfung sitzt **doppelt**: das Menü blendet aus, was nicht erlaubt
|
||||
ist, und das Backend weist Zugriffe zusätzlich mit `403` ab (`requireAdmin`).
|
||||
Ausnahme ist `GET /api/users/directory` - die Benutzerliste brauchen alle Rollen
|
||||
fuer Netzwerkdiagramm, Zustaendigkeiten, @-Mentions, Teilnehmerauswahl und
|
||||
für Netzwerkdiagramm, Zuständigkeiten, @-Mentions, Teilnehmerauswahl und
|
||||
Kalenderfarben. Passwort-Hashes liefert der Endpunkt nie.
|
||||
|
||||
Ein Sicherheitsnetz im Backend verhindert, dass der letzte aktive Administrator
|
||||
degradiert, deaktiviert oder geloescht wird.
|
||||
degradiert, deaktiviert oder gelöscht wird.
|
||||
|
||||
## Belegte Ports auf dem Server
|
||||
|
||||
Der Rechner hostet weitere Dienste (n8n, Docker, ~15 Apache-Vhosts). Vor jeder
|
||||
Portbelegung `ss -tlnp` pruefen. Relevant hier:
|
||||
Portbelegung `ss -tlnp` prüfen. Relevant hier:
|
||||
|
||||
| Port | Dienst |
|
||||
| --- | --- |
|
||||
|
||||
Reference in New Issue
Block a user