mindnet_obsidian/STATUS_DOD.md
Lars e6cd4aafec
Some checks are pending
Node.js build / build (20.x) (push) Waiting to run
Node.js build / build (22.x) (push) Waiting to run
Enhance edge parsing and settings for improved template matching
- Updated `parseEdgesFromCallouts.ts` to support edge extraction from both callout blocks and plain lines, allowing for more flexible edge definitions.
- Introduced new settings in `settings.ts` for maximum assignments collected per template, enhancing loop protection during edge processing.
- Enhanced documentation in `Entwicklerhandbuch.md` to reflect changes in edge parsing and settings.
- Improved UI components to utilize the new settings for better user experience in the Chain Workbench and related features.
2026-02-06 11:40:44 +01:00

120 lines
4.9 KiB
Markdown

# Status gegen DoD - guides Edge Erkennung
## DoD Anforderungen
### ✅ DoD 2: Alle Link-Formate erkennen
**Status: ERFÜLLT**
-`[[Note]]` Format wird erkannt
-`[[Note#Abschnitt]]` Format wird erkannt
-`[[Note#Abschnitt ^BlockID]]` Format wird erkannt
-`[[#^BlockID]]` Format wird erkannt
- ✅ Mehrere Links in einer Edge werden erkannt
- **Tests:** 14/14 bestehen (`parseEdgesFromCallouts.comprehensive.test.ts`)
### ✅ DoD 3: Kanten außerhalb von Wrappern erkennen
**Status: ERFÜLLT**
- ✅ Edge ohne `>` (plain `[!edge]`) wird erkannt
- ✅ Edge mit `>` außerhalb Abstract-Block wird erkannt
- ✅ Edge mitten im Text wird erkannt
- **Tests:** Alle bestehen
### ✅ DoD 4: Verschiedene Wrapper-Typen erkennen
**Status: ERFÜLLT**
-`[!abstract]` Block wird erkannt
-`[!info]` Block wird erkannt
-`[!note]` Block wird erkannt
-`[!tip]` Block wird erkannt
- **Tests:** Alle bestehen
### ✅ DoD 5: Edge-Erstellung mit konfiguriertem Wrapper
**Status: ERFÜLLT**
-`insertEdgeIntoSectionContent.ts` verwendet `wrapperCalloutType`, `wrapperTitle`, `wrapperFolded`
- ✅ Settings enthalten `mappingWrapperCalloutType`, `mappingWrapperTitle`, `mappingWrapperFolded`
-`buildMappingBlock` und `insertMappingBlock` unterstützen Wrapper-Konfiguration
### ✅ DoD 1: Sämtliche Kanten werden richtig erkannt und auch in der Chain richtig zugeordnet
**Status: ERFÜLLT**
**Was funktioniert:**
- ✅ guides Edge wird korrekt geparst (`parseEdgesFromCallouts`)
- ✅ guides Edge wird in `buildNoteIndex` gefunden
- ✅ Candidate Nodes werden korrekt erstellt
- ✅ Slot-Candidates werden korrekt gefunden
- ✅ guides Edge wird in `findEdgeBetween` gefunden, auch wenn sie später in der Liste kommt
- ✅ guides Edge wird in `scoreAssignment` gefunden (`satisfiedLinks: 1`)
- ✅ guides Edge wird in `roleEvidence` aufgenommen
- ✅ Template Match zeigt `satisfiedLinks: 1/1`
**Gelöstes Problem:**
- Problem: `foundation_for` Edge (Index 11) wurde zuerst gefunden und zurückgegeben, bevor die guides Edge (Index 12) geprüft wurde
- Lösung: Wenn `allowedEdgeRoles` gesetzt ist, wird nur zurückgegeben, wenn die Edge-Rolle in den erlaubten Rollen ist. Wenn `edgeRole` null ist, wird `inferRoleFromRawType` verwendet, um die Rolle zu bestimmen
- Ergebnis: guides Edge wird jetzt korrekt gefunden, auch wenn sie später in der Liste kommt
## Gelöste Probleme
### 1. guides Edge Problem - BEHOBEN ✅
**Problem:** `findEdgeBetween` fand guides Edge nicht in `scoreAssignment`, wenn sie später in der Liste kam
**Root Cause:**
- `foundation_for` Edge (Index 11) wurde zuerst gefunden und zurückgegeben
- `getEdgeRole` gab `null` für `foundation_for` zurück (nicht in `chainRoles` definiert)
- Die Lösung prüfte nur `edgeRole`, nicht `inferRoleFromRawType`
- Da `edgeRole` `null` war, wurde die Bedingung `hasAllowedRoles && edgeRole` falsch und die Edge wurde zurückgegeben
- Die guides Edge (Index 12) wurde nie geprüft
**Lösung:**
- Wenn `hasAllowedRoles` true ist, wird auch `inferRoleFromRawType` geprüft, wenn `edgeRole` null ist
- Wenn die Edge-Rolle nicht in den erlaubten Rollen ist, wird weiter gesucht
- Die guides Edge wird jetzt korrekt gefunden und `satisfiedLinks: 1` ist korrekt
**Test:**`templateMatching.guidesEdgeComprehensive.test.ts` besteht
### 2. DoD 5: Edge-Erstellung testen
**Priorität: MITTEL**
**Status:** Implementiert, aber nicht getestet
- Prüfen, ob `insertEdgeIntoSectionContent` die Wrapper-Konfiguration richtig verwendet
- Test erstellen, der prüft, dass neue Edges mit konfiguriertem Wrapper erstellt werden
### 3. Integrationstest mit echter Datei
**Priorität: HOCH**
**Test:** Die echte Datei `Geburt unserer Kinder Rouven und Rohan.md` muss vollständig funktionieren:
- guides Edge wird geparst ✅
- guides Edge wird in Template Matching gefunden ❌
- guides Edge wird in Chain Workbench angezeigt ❌
## Aktuelle Test-Ergebnisse
```
✅ parseEdgesFromCallouts.comprehensive.test.ts: 14/14 Tests bestehen
✅ templateMatching.guidesEdgeComprehensive.test.ts: 1/1 Test besteht
- satisfiedLinks: 1 (erwartet: > 0) ✅
- guides Edge wird in roleEvidence gefunden ✅
```
## Technische Details
**Edge-Struktur (aus Datei):**
```
>> [!edge] guides
>> [[Geburt unserer Kinder Rouven und Rohan#Nächster Schritt ^next]]
```
**Parsed Edge:**
- `rawEdgeType: "guides"`
- `source.file: "03_experience/Geburt unserer Kinder Rouven und Rohan.md"`
- `source.sectionHeading: "Reflexion & Learning (Was lerne ich daraus?) ^learning"`
- `target.file: "Geburt unserer Kinder Rouven und Rohan"`
- `target.heading: "Nächster Schritt ^next"`
**Template Match:**
- `templateName: "insight_to_decision"`
- `slotAssignments: { learning: {...}, next: {...} }`
- `satisfiedLinks: 1/1`
- `roleEvidence: [{ from: "learning", to: "next", edgeRole: "guides", rawEdgeType: "guides" }]`
**Erreichtes Ergebnis:**
- `satisfiedLinks: 1/1`
- `roleEvidence: [{ from: "learning", to: "next", edgeRole: "guides", rawEdgeType: "guides" }]`