- {_groupScoresByDimension(coach.scores).map(group => (
-
-
- {_dimensionLabel(group.dimension)}
- {Math.round(group.latest.score)}/100
-
- {group.latest.trend === 'improving' ? 'steigend' : group.latest.trend === 'declining' ? 'sinkend' : 'stabil'}
-
-
-
- {group.latest.evidence && (
-
{group.latest.evidence}
- )}
- {scoreHistory[group.dimension] && scoreHistory[group.dimension].length > 1 && (
-
-
Verlauf:
-
- {scoreHistory[group.dimension].map((entry, i) => (
-
- {Math.round(entry.score)}
-
- ))}
+ {/* Messages */}
+
+
+ {coach.messages.map(msg => (
+
+
+ {msg.content}
+
+
+ {msg.createdAt ? new Date(msg.createdAt).toLocaleTimeString('de-CH', { hour: '2-digit', minute: '2-digit' }) : ''}
+
+
+ ))}
+ {liveTranscript && (
+
+ )}
+ {coach.isStreaming && (
+
+
+ {coach.streamingMessage ? (
+
{coach.streamingMessage}
+ ) : (
+
{coach.streamingStatus || 'Coach denkt nach'}...
+ )}
+
-
- )}
-
- ))}
-
- )}
-
- )}
-
- {/* Documents Tab */}
- {activeTab === 'documents' && (
-
-
-
-
- {documents.length === 0 ? (
-
Keine Dokumente. Lade Dateien hoch, um sie mit diesem Kontext zu verknüpfen.
- ) : (
-
- {documents.map(doc => (
-
-
-
{doc.fileName}
-
- {_formatFileSize(doc.fileSize)} | {doc.createdAt ? new Date(doc.createdAt).toLocaleDateString('de-CH') : ''}
-
- {doc.summary && (
-
{doc.summary}
)}
-
+
+
+ {/* Input Area */}
+
+
+
+ {coach.isMuted
+ ? 'Stumm – Mikrofon aus'
+ : coach.isStreaming
+ ? (coach.streamingStatus || 'Coach antwortet...')
+ : isUserSpeaking
+ ? 'Spricht...'
+ : isListening
+ ? 'Mikrofon an – bitte sprechen'
+ : 'Mikrofon wird gestartet...'}
+
+
+
+
- ))}
+ >
+ )}
+ {coach.error &&
{coach.error}
}
+
+ )}
+
+ {/* ============================================================ */}
+ {/* TASKS TAB */}
+ {/* ============================================================ */}
+ {activeTab === 'tasks' && (
+
+
+ setNewTaskTitle(e.target.value)}
+ onKeyDown={e => e.key === 'Enter' && handleAddTask()}
+ />
+
- )}
-
- )}
+ {coach.tasks.length === 0 ? (
+
Noch keine Aufgaben. Der Coach schlägt während Sessions Aufgaben vor.
+ ) : (
+
+ {coach.tasks.map(task => (
+
+
+
+
{task.title}
+ {task.description &&
{task.description}
}
+
+
+ {task.priority}
+
+
+
+ ))}
+
+ )}
+
+ )}
+
+ {/* ============================================================ */}
+ {/* SESSIONS TAB */}
+ {/* ============================================================ */}
+ {activeTab === 'sessions' && (
+
+ {coach.sessions.length === 0 ? (
+
Noch keine abgeschlossenen Sessions.
+ ) : (
+
+ {coach.sessions.map(s => (
+
+
+
+ {s.status === 'completed' ? 'Abgeschlossen' : s.status === 'active' ? 'Aktiv' : 'Abgebrochen'}
+
+ {s.startedAt ? new Date(s.startedAt).toLocaleDateString('de-CH') : ''}
+ {s.competenceScore != null && Score: {Math.round(s.competenceScore)}}
+
+ {s.summary && (
+
{s.summary}
+ )}
+
+ {s.messageCount} Nachrichten | {Math.round(s.durationSeconds / 60)} Min.
+ {s.personaId &&
| Persona}
+ {instanceId && s.status === 'completed' && (
+
e.stopPropagation()}>Export
+ )}
+
+
+ ))}
+
+ )}
+
+ )}
+
+ {/* ============================================================ */}
+ {/* SCORES TAB */}
+ {/* ============================================================ */}
+ {activeTab === 'scores' && (
+
+ {coach.scores.length === 0 ? (
+
Noch keine Bewertungen. Schliesse eine Session ab, um Scores zu erhalten.
+ ) : (
+
+ {_groupScoresByDimension(coach.scores).map(group => (
+
+
+ {_dimensionLabel(group.dimension)}
+ {Math.round(group.latest.score)}/100
+
+ {group.latest.trend === 'improving' ? 'steigend' : group.latest.trend === 'declining' ? 'sinkend' : 'stabil'}
+
+
+
+ {group.latest.evidence &&
{group.latest.evidence}
}
+ {scoreHistory[group.dimension] && scoreHistory[group.dimension].length > 1 && (
+
+
Verlauf:
+
+ {scoreHistory[group.dimension].map((entry, i) => (
+ {Math.round(entry.score)}
+ ))}
+
+
+ )}
+
+ ))}
+
+ )}
+
+ )}
+
+ {/* ============================================================ */}
+ {/* DOCUMENTS TAB */}
+ {/* ============================================================ */}
+ {activeTab === 'documents' && (
+
+
+
+
+ {documents.length === 0 ? (
+
Keine Dokumente. Lade Dateien hoch oder bitte den Coach, eines zu erstellen.
+ ) : (
+
+ {documents.map(doc => (
+
+
+
{doc.fileName}
+
+ {_formatFileSize(doc.fileSize)} | {doc.createdAt ? new Date(doc.createdAt).toLocaleDateString('de-CH') : ''}
+
+ {doc.summary &&
{doc.summary}
}
+
+
+
+
+
+
+ ))}
+
+ )}
+
+ )}
>)}
);
};
+function _categoryIcon(category: string): string {
+ const icons: Record