'use client'
/**
* Workflow-aware action buttons for the criteria panel.
* Handles Erstkorrektur, Zweitkorrektur, Einigung, and completed states.
*/
import type { ExaminerWorkflow } from './workspace-types'
import { GRADE_LABELS } from './workspace-types'
interface WorkflowActionsProps {
workflow: ExaminerWorkflow | null
gutachten: string
generatingGutachten: boolean
submittingWorkflow: boolean
totals: { gradePoints: number }
onGenerateGutachten: () => void
onSubmitErstkorrektur: () => void
onStartZweitkorrektur: (id: string) => void
onSubmitZweitkorrektur: () => void
onShowEinigungModal: () => void
}
export default function WorkflowActions({
workflow, gutachten, generatingGutachten, submittingWorkflow, totals,
onGenerateGutachten, onSubmitErstkorrektur, onStartZweitkorrektur,
onSubmitZweitkorrektur, onShowEinigungModal,
}: WorkflowActionsProps) {
return (
{/* Generate Gutachten button */}
{/* Erstkorrektur */}
{(!workflow || workflow.workflow_status === 'not_started' || workflow.workflow_status === 'ek_in_progress') && (
)}
{/* Start Zweitkorrektur */}
{workflow?.workflow_status === 'ek_completed' && workflow.user_role === 'ek' && (
)}
{/* Submit Zweitkorrektur */}
{(workflow?.workflow_status === 'zk_assigned' || workflow?.workflow_status === 'zk_in_progress') &&
workflow?.user_role === 'zk' && (
)}
{/* Einigung */}
{workflow?.workflow_status === 'einigung_required' && (
)}
{/* Completed */}
{workflow?.workflow_status === 'completed' && (
Endnote: {workflow.final_grade} Punkte
({GRADE_LABELS[workflow.final_grade || 0]}) - {workflow.consensus_type === 'auto' ? 'Auto-Konsens' : workflow.consensus_type === 'drittkorrektur' ? 'Drittkorrektur' : 'Einigung'}
)}
{/* EK/ZK comparison */}
{workflow?.first_result && workflow?.second_result && workflow?.workflow_status !== 'completed' && (
Notenvergleich
EK
{workflow.first_result.grade_points}P
ZK
{workflow.second_result.grade_points}P
Diff
= 4 ? 'text-red-600' : 'text-slate-700'}`}>
{workflow.grade_difference}P
)}
)
}