Merge branch 'main' into annotation-admin-extension
This commit is contained in:
@@ -16,9 +16,8 @@ interface CalibrationEntryViewProps {
|
||||
const CONFIDENCE_OPTIONS = [
|
||||
{ value: 1, label: 'Sehr unsicher' },
|
||||
{ value: 2, label: 'Eher unsicher' },
|
||||
{ value: 3, label: 'Neutral' },
|
||||
{ value: 4, label: 'Eher sicher' },
|
||||
{ value: 5, label: 'Sehr sicher' },
|
||||
{ value: 3, label: 'Eher sicher' },
|
||||
{ value: 4, label: 'Sehr sicher' },
|
||||
];
|
||||
|
||||
export default function CalibrationEntryView({
|
||||
@@ -70,7 +69,7 @@ export default function CalibrationEntryView({
|
||||
{/* Sample header */}
|
||||
<div className="flex items-center justify-between mb-3">
|
||||
<span className="text-xs font-medium text-gray-400 uppercase tracking-wide">
|
||||
Kalibrierungssample - {entry.order}
|
||||
Aufnahme {entry.order}
|
||||
</span>
|
||||
{fullyPlayed && (
|
||||
<span className="text-xs text-green-600 font-medium">
|
||||
@@ -88,8 +87,8 @@ export default function CalibrationEntryView({
|
||||
|
||||
{/* Must-listen hint */}
|
||||
{!fullyPlayed && (
|
||||
<p className="text-xs text-amber-600 mt-2">
|
||||
Bitte das Sample vollständig anhören, bevor Sie eine Bewertung abgeben.
|
||||
<p className="text-xs text-gray-400 mt-2">
|
||||
Bitte die Aufnahme vollständig anhören, bevor du eine Bewertung abgibst.
|
||||
</p>
|
||||
)}
|
||||
|
||||
@@ -98,7 +97,7 @@ export default function CalibrationEntryView({
|
||||
{/* Dialect question */}
|
||||
<div className="flex-1">
|
||||
<div className="text-sm font-semibold text-gray-700 mb-3">
|
||||
Welcher Dialekt ist es?
|
||||
Welchen Dialekt hörst du?
|
||||
</div>
|
||||
<div className="flex flex-col gap-2">
|
||||
{Object.entries(DIALECT_LABELS_WITHOUT_DE).map(([dialectKey, dialectName]) => {
|
||||
@@ -136,7 +135,7 @@ export default function CalibrationEntryView({
|
||||
{/* Confidence question */}
|
||||
<div className="flex-1">
|
||||
<div className="text-sm font-semibold text-gray-700 mb-3">
|
||||
Wie sicher sind Sie?
|
||||
Wie sicher bist du?
|
||||
</div>
|
||||
<div className="flex flex-col gap-2">
|
||||
{CONFIDENCE_OPTIONS.map(({ value, label }) => {
|
||||
|
||||
@@ -25,21 +25,17 @@ export default function CalibrationInfoView({
|
||||
return (
|
||||
<div className="flex flex-col h-full bg-white">
|
||||
<div className="flex-1 flex items-center justify-center px-4">
|
||||
<div className="max-w-2xl w-full">
|
||||
<div className="max-w-[700px] w-full">
|
||||
{/* Header */}
|
||||
<div className="text-center mb-4">
|
||||
<h1 className="text-3xl font-bold text-gray-900 mb-2">Kalibrierungsphase</h1>
|
||||
<h1 className="text-3xl font-bold text-gray-900 mb-8 mt-4">Kalibrierungsphase</h1>
|
||||
</div>
|
||||
|
||||
{/* Info Section */}
|
||||
<div className="bg-blue-50 border border-blue-200 rounded-lg p-8 mb-8">
|
||||
<h2 className="text-xl font-semibold text-gray-900 mb-4">Was ist die Kalibrierungsphase?</h2>
|
||||
<p className="text-gray-700 mb-4">
|
||||
Die Kalibrierungsphase dient dazu, Ihre individuellen Stärken und Schwächen bei der Dialekterkennung zu verstehen. Sie hören verschiedene Audiosamples und geben an, welchen Dialekt Sie hören und wie sicher Sie sich dabei sind.
|
||||
</p>
|
||||
<p className="text-gray-700 mb-4">
|
||||
Dies hilft uns, Ihre Annotationsergebnisse später besser zu bewerten und zu
|
||||
verstehen. Die Annotationen werden auf Basis Ihrer Kalibrierungsergebnisse gewichtet, sodass Ihre Stärken stärker berücksichtigt werden.
|
||||
In der Kalibrierungsphase hörst du echte Dialektaufnahmen und gibst an, welchen Dialekt du erkennst und wie sicher du dir dabei bist. So können wir deine Dialektkenntnisse besser einschätzen und deine späteren Bewertungen entsprechend gewichten.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -51,38 +47,38 @@ export default function CalibrationInfoView({
|
||||
<span className="flex-shrink-0 w-6 h-6 bg-blue-600 text-white rounded-full flex items-center justify-center text-sm font-semibold">
|
||||
1
|
||||
</span>
|
||||
<span>Sie hören ein Audiosample</span>
|
||||
<span>Du hörst eine Audioaufnahme</span>
|
||||
</li>
|
||||
<li className="flex gap-3">
|
||||
<span className="flex-shrink-0 w-6 h-6 bg-blue-600 text-white rounded-full flex items-center justify-center text-sm font-semibold">
|
||||
2
|
||||
</span>
|
||||
<span>Sie wählen den Dialekt aus, den Sie gehört haben</span>
|
||||
<span>Du wählst den Dialekt aus, den du gehört hast</span>
|
||||
</li>
|
||||
<li className="flex gap-3">
|
||||
<span className="flex-shrink-0 w-6 h-6 bg-blue-600 text-white rounded-full flex items-center justify-center text-sm font-semibold">
|
||||
3
|
||||
</span>
|
||||
<span>Sie bewerten Ihr Vertrauen in die Identifikation (von 1-5)</span>
|
||||
<span>Du gibst an, wie sicher du dir bei deiner Wahl bist</span>
|
||||
</li>
|
||||
<li className="flex gap-3">
|
||||
<span className="flex-shrink-0 w-6 h-6 bg-blue-600 text-white rounded-full flex items-center justify-center text-sm font-semibold">
|
||||
4
|
||||
</span>
|
||||
<span>Sie wiederholen dies für alle Audiosamples</span>
|
||||
<span>Dies wiederholst du für alle Aufnahmen</span>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
{/* Important Note */}
|
||||
<div className="bg-amber-50 border border-amber-200 rounded-lg p-6 mb-8">
|
||||
<h4 className="font-semibold text-amber-900 mb-2">ℹ️ Wichtig</h4>
|
||||
<p className="text-amber-800 text-sm">
|
||||
Sie können diese Seite jederzeit verlassen und später zurückkehren, um Ihre
|
||||
Kalibrierung fortzusetzen. Ihre Antworten werden automatisch gespeichert.
|
||||
|
||||
{/* Participation Section */}
|
||||
<div className="mb-8">
|
||||
<p className="text-gray-700 mb-4">
|
||||
Die Kalibrierung umfasst 28 Aufnahmen und dauert etwa 5–10 Minuten.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
{/* Status */}
|
||||
{hasExistingAnswers && (
|
||||
<div className="bg-green-50 border border-green-200 rounded-lg p-6 mb-8">
|
||||
|
||||
@@ -170,22 +170,21 @@ export default function CalibrationPageView({
|
||||
<div className="flex-1 flex flex-col overflow-hidden">
|
||||
<div className="flex-1 overflow-y-auto">
|
||||
<div className="max-w-3xl mx-auto px-4">
|
||||
<div className="text-center mb-12">
|
||||
<div className="text-5xl mb-4">🎉</div>
|
||||
<h1 className="text-3xl font-bold text-green-600 mb-3">
|
||||
<div className="text-center mb-12 mt-4">
|
||||
<h1 className="text-3xl font-bold text-gray-900 mb-4">
|
||||
Kalibrierung abgeschlossen!
|
||||
</h1>
|
||||
<p className="text-gray-600 mb-8">
|
||||
Sie haben alle Kalibrierungssamples bewertet. Vielen Dank! Sie können jetzt mit der
|
||||
Annotation beginnen.
|
||||
Du hast alle Aufnahmen bewertet. Vielen Dank! Du kannst jetzt mit der Bewertung beginnen.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
{/* Dialect Scores Summary */}
|
||||
{sortedScores.length > 0 && (
|
||||
<div className="mb-12">
|
||||
<h2 className="text-lg font-semibold text-gray-900 mb-6">Ihre Kalibrierungsergebnisse</h2>
|
||||
|
||||
<h2 className="text-lg font-semibold text-gray-900 mb-4">Deine Kalibrierungsergebnisse</h2>
|
||||
<CalibrationScoresDisplay dialectScores={dialectScores} />
|
||||
</div>
|
||||
)}
|
||||
@@ -194,9 +193,9 @@ export default function CalibrationPageView({
|
||||
<button
|
||||
onClick={handleCompleteCalibration}
|
||||
disabled={isPending}
|
||||
className="px-6 py-3 bg-blue-600 hover:bg-blue-700 disabled:bg-gray-400 text-white font-semibold rounded-lg transition-colors"
|
||||
className="px-6 py-3 bg-blue-600 hover:bg-blue-700 disabled:bg-gray-400 text-white font-semibold rounded-lg transition-colors text-lg"
|
||||
>
|
||||
{isPending ? 'Wird gespeichert...' : 'Zur Annotation'}
|
||||
{isPending ? 'Wird gespeichert...' : 'Zur Bewertung'}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user