Files
ChristophandClaude Opus 5.5 f62541ff13
tests / ci (push) Canceled after 0s
AP0 Schritte 0.4 und 0.6: Antworten vom 05.10. und Claude Design 0.3 eingearbeitet
- Fragenliste: erste Antworten von BauIn und ITM eingetragen, übrige Fragen auf „gestellt“
- Anmeldung mit eigenem Passwort, 2FA später Pflicht; keine E-Mails; Mehrfach-Upload ohne ZIP
- Nur Produktionsschlüssel: Tests rufen die echte API nie auf
- Stellungnahme BÜW und Österreich in Phase 2; „Vor dem Livegang zu klären“ in AP11
- Claude Design Stand 0.3 abgeglichen (AP13), Prüfmaske v4 in AP6
- Gitea von ITM als Push-Mirror eingetragen

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 15:54:18 +02:00

93 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AP3 – Anbindung KI-API ITM
| | |
|---|---|
| Status | in Arbeit; Schritte ab 3.2 detailliert, warten auf Freigabe |
| Aufwand | 0,5 PW offen |
| Zeitraum | KW 42 (Schnelltest, Einstellungen), KW 44 (Clients, Jobs) |
| Meilenstein | M1/M2 |
| Freigabe | offen |
## Ziel
Die Anwendung nutzt Dokumentdienst, `embed`, `rerank` und `chat` zuverlässig. Sie beachtet die
Grenzen der API und protokolliert jeden Aufruf ohne Inhalte und ohne Schlüssel. Die Schlüssel
liegen verschlüsselt in der Datenbank.
## Umfang
**Enthalten:**
- Schlüsselverwaltung, Clients, Hintergrund-Jobs, Ratenbegrenzung, Wiederholungen,
Verbrauchsprotokoll, Statusprüfung
**Nicht enthalten:**
- Indexierung (AP4)
- Prompts für die Beurteilung (AP7)
## Voraussetzungen
- C4–C8 (Modelle, Grenzen); Schlüssel im Windows-Tresor, Proxy läuft (du)
- C1 (05.10.): Es gibt nur Schlüssel für die Produktion. Entwicklung, Staging und Produktion
teilen sich Zählung, Kosten und das Limit von 120 Anfragen/min. Deshalb:
- Automatische Tests und CI rufen die echte API nie auf (`Http::fake`).
- Live-Aufrufe nur im Schnelltest (3.2) und gezielt, mit kleinen Testtexten.
- Getrennte Schlüssel für Vorrang (C8) sind nicht zu erwarten; der Ratenbegrenzer (E3.1) muss
das allein leisten.
- AP1 Schritt 1.7 (Rechte für Verwaltung)
## Entscheidungen
| Nr. | Frage | Vorschlag | Entschieden |
|---|---|---|---|
| E3.1 | Anteil der 120 Anfragen/min für interaktive Suche | 40/min reserviert, Rest für Hintergrund-Jobs; nach C8 anpassen | offen |
| E3.2 | Standardmodell für einfache Aufgaben | `chat-noreasoning`, `chat` nur für die Beurteilung (AP7) | offen |
## Schritte
- [x] **3.1** Schlüssel-Proxy (`tools/ki-proxy`), Sperr-Hook für Claude Code, gitleaks-Regel
- [ ] **3.2** Schnelltest über den Proxy, wenn du ihn gestartet hast. Nur Testtexte:
- Modellverzeichnis
- Dimension und Normalisierung von `embed` messen
- `rerank`
- `chat` mit Streaming
→ `docs/tests/ki-api-schnelltest.md`
- [ ] **3.3** Einstellungen KI-Schnittstelle:
- Tabelle mit verschlüsselten Feldern
- Verwaltungsmaske: Basis-URL, drei Schlüsselfelder (nur beschreibbar, Anzeige `zki_…a1b2`),
Modellnamen, „Verbindung prüfen“
- Protokolleintrag bei Änderung (ohne Wert)
- In der Entwicklung zeigt die Basis-URL auf den Proxy, die Schlüssel bleiben leer.
- [ ] **3.4** Clients:
- `Dokumentdienst` (einreichen, Status, Ergebnis Markdown/JSON)
- `Embeddings` (Stapel; Instruct-Präfix für Suchanfragen nach C4)
- `Rerank`
- `Chat` (normal und Streaming)
- [ ] **3.5** Jobs und Ausfallsicherheit:
- Ergebnisse abfragen im Abstand von 2 bis 10 s
- Job-ID gleich nach dem Einreichen speichern, keine Doppel-Einreichung nach Timeout
- Wiederholung bei 429 (Retry-After) und 5xx mit Backoff
- Ratenbegrenzer nach E3.1
- [ ] **3.6** Verbrauchsprotokoll `ki_aufrufe`: Dienst, Modell, Dauer, Status, Tokens, Bezug.
Keine Inhalte, keine Header.
- [ ] **3.7** Statusprüfung: Artisan-Befehl und Anzeige im Systemstatus (erreichbar, Antwortzeit,
Auslastung); Alarm über AP11
## Abnahmekriterien
- „Verbindung prüfen“ zeigt alle Dienste grün.
- Die Schlüssel stehen nirgends im Klartext: nicht in der DB, nicht im Log, nicht in der Antwort
der Maske.
- Ein Ausfall der API stoppt keine Seite; die Jobs laufen später weiter.
## Tests
- `Http::fake` für 200, 202, 409, 410, 404, 429, 5xx, Timeout und Streaming
- Ratenbegrenzer greift
- Log und Protokoll enthalten keinen Schlüssel
- Verwaltungsmaske nur für Administratoren
## Risiken
- Antworten von ITM fehlen (C4–C8): Werte messen (3.2) und Standardwerte konfigurierbar halten.