From e6ce7e241c33b9bffd426b1b13edc0c744899798 Mon Sep 17 00:00:00 2001 From: Lars Date: Mon, 27 Apr 2026 09:30:29 +0200 Subject: [PATCH] fix: convert skill target_level to INTEGER instead of string - build_skill_assignments() now returns INTEGER (1-5) for target_level - Previously returned string names ('einsteiger', 'grundlagen', etc.) - Caused 91/95 import failures with 'invalid input syntax for type integer' - Remaining 4 failures are wiki pages missing both goal AND execution (invalid data) Issue: Wiki import - dict-cursor fixes phase 2 --- backend/smw_mapper.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/backend/smw_mapper.py b/backend/smw_mapper.py index a989bbb..4ab5ff3 100644 --- a/backend/smw_mapper.py +++ b/backend/smw_mapper.py @@ -273,7 +273,9 @@ def build_skill_assignments(mapped: dict) -> list[dict]: Erstellt Skill-Zuordnungen aus PrimaryCapability + CapabilityLevel. CapabilityLevel [3, 2] korrespondiert mit PrimaryCapability [Schnellkraft, Schnelligkeitsausdauer] - → ergibt: [{skill: Schnellkraft, target_level: aufbau}, {skill: Schnelligkeitsausdauer, target_level: grundlagen}] + → ergibt: [{skill: Schnellkraft, target_level: 3}, {skill: Schnelligkeitsausdauer, target_level: 2}] + + WICHTIG: target_level ist INTEGER (1-5), nicht String! """ skills = mapped.get("skill_names", []) levels = mapped.get("skill_levels_raw", []) @@ -281,9 +283,15 @@ def build_skill_assignments(mapped: dict) -> list[dict]: assignments = [] for idx, skill_name in enumerate(skills): level_str = levels[idx] if idx < len(levels) else "1" + # Konvertiere zu INTEGER statt String-Namen + try: + target_level = int(level_str.strip()) + except (ValueError, AttributeError): + target_level = 1 # Fallback + assignments.append({ "skill_name": skill_name, - "target_level": map_capability_level(level_str), + "target_level": target_level, # INTEGER 1-5 "required_level": None, # Nicht im Wiki spezifiziert "intensity": None, # Nicht im Wiki spezifiziert "is_primary": idx == 0,