'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
)}
) }