mindnet_obsidian/docs/WP26_Implementation_Checklist.md
Lars 3be7d617fe
Some checks are pending
Node.js build / build (20.x) (push) Waiting to run
Node.js build / build (22.x) (push) Waiting to run
Update documentation index to include WP-26 integration details
- Added new sections for WP-26 integration, including links to the Lastenheft, interface specification, and implementation checklist.
- Enhanced the overall structure of the documentation index to improve navigation and accessibility of WP-26 related resources.
2026-01-26 18:53:28 +01:00

9.5 KiB

WP-26 Implementierungs-Checkliste für mindnet_obsidian Plugin

Version: 1.0
Datum: 25. Januar 2026
Status: Implementierungsleitfaden
Basis: WP26_Plugin_Interface_Specification.md


Übersicht

Diese Checkliste dient als Implementierungsleitfaden für die Integration von WP-26 Features (Section Types & Intra-Note-Edges) in das mindnet_obsidian Plugin.

Referenz: Vollständige Spezifikation siehe WP26_Plugin_Interface_Specification.md


Phase 1: Grundlagen (Kern-Parsing)

1.1 Section-Type-Parsing

Datei: src/mapping/sectionParser.ts

Tasks:

  • Funktion extractSectionType(content: string): string | null hinzufügen
    • Regex: /^\s*>\s*\[!section\]\s*(\w+)/
    • Suche in gesamter Section (nicht nur direkt nach Heading)
  • Funktion extractBlockId(heading: string): string | null hinzufügen
    • Regex: /\^([a-zA-Z0-9_-]+)/
  • Interface NoteSection erweitern:
    sectionType?: string;
    blockId?: string;
    
  • splitIntoSections() erweitern:
    • Extrahiere Section-Type aus Content
    • Extrahiere Block-ID aus Heading
    • Propagiere Section-Type retroaktiv zur Überschrift

Tests:

  • src/tests/mapping/sectionTypeParser.test.ts erstellen
  • Test: Section-Type an beliebiger Stelle in Section
  • Test: Block-ID-Extraktion aus Heading
  • Test: Retroaktive Propagation

1.2 Edge-Parsing-Erweiterung

Datei: src/parser/parseEdgesFromCallouts.ts

Tasks:

  • Funktion extractBlockId(link: string): string | null hinzufügen
    • Erkenne [[#^block-id]]
    • Erkenne [[#Section Name ^block-id]] → extrahiere nur block-id
  • Interface ParsedEdge erweitern:
    isInternal?: boolean;
    blockIds?: string[];
    
  • parseEdgesFromCallouts() erweitern:
    • Extrahiere Block-IDs aus Targets
    • Setze isInternal: true wenn alle Targets Block-IDs sind

Tests:

  • src/tests/parser/parseEdgesFromCallouts.test.ts erweitern
  • Test: Block-ID-Extraktion aus [[#^block-id]]
  • Test: Block-ID-Extraktion aus [[#Section ^block-id]]
  • Test: isInternal Flag für Intra-Note-Edges

1.3 Graph-Schema-Loader

Datei: src/schema/GraphSchemaLoader.ts (NEU)

Tasks:

  • Klasse GraphSchemaLoader erstellen (analog zu ChainRolesLoader.ts)
  • Parse Dictionary/graph_schema.md:
    • Format: ## Source: \type``
    • Tabelle: | Target | Typical | Prohibited |
  • Funktion loadGraphSchema(): GraphSchema implementieren
  • Funktion getTypicalEdgeFor(sourceType, targetType): string | null implementieren
  • Funktion getTopologyInfo(sourceType, targetType): {typical, prohibited} implementieren
  • Fallback-Logik: exact → "any" → "default"

Tests:

  • src/tests/schema/graphSchemaLoader.test.ts erstellen
  • Test: Schema-Loading
  • Test: Typical Edge Lookup
  • Test: Fallback-Logik

Phase 2: UI-Komponenten

2.1 Section-Type-Modal

Datei: src/ui/SectionTypeModal.ts (NEU)

Tasks:

  • Modal-Komponente erstellen
  • Type-Auswahl aus types.yaml (via DictionaryLoader)
  • Block-ID-Generierung/-Bearbeitung
  • Vorschau: Wie wird es im Backend interpretiert?
  • Integration in Commands

UI-Features:

  • Dropdown für Section-Type-Auswahl
  • Input-Feld für Block-ID (mit Auto-Generierung)
  • Vorschau-Panel
  • Save/Cancel Buttons

2.2 Block-ID-Autovervollständigung

Datei: src/ui/LinkPromptModal.ts (ERWEITERN)

Tasks:

  • Block-ID-Suggestions hinzufügen
  • Format: [[#^block-id]] mit Heading-Vorschau
  • Filterung nach Section-Type (optional)
  • Integration in Edge-Editing-Flows

UI-Features:

  • Autovervollständigung für Block-IDs
  • Zeige Heading + Section-Type in Vorschau
  • Unterscheidung: Intra-Note vs. Inter-Note Links

2.3 Edge-Type-Chooser-Erweiterung

Datei: src/ui/EdgeTypeChooserModal.ts (ERWEITERN)

Tasks:

  • Section-Type-basierte Vorschläge integrieren
  • Schema-Validierung (Visual Feedback)
  • Nutze GraphSchemaLoader für Vorschläge
  • Zeige Warnungen bei "prohibited" Edges

UI-Features:

  • Typisch (grün)
  • ⚠️ Atypisch (gelb)
  • Verboten (rot)
  • Vorschläge basierend auf Source/Target Section-Types

Phase 3: Feature-Integration

3.1 Interview-Wizard-Integration

Dateien:

  • src/interview/types.ts
  • src/interview/renderer.ts
  • src/interview/wizardState.ts

Tasks:

  • CaptureTextStep erweitern:
    sectionType?: string;
    output?: {
      includeSectionCallout?: boolean;
    };
    
  • CaptureTextLineStep erweitern:
    output?: {
      generateBlockId?: boolean;
      blockIdFromKey?: boolean;
    };
    
  • renderer.ts erweitern:
    • Funktion renderSectionWithType() hinzufügen
    • Automatische [!section] Callout-Einfügung
    • Automatische Block-ID-Generierung

Tests:

  • src/tests/interview/renderer.test.ts erweitern
  • Test: Section-Type-Rendering
  • Test: Block-ID-Generierung

3.2 Chain-Workbench-Integration

Dateien:

  • src/workbench/types.ts
  • src/workbench/todoGenerator.ts
  • src/analysis/chainInspector.ts

Tasks:

  • WorkbenchMatch erweitern:
    sectionTypes?: Map<string, string>;
    
  • MissingLinkTodo erweitern:
    fromSectionType?: string;
    toSectionType?: string;
    
  • todoGenerator.ts erweitern:
    • Berücksichtige Section-Types bei Edge-Type-Vorschlägen
    • Nutze graph_schema.md für Vorschläge
  • chainInspector.ts erweitern:
    • Erkenne Intra-Note-Edges
    • Nutze Section-Types für besseres Matching

Tests:

  • src/tests/workbench/todoGenerator.test.ts erweitern
  • Test: Section-Type-basierte Vorschläge

3.3 Mapping-Integration

Dateien:

  • src/mapping/mappingBuilder.ts
  • src/mapping/semanticMappingBuilder.ts
  • src/mapping/updateMappingBlocks.ts

Tasks:

  • MappingContext erweitern:
    sectionTypes: Map<string, string>;
    blockIds: Map<string, string>;
    
  • Funktion generateIntraNoteEdges() hinzufügen:
    • Generiere automatische Edges zwischen Sections
    • Nutze graph_schema.md für Default-Edge-Types
    • Nur wenn keine expliziten Edges vorhanden

Tests:

  • src/tests/mapping/mappingBuilder.test.ts erweitern
  • Test: Automatische Intra-Note-Edge-Generierung

Phase 4: Validierung & Linting

4.1 Lint-Rules

Dateien: src/lint/rules/ (NEU)

Tasks:

4.1.1 Section-Type-Validierung

  • rule_section_type.ts erstellen
  • Prüfe: Section-Type muss in types.yaml existieren
  • Warnung: Fehlende Block-IDs für referenzierte Sections
  • Warnung: Section-Types ohne explizite Edges

4.1.2 Edge-Validierung

  • rule_unkown_edge.ts erweitern
  • Prüfe: Edge-Types gegen graph_schema.md (prohibited)
  • Warnung: Atypische Edges (nicht in "typical")

4.1.3 Block-ID-Validierung

  • rule_block_id.ts erstellen
  • Warnung: Fehlende Block-IDs für referenzierte Sections
  • Warnung: Doppelte Block-IDs innerhalb einer Note
  • Warnung: Unbenutzte Block-IDs

Tests:

  • src/tests/lint/rules/rule_section_type.test.ts erstellen
  • src/tests/lint/rules/rule_block_id.test.ts erstellen

4.2 Vault-Triage-Erweiterung

Dateien:

  • src/workbench/vaultTriageScan.ts
  • src/commands/vaultTriageScanCommand.ts

Tasks:

  • Erkenne Notes ohne Section-Types
  • Erkenne fehlende Block-IDs bei referenzierten Sections
  • Erkenne Intra-Note-Edges, die noch nicht explizit sind
  • Zeige Verbesserungsvorschläge

Phase 5: Commands

5.1 Neue Commands

Datei: src/main.ts (Command-Registrierung)

Tasks:

5.1.1 "Add Section Type"

  • Command-ID: mindnet:add-section-type
  • Öffne SectionTypeModal
  • Füge [!section] Callout zur aktuellen Section hinzu
  • Generiere Block-ID falls nicht vorhanden

5.1.2 "Add Block ID to Heading"

  • Command-ID: mindnet:add-block-id
  • Füge Block-ID zur aktuellen Überschrift hinzu
  • Generiere ID aus Heading-Text (slugified)

5.1.3 "Insert Intra-Note Edge"

  • Command-ID: mindnet:insert-intra-note-edge
  • Füge [!edge] Callout mit Block-Reference hinzu
  • Zeige Autovervollständigung für Block-IDs

Phase 6: Dokumentation

6.1 Benutzerhandbuch

Datei: docs/01_Benutzerhandbuch.md

Tasks:

  • Abschnitt "Section Types" hinzufügen
  • Abschnitt "Intra-Note-Edges" hinzufügen
  • Abschnitt "Block-IDs" hinzufügen
  • Quick-Start-Guide für WP-26 Features

6.2 Entwicklerhandbuch

Datei: docs/03_Entwicklerhandbuch.md

Tasks:

  • Abschnitt "WP-26 Integration" hinzufügen
  • API-Referenz für neue Funktionen
  • Beispiele für Section-Type-Parsing

Zusammenfassung

Phase Komponenten Status
Phase 1 Section-Parsing, Edge-Parsing, Schema-Loader Offen
Phase 2 Section-Type-Modal, Block-ID-Autocomplete, Edge-Chooser Offen
Phase 3 Interview, Chain-Workbench, Mapping Offen
Phase 4 Lint-Rules, Vault-Triage Offen
Phase 5 Commands Offen
Phase 6 Dokumentation Offen

Nächste Schritte

  1. Review der Spezifikation (WP26_Plugin_Interface_Specification.md)
  2. Priorisierung: Welche Phase zuerst?
  3. Start mit Phase 1: Grundlagen (Parsing & Schema-Loader)

Ende der Checkliste