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. #23
|
|
@ -910,9 +910,20 @@ def build_edges_for_note(
|
||||||
# Schritt 3: ID-Zuweisung nach Scope-Entscheidung
|
# Schritt 3: ID-Zuweisung nach Scope-Entscheidung
|
||||||
final_edges: List[dict] = []
|
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)
|
# 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:
|
for semantic_key in sorted_semantic_keys:
|
||||||
group = semantic_groups[semantic_key]
|
group = semantic_groups[semantic_key]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user