{/* Header */}
Feedback: {institutee.firstName} {institutee.lastName}
{assignment.title} · {assignment.client}
{/* KI-Einstellungen */}
{showAiSettings && (
KI-Einstellungen (OpenRouter)
API-Key von openrouter.ai — wird lokal gespeichert, nie übertragen.
setAiKey(e.target.value)}
/>
)}
{/* KI-Generieren Button */}
{aiError && (
{aiError}
)}
{/* Dimensionen */}
{dimensions.map(dim => {
const dimCats = categories.filter(c => c.dimensionId === dim.id)
const isOpen = expanded.has(dim.id!)
const text = getDimText(dim.id!)
// Zusammenfassung der Bewertungen
const catRatings = dimCats.map(c => getRating(c.id!)).filter(Boolean) as FeedbackRating[]
const worstRating = catRatings.includes('not_client_ready') ? 'not_client_ready'
: catRatings.includes('partially_client_ready') ? 'partially_client_ready'
: catRatings.includes('nearly_client_ready') ? 'nearly_client_ready'
: catRatings.includes('client_ready') ? 'client_ready'
: catRatings.length > 0 ? 'na' : undefined
const summaryColor = ratingColor(worstRating)
return (
{/* Dimension-Header */}
{isOpen && (
{/* Kategorien */}
{dimCats.map(cat => {
const catItems = items.filter(i => i.categoryId === cat.id)
const currentRating = getRating(cat.id!)
return (
{cat.name}
{/* Rating-Buttons */}
{RATING_OPTIONS.map(r => (
))}
{/* Bewertungs-Vorschlag aus Meeting-Assessments */}
{(() => {
const trend = catTrends.get(cat.id!)
if (!trend || trend.suggestion === null) return null
const suggestedRating = numberToRating(trend.suggestion)
const shortLabel = RATING_OPTIONS.find(o => o.value === suggestedRating)?.short
return (
Vorschlag: {shortLabel} ({trend.suggestion.toFixed(1)}) {trendArrow(trend.trend)}
{(trend.trend === 'up' || trend.trend === 'down') && (
)}
)
})()}
{/* Kriterium-Items als Referenz */}
{catItems.length > 0 && (
{catItems.map(item => (
{item.name}
))}
)}
)
})}
{/* Textfelder */}
)}
)
})}
{/* Hinweis für KI-Nutzung */}
KI-Entwürfe vor dem Einsatz bitte sorgfältig prüfen und anpassen.
)
}