2.2 KiB
2.2 KiB
Story 3.3: Blueprint-Parser (React Flow → JSON)
Status: done
Story
Als System,
möchte ich eine parseGraphToBlueprint()-Funktion,
so dass sie den Canvas-State in ein valides Blueprint-JSON konvertiert.
Acceptance Criteria
- Nodes + Edges →
CouncilBlueprintmitversion,name,nodes[],edges[] - Bedingte Edge →
type: "conditional"undcondition: "<label>"im Edge-JSON - Lineare Edge →
type: "linear"ohnecondition-Feld version: 1als Startwert- Tests: Alle drei Fälle (linear, conditional, gemischt)
Tasks / Subtasks
- Task 1:
utils/blueprint-parser.tsimplementieren (AC: 1–4)- Subtask 1.1: Nodes-Mapping:
id,label,systemPrompt,model,tools,position - Subtask 1.2: Edges-Mapping:
id,source,target,type, optionalcondition - Subtask 1.3: Rückgabe:
CouncilBlueprintmitversion: 1
- Subtask 1.1: Nodes-Mapping:
- Task 2:
types/council.ts—CouncilBlueprint,BlueprintNode,BlueprintEdge(AC: 1) - Task 3: Vitest-Tests (AC: 1–5)
- Subtask 3.1: Test lineares Blueprint
- Subtask 3.2: Test bedingte Edge
- Subtask 3.3: Test leeres Canvas (0 Nodes/Edges)
Dev Notes
existingId?: stringParameter für Updates (PUT vs POST)- Tool-Mapping:
webSearch,pdfReader(camelCase im Frontend, snake_case im Backend) EdgeType = "linear" | "conditional"als Union-Typ
Project Structure Notes
frontend/app/utils/blueprint-parser.tsfrontend/app/types/council.tsfrontend/app/__tests__/blueprint-parser.test.ts
References
- [Source: _bmad-output/planning-artifacts/architecture.md#Blueprint-JSON-Schema]
Dev Agent Record
Agent Model Used
Amelia (💻 BMAD Dev Agent)
Completion Notes List
position-Feld wird mitgespeichert, damit Blueprint-Reload die Node-Positionen wiederherstellt.existingIdermöglichtPUT-Updates ohne neue ID-Generierung.
File List
frontend/app/utils/blueprint-parser.tsfrontend/app/types/council.tsfrontend/app/__tests__/blueprint-parser.test.tsfrontend/app/__tests__/types.test.ts