Du bist Claude Code. Deine Aufgabe ist Task 3 von 7: Implementiere die bidirektionale Statusverkettung zwischen Sessions und Kanban-Stories in index-3.html.

VORAUSSETZUNG: Task 1 (STATUS_MAPS) und Task 2 (Datenmodell) müssen bereits implementiert sein.

KONTEXT:

AUFGABEN:

  1. FUNKTION onSessionStatusChange IMPLEMENTIEREN Füge folgende Funktion in den globalen JS-Bereich ein:

function onSessionStatusChange(sessionId, newStatus) { const session = sessions.find(s => s.id === sessionId); if (!session) return;

session.status = newStatus;

// Kanban-Status der primären Story synchronisieren if (session.primaryStoryId != null) { const task = kanbanData.tasks.find(t => t.id === session.primaryStoryId); if (task) { task.status = sessionStatusToKanbanStatus(newStatus); } }

saveState(); renderAll(); // oder die passende Render-Funktion im Code }

  1. SESSION-STATUS-DROPDOWN MIT HANDLER VERBINDEN Suche im Rendering der Session-Cards das Status-<select> Element. Stelle sicher, dass es folgenden onchange-Handler hat: onchange="onSessionStatusChange(${session.id}, this.value)" (Passe die Template-Syntax an den vorhandenen Code an — ob Template Literals, innerHTML oder DOM-Methoden genutzt werden.)
  2. STORY-SESSION-ZUWEISUNG: primaryStoryId SETZEN Suche den change-Handler des Session-Dropdowns in den Kanban-Task-Cards (das Dropdown, mit dem man einer Story eine Session zuweist). Ergänze im Handler:

function onTaskSessionChange(taskId, sessionId) { const task = kanbanData.tasks.find(t => t.id === taskId); if (!task) return;

// Alte Session-Zuweisung entfernen const oldSession = sessions.find(s => s.id === task.sessionId); if (oldSession && oldSession.primaryStoryId === taskId) { oldSession.primaryStoryId = null; }

task.sessionId = sessionId ? Number(sessionId) : null;

// Neue Session: primaryStoryId setzen, falls noch frei if (sessionId) { const newSession = sessions.find(s => s.id === Number(sessionId)); if (newSession && newSession.primaryStoryId == null) { newSession.primaryStoryId = taskId; } }

saveState(); renderAll(); }