@@ -31,11 +54,54 @@ export function SteeringSnapshotPanel({ snapshot, loading, error }) {
Steuerungszustand
{phaseLabel}
+
+ {phaseDesc && {phaseDesc}
}
+
{phase_signals?.length > 0 && (
- Signale: {phase_signals.join(' · ')}
+ {phase_signals.map((s) => SIGNAL_LABELS[s] || s).join(' · ')}
)}
+
+ {next_actions.length > 0 && (
+
+
Nächste Schritte für dieses Vorhaben
+
+ {next_actions.map((item, i) => (
+ -
+
+ {i + 1}
+ {item.title}
+
+ {NEXT_ACTION_KIND_LABELS[item.kind] || item.kind}
+ {item.recommended_action ? ` — ${item.recommended_action}` : ''}
+
+
+
+ ))}
+
+
+ )}
+
+ {upcoming_milestones.length > 0 && (
+
+
Meilenstein-Horizont
+
+
+ )}
+
- Offene Maßnahmen
@@ -62,8 +128,9 @@ export function SteeringSnapshotPanel({ snapshot, loading, error }) {
)}
+
- Kanonischer Operating Cycle — noch heuristisch, später methodengeführt über Steering Core.
+ Heuristischer Steuerungszustand — später methodengeführt über Steering Core.
)
diff --git a/frontend/src/constants/operating.js b/frontend/src/constants/operating.js
index cb6284d..07ca56c 100644
--- a/frontend/src/constants/operating.js
+++ b/frontend/src/constants/operating.js
@@ -21,3 +21,48 @@ export const PHASE_LABELS = {
adapt: 'Anpassung',
closure: 'Abschluss',
}
+
+export const PHASE_DESCRIPTIONS = {
+ capture: 'Ideen und Eingänge erfassen — noch wenig strukturierte Arbeit.',
+ triage: 'Backlog wartet auf Commit — noch keine offene nächste Maßnahme.',
+ structure: 'Vorhaben braucht Struktur — keine offene Maßnahme, Backlog leer.',
+ commit: 'Maßnahmen committen und zuweisen.',
+ execute: 'Aktive Umsetzung — offene Maßnahmen oder Blocker bearbeiten.',
+ verify: 'Nachweise und Ergebnisse belegen.',
+ review: 'Reviews oder Maßnahmen mit Review-Status klären.',
+ adapt: 'Anpassen — Backlog, Meilensteine oder Prioritäten prüfen.',
+ closure: 'Vorhaben abgeschlossen oder archiviert.',
+}
+
+export const SIGNAL_LABELS = {
+ initiative_terminal: 'Vorhaben abgeschlossen',
+ backlog_awaiting_commit: 'Backlog wartet auf Maßnahme',
+ no_open_work: 'Keine offene Arbeit',
+ actions_blocked: 'Maßnahmen blockiert',
+ open_blockers: 'Offene Blocker',
+ actions_need_review: 'Maßnahmen brauchen Review',
+ reviews_due: 'Reviews fällig',
+ work_in_progress: 'Arbeit in Umsetzung',
+}
+
+export const NEXT_ACTION_KIND_LABELS = {
+ resolve_blocker: 'Blocker klären',
+ assign_action: 'Maßnahme zuweisen',
+ convert_backlog: 'Backlog umwandeln',
+ create_action: 'Maßnahme anlegen',
+ review_milestone: 'Meilenstein prüfen',
+}
+
+export const ATTENTION_KIND_LABELS = {
+ blocked_action: 'Blockierte Maßnahme',
+ open_blocker: 'Offener Blocker',
+ high_priority_action: 'High Priority',
+ unassigned_action: 'Ohne Zuweisung',
+ initiative_without_next_action: 'Keine nächste Maßnahme',
+ stale_initiative: 'Inaktives Vorhaben',
+ milestone_at_risk: 'Meilenstein gefährdet',
+ overdue_action: 'Überfällig',
+ review_due: 'Review fällig',
+ recurring_due: 'Wiederkehrend fällig',
+ action_review_required: 'Review ausstehend',
+}
diff --git a/frontend/src/pages/WorkspacePage.jsx b/frontend/src/pages/WorkspacePage.jsx
index ed52d02..a6b307e 100644
--- a/frontend/src/pages/WorkspacePage.jsx
+++ b/frontend/src/pages/WorkspacePage.jsx
@@ -38,7 +38,7 @@ export function WorkspacePage() {