KI: Modellauswahl als Dropdown + Abgleich mit Produktionsstand

Einstellungen -> KI: statt freiem Modellnamen ein Dropdown mit den
Chat-Modellen, die der hinterlegte OpenAI-Schluessel nutzen darf.

- Backend: listAiModels() fragt OpenAI GET /v1/models, filtert auf
  Chat-Modelle (gpt-*, o*, chatgpt-*; ohne Embedding/Audio/Bild/Instruct
  usw.), neueste zuerst, 10 min im Speicher (Schluesselwechsel laedt neu)
- Neuer Endpunkt GET /api/ai/models (admin)
- Frontend: aktives Modell bleibt waehlbar, auch wenn nicht mehr gelistet;
  Rueckfall auf Textfeld, wenn die Liste nicht abrufbar ist
- Doku: 05-ki (Modellauswahl mit Ablaufdiagramm), 10-api, 08-anleitung

Zieht ausserdem den bereits live laufenden, bisher nicht eingecheckten
Stand nach (perinco-Kontaktabgleich/MergeDialog, Projektmargen,
Whisper-Anpassungen u. a.). Repo entspricht damit icrm.icon-experts.de.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
schakal00783
2026-09-23 10:26:30 +02:00
co-authored by Claude Opus 5.5
parent 3f25355a6d
commit cbac02a96a
40 changed files with 1476 additions and 80 deletions
+28 -4
View File
@@ -159,9 +159,33 @@ Zwei Untermenüs:
## Laufende Projekte
Titel, Kunde, Experte, Zeitraum, Status und Notizen. Die Notizen sind ein
WYSIWYG-Feld – im übernommenen Bestand steht dort ein Kopfblock aus dem alten
CRM und darunter der Ausschreibungstext.
Titel, Kunde, Experte, Zeitraum, Status, Tagessatz und Notizen. Die Notizen
sind ein WYSIWYG-Feld – im übernommenen Bestand steht dort ein Kopfblock aus dem
alten CRM und darunter der Ausschreibungstext.
### Marge
Jede Projektkachel weist die Marge aus, und in der Projektkarte steht die
Rechnung aufgeschlüsselt:
| Zeile | Woher |
| --- | --- |
| Tagessatz Kunde | Feld **Tagessatz** am Projekt |
| Stundensatz Berater | Kontaktkarte des Experten |
| Kosten (8 h) | Stundensatz × 8 |
| Marge | Tagessatz − Kosten, dazu der Prozentsatz vom Tagessatz |
**Ein Tag sind 8 Stunden.** Hat der Berater einen Remote- *und* einen
Vor-Ort-Satz, wird mit dem **Remote-Satz** gerechnet; fehlt der, mit dem
Vor-Ort-Satz. Welcher benutzt wurde, steht daneben.
Die Farbe ist eine schnelle Ampel: grün ab 25 %, gelb darüber bis 0, rot bei
negativer Marge.
Fehlt der Tagessatz oder hat der Berater keinen Stundensatz, steht statt einer
Zahl der Grund dort – eine leere Zeile ließe offen, ob die Marge null oder
unbekannt ist. Der Tagessatz wird am Projekt gepflegt, die Stundensätze beim
Kontakt (*Kontakt → Stundensatz vor Ort / remote*).
## Historie
@@ -191,7 +215,7 @@ nichts gespeichert. Details: [04 Diktat](04-diktat.md).
| --- | --- | --- |
| Nutzerverwaltung | Administratoren | Benutzer anlegen, Rolle, aktiv/inaktiv |
| Stammdaten | Administratoren | Auswahllisten: Branchen, Arten der Kontakte |
| KI | Administratoren | OpenAI-Schlüssel, Modell, Verbindungstest |
| KI | Administratoren | OpenAI-Schlüssel, Modell (Auswahlliste der für den Schlüssel verfügbaren Modelle), Verbindungstest |
| Mein Konto | alle | Foto, Farbe, Passwort, Design |
| Diktat | alle | Spracherkennung einrichten |