Update deterministic sorting of semantic_groups in build_edges_for_note to handle None values correctly. Introduced a custom sort function to ensure consistent edge extraction across batches, preventing variance in edge counts.

This commit is contained in:
Lars 2026-01-12 11:31:20 +01:00
parent d0012355b9
commit 0b2a1f1a63

View File

@ -910,9 +910,20 @@ def build_edges_for_note(
# Schritt 3: ID-Zuweisung nach Scope-Entscheidung
final_edges: List[dict] = []
# WP-24c v4.5.9: Deterministische Sortierung der semantic_groups für konsistente Edge-Extraktion
# WP-24c v4.5.10: Deterministische Sortierung der semantic_groups für konsistente Edge-Extraktion
# Verhindert Varianz zwischen Batches (33 vs 34 Kanten)
sorted_semantic_keys = sorted(semantic_groups.keys())
# WICHTIG: target_section kann None sein, daher benötigen wir eine benutzerdefinierte Sortierfunktion
def sort_key_func(key_tuple):
"""
Sortierfunktion für semantic_keys, die None-Werte korrekt behandelt.
None wird als leere Zeichenkette behandelt, um Vergleichbarkeit zu gewährleisten.
"""
kind, semantic_source, target_id, target_section = key_tuple
# Konvertiere None zu leerem String für konsistente Sortierung
target_section_safe = target_section if target_section is not None else ""
return (kind, semantic_source, target_id, target_section_safe)
sorted_semantic_keys = sorted(semantic_groups.keys(), key=sort_key_func)
for semantic_key in sorted_semantic_keys:
group = semantic_groups[semantic_key]