{
"llm" : {
"feedback" : "# Exercise: parking\n\n### Correctness\n- `FlatRateCard.cost()` gibt immer 150 zurück, unabhängig davon, ob überhaupt geparkt wurde; damit wird beim Beispielablauf der Umsatz zu hoch und der geforderte Gesamtumsatz von **156.75 CHF** wird so nicht erreicht.\n- In `GroupCard` ist die Bedingung für „mehr als 20 nicht erlaubt“ falsch umgesetzt: `person < 0` erlaubt `0` Personen, obwohl „bis 5“ in der Aufgabenstellung impliziert, dass es bei 1 startet (und „mehr als 20“ die einzige explizit verbotene Obergrenze ist).\n\n### Suggestion\n- Überlege bei der `FlatRateCard`, wann die **fixen Monatskosten** in die Abrechnung einfliessen sollen: pro Abrechnungsperiode/Reset genau einmal oder bei jedem `cost()`-Aufruf? Schau dir an, wie `calculateRevenueAndReset()` `cost()` verwendet, um Doppelzählungen bzw. falsche Summen zu vermeiden.\n- Prüfe bei `GroupCard` die erlaubten Werte für die Personenanzahl anhand der Tarif-Tabelle und passe die Validierung so an, dass keine „leeren“ Gruppen akzeptiert werden, falls das nicht vorgesehen ist.\n\n### Code Style\n- In `FlatRateCard` ist `totalTime` faktisch ungenutzt (weil `cost()` nicht davon abhängt). Entweder entfernst du das Feld oder nutzt es bewusst (aber dann muss auch `cost()` damit zusammenhängen).\n- In `GroupCard` wäre der Feldname `person` als Plural (z.B. `persons`/`people`/`personCount`) verständlicher, weil es eine Anzahl ist.\n\n\n# Exercise: labyrinth\n\nLlm Evaluation ist für diese Aufgabe deaktiviert. Entferne die .llmignore Datei vom Package der Aufgabe.\n\n\n# Exercise: visualizer\n\n### Correctness\n- In `Visualizer` verwendest du bei der Distanzberechnung `guiY(point.getY())`, aber `guiY(...)` erwartet den *gleichen* Y-Wert-Typ wie beim Plotten (dort wird intern ggf. logarithmiert). Aktuell vergleichst du Mausposition mit einer evtl. anders skalierten Koordinate, weil `guiY` in deinem Code selbst nochmal skaliert – das kann das Hover-Highlighting ungenau/falsch machen.\n- Deine Logik `logY` im `Visualizer` wird auf `true` gesetzt, sobald *irgendein* Punkt `isLogY()` liefert. Laut deiner eigenen Javadoc sollten aber alle Punkte im Datensatz konsistent sein; wenn das nicht der Fall ist, kann die Darstellung inkonsistent werden (und es ist nicht klar definiert, was passieren soll).\n- In `Movie.getGroup()` gruppierst du nach Jahrzehnt (`year/10*10`). Aus den Screenshots ist die Gruppierung aber nicht eindeutig „Jahrzehnte“; falls erwartet ist, dass die Gruppen/Legende einem anderen Attribut entsprechen (z.B. Genre o.ä. – je nach Datensatz), passt das evtl. nicht zu den Anforderungen/der beabsichtigten Visualisierung.\n\n### Suggestion\n- Schau dir an, welche Werte du beim Zeichnen (`plotData`) für die Bildschirm-Y-Koordinate benutzt, und welche Werte du beim Hover-Abstandstest benutzt. Wenn beide nicht exakt den gleichen Transformationsweg (inkl. Log-Skalierung) nehmen, kann der „nächste Punkt“ falsch ermittelt werden.\n- Überlege, ob du die Entscheidung „logarithmische Y-Achse ja/nein“ wirklich aus „mindestens ein Punkt will log“ ableiten willst, oder ob du stattdessen erzwingst/prüfst, dass alle Punkte übereinstimmen (oder die Entscheidung an einer zentralen Stelle triffst).\n- Vergleiche die Legende/Farbgruppen in den Screenshots mit deiner Gruppierungslogik bei `Movie`. Falls die Aufgabenidee eine bestimmte Gruppierung nahelegt, orientiere dich daran und passe `getGroup()` entsprechend an.\n\n### Code Style\n- In `Visualizer` ist `logY` als Feld ok, aber die Ermittlung per Schleife im Konstruktor könnte klarer sein, wenn du die Regel („alle gleich“) explizit machst (z.B. Validierung statt „erstes true gewinnt“).\n- In `Processor` sind viele Getter (`getManufacturer()`, `getModel()`, `getYear()`, `getMonth()`) nicht mehr nötig, wenn du sie nirgends verwendest; entweder verwenden oder weglassen, um die Klasse schlanker zu halten.\n- `Movie.getDescription()` rundet Budget hart auf Millionen ab (`budget / 1_000_000` als long). Falls du mehr Präzision willst, wäre eine Formatierung (z.B. mit Nachkommastellen oder Tausendertrennzeichen) lesbarer.\n\n\n# Exercise: swissmap\n\nLlm Evaluation ist für diese Aufgabe deaktiviert. Entferne die .llmignore Datei vom Package der Aufgabe.\n",
"status" : "SUCCESS"
}
}