fix: convert skill target_level to INTEGER instead of string
Some checks failed
Deploy Development / deploy (push) Successful in 54s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m55s

- 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
This commit is contained in:
Lars 2026-04-27 09:30:29 +02:00
parent 97a7fe7cba
commit e6ce7e241c

View File

@ -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,