2.8 KiB
2.8 KiB
Story 3.1: React-Flow-Canvas mit Custom Agent Node
Status: done
Story
Als Nutzer, möchte ich Agent-Nodes per Drag & Drop auf den Canvas ziehen, so dass ich meinen KI-Rat visuell zusammenstellen kann.
Acceptance Criteria
- Drag & Drop aus linker Seitenleiste → Custom
AgentNodeerscheint auf Canvas - Klick auf Node → rechtes
NodeSettingsPanelöffnet sich - Änderung von Name/Prompt/Modell → Canvas-Node aktualisiert sich live (Zustand-Bindung)
- Node zeigt: Name, LLM-Modell (farblich kodiert), Tool-Badges (🔍, 📄)
- Pulsier-Animation (
animate-pulse) wennisActive = true
Tasks / Subtasks
- Task 1:
components/nodes/AgentNode.tsxCustom React Flow Node (AC: 1, 4, 5)- Subtask 1.1: Anzeige: Name, Modell-Badge, Tool-Icons (Globe, FileText)
- Subtask 1.2:
isActive-Zustand →animate-pulse+ Indigo-Rahmen - Subtask 1.3:
Handle(source + target) für Verbindungen
- Task 2:
store/council-store.tsZustand-Store (AC: 3)- Subtask 2.1:
nodes,edges,selectedNodeId,councilName - Subtask 2.2:
addAgentNode(),updateNodeData(),selectNode()
- Subtask 2.1:
- Task 3:
components/panels/NodeSidebar.tsx(AC: 1) - Task 4:
components/panels/NodeSettingsPanel.tsx(AC: 2, 3) - Task 5:
components/ArchitectCanvas.tsxReact Flow Wrapper - Task 6: Frontend-Tests für Store und Parser (AC: 3)
Dev Notes
NODE_TYPES = { agent: AgentNode }inArchitectCanvasregistrieren- Zustand via
useCouncilStore(Zustand) — kein React-Kontext-Drill memo()für Performance bei vielen Nodes
Project Structure Notes
frontend/app/components/nodes/AgentNode.tsxfrontend/app/components/ArchitectCanvas.tsxfrontend/app/components/panels/NodeSidebar.tsxfrontend/app/components/panels/NodeSettingsPanel.tsxfrontend/app/store/council-store.tsfrontend/app/types/council.ts
References
- [Source: _bmad-output/planning-artifacts/ux-design.md#Agent-Node-Canvas-Element]
- [Source: CLAUDE.md#React-Conventions — custom node components]
Dev Agent Record
Agent Model Used
Amelia (💻 BMAD Dev Agent)
Completion Notes List
MODEL_LABELSundMODEL_COLORSals Lookup-Maps für farbliche Modell-Kodierung.memo()verhindert unnötige Re-Renders bei vielen Nodes auf dem Canvas.
File List
frontend/app/types/council.tsfrontend/app/store/council-store.tsfrontend/app/components/nodes/AgentNode.tsxfrontend/app/components/ArchitectCanvas.tsxfrontend/app/components/NavTabs.tsxfrontend/app/components/panels/NodeSidebar.tsxfrontend/app/components/panels/NodeSettingsPanel.tsxfrontend/app/app/__tests__/council-store.test.ts