diff --git a/app/main.py b/app/main.py index 394f8d0..349357a 100644 --- a/app/main.py +++ b/app/main.py @@ -421,9 +421,18 @@ def _row_to_detail(row): field = cell.get("field", "") if field: rating_raw = cell.get("rating", 0) - # DB speichert rating als 1-5 Skala (1=−−,2=−,3=○,4=+,5=++), - # matrix_mini erwartet -2..+2. Mapping: DB-3=0, DB-4=+1, DB-5=+2, DB-2=−1, DB-1=−2 - rating_normalized = int(rating_raw) - 3 + # DB speichert rating als −5..+5 Skala (siehe models.py:MatrixEntry). + # matrix_mini erwartet die gleiche Skala — kein Shift. + # (Frueher 1..5 → -2..+2 mit `- 3`; DB-Migration auf -5..+5 ist + # laengst durch, der Shift war ein Bug der ratings={3,4,5} alle + # auf m-p mapped → "+/++ gleichfarbig"-Befund aus #177.) + try: + rating_normalized = int(rating_raw) + except (TypeError, ValueError): + rating_normalized = 0 + # Defensiv: wenn rating ausserhalb -5..+5 liegt, clampen. + if rating_normalized < -5: rating_normalized = -5 + if rating_normalized > 5: rating_normalized = 5 symbol = cell.get("symbol", "○") matrix_dict[field] = {"rating": rating_normalized, "symbol": symbol}