Skip to content

Commit c20ab6c

Browse files
committed
Logging for suggestions
1 parent e550a84 commit c20ab6c

File tree

7 files changed

+974
-94
lines changed

7 files changed

+974
-94
lines changed

AI_LOGGING_README.md

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
# AI Suggestion Logging - Debugging Guide
2+
3+
## Was wurde hinzugefügt?
4+
5+
### 1. Schema-Erweiterung (`convex/schema.ts`)
6+
Eine neue Tabelle `aiSuggestionLogs` wurde hinzugefügt, die folgende Informationen für jede AI-Anfrage speichert:
7+
- Alle Input-Parameter (familyId, mealType, preferences, etc.)
8+
- Den generierten Prompt
9+
- Die Rohausgabe von OpenAI
10+
- Das geparste Ergebnis
11+
- Erfolg/Fehler-Status
12+
- Timestamp für chronologische Sortierung
13+
14+
### 2. Logging-Funktionen (`convex/aiSuggestions.ts`)
15+
- **`logAISuggestion`**: Interne Mutation zum Speichern der Logs
16+
- **`getUserByEmail`**: Hilfsfunktion um User-ID zu ermitteln
17+
- **`getAISuggestionLogs`**: Query um Logs zu durchsuchen
18+
- **`getAISuggestionLogDetail`**: Query für detaillierte Log-Ansicht
19+
20+
### 3. Enhanced `generateMealSuggestion`
21+
Die Hauptfunktion wurde erweitert um:
22+
- Vollständiges Error-Handling mit try/catch
23+
- Logging aller Anfragen (erfolgreiche und fehlgeschlagene)
24+
- Detaillierte Speicherung der OpenAI-Antworten
25+
26+
### 4. Debug-Komponente (`src/components/AISuggestionLogsViewer.tsx`)
27+
Eine React-Komponente zur Visualisierung der Logs mit:
28+
- Liste aller Logs mit Status-Anzeige
29+
- Detailansicht für einzelne Logs
30+
- Filter-Optionen (nur erfolgreiche anzeigen)
31+
- Vollständige Prompt-Anzeige für Debugging
32+
33+
## Wie verwenden?
34+
35+
### 1. Schema-Update anwenden
36+
```bash
37+
# Convex Dev Server neustarten, damit das neue Schema geladen wird
38+
npx convex dev
39+
```
40+
41+
### 2. Logs einsehen (Programmmatisch)
42+
```typescript
43+
// Alle letzten 50 Logs abrufen
44+
const logs = useQuery(api.aiSuggestions.getAISuggestionLogs, {
45+
limit: 50,
46+
includeSuccessOnly: false,
47+
});
48+
49+
// Nur erfolgreiche Logs einer bestimmten Familie
50+
const successLogs = useQuery(api.aiSuggestions.getAISuggestionLogs, {
51+
familyId: myFamilyId,
52+
includeSuccessOnly: true,
53+
});
54+
55+
// Detailansicht eines spezifischen Logs
56+
const logDetail = useQuery(api.aiSuggestions.getAISuggestionLogDetail, {
57+
logId: selectedLogId,
58+
});
59+
```
60+
61+
### 3. Debug-Komponente einbinden
62+
```tsx
63+
import { AISuggestionLogsViewer } from "./components/AISuggestionLogsViewer";
64+
65+
// Irgendwo in Ihrer App (z.B. als Debug-Tab)
66+
<AISuggestionLogsViewer />
67+
```
68+
69+
### 4. Convex Dashboard nutzen
70+
Im Convex Dashboard können Sie auch direkt auf die `aiSuggestionLogs`-Tabelle zugreifen:
71+
1. Öffnen Sie das Convex Dashboard
72+
2. Gehen Sie zu "Data" → "aiSuggestionLogs"
73+
3. Dort sehen Sie alle Log-Einträge
74+
75+
## Debugging-Workflow
76+
77+
### 1. Problem identifizieren
78+
- Nutzen Sie die Logs-Komponente oder das Dashboard
79+
- Filtern Sie nach fehlgeschlagenen Requests
80+
- Prüfen Sie die `errorMessage` Felder
81+
82+
### 2. Prompt-Optimierung
83+
- Schauen Sie sich den `generatedPrompt` an
84+
- Vergleichen Sie erfolgreiche vs. fehlgeschlagene Prompts
85+
- Testen Sie Änderungen an der `buildPrompt`-Funktion
86+
87+
### 3. OpenAI-Response analysieren
88+
- Prüfen Sie die `openaiResponse` auf unerwartete Formate
89+
- Schauen Sie, ob OpenAI Markdown-Blöcke oder andere Formatierungen verwendet
90+
- Verbessern Sie das Response-Parsing falls nötig
91+
92+
### 4. Input-Parameter verstehen
93+
- Analysieren Sie die `familyPreferences`, `recentMeals`, etc.
94+
- Optimieren Sie die Prompt-Generierung basierend auf realen Daten
95+
96+
## Monitoring & Analytics
97+
98+
Die Logs ermöglichen Ihnen:
99+
- **Erfolgsrate messen**: Wie viele Requests schlagen fehl?
100+
- **Performance tracking**: Welche Parameter führen zu besseren Ergebnissen?
101+
- **Prompt-Verbesserung**: A/B-Testing verschiedener Prompt-Strategien
102+
- **Error-Patterns**: Häufige Fehlerursachen identifizieren
103+
104+
## Datenschutz-Hinweis
105+
106+
Die Logs enthalten alle Input-Parameter und OpenAI-Responses. Stellen Sie sicher, dass:
107+
- Logs regelmäßig bereinigt werden (z.B. nach 30 Tagen)
108+
- Nur autorisierte Benutzer Zugriff auf die Debug-Komponente haben
109+
- Sensible Daten in den Logs entsprechend behandelt werden
110+
111+
## Performance-Überlegungen
112+
113+
- Logs werden asynchron gespeichert und blockieren nicht die Haupt-Funktion
114+
- Begrenzen Sie die Anzahl der abgerufenen Logs in der UI (Standard: 50)
115+
- Erwägen Sie regelmäßige Bereinigung alter Logs über eine Cron-Job
116+
117+
## Nächste Schritte
118+
119+
1. Starten Sie `npx convex dev` neu
120+
2. Testen Sie einige AI-Suggestions
121+
3. Schauen Sie sich die Logs im Dashboard oder in der Komponente an
122+
4. Iterieren Sie über die Prompt-Optimierung basierend auf den Logs

0 commit comments

Comments
 (0)