{
"llm" : {
"feedback" : "# Exercise: parking\n\n### Correctness\n- `FlatRateCard.cost()` liefert immer 150 CHF, unabhängig davon, ob überhaupt geparkt wurde; dadurch wird auch bei 0 Minuten direkt Umsatz erzeugt (das passt nicht zu einem „Parkvorgang“-basierten Abrechnen und wird sehr wahrscheinlich den geforderten Gesamtumsatz verfälschen).\n- In `GroupCard` ist `person < 0` erlaubt, aber `person == 0` wird akzeptiert; laut Tabelle ist „bis 5“ sinnvoll, aber „0 Personen“ ist fachlich fragwürdig und kann zu unerwartetem Verhalten führen (je nach Tests).\n\n### Suggestion\n- Überlege dir beim Abo (`FlatRateCard`), wann die 150 CHF tatsächlich verrechnet werden sollen: pro Monat/Abrechnungsperiode, nicht automatisch „pro Karte sobald sie existiert“. Prüfe, ob die Kosten an einen Parkvorgang bzw. an die Abrechnungsrunde (`calculateRevenueAndReset`) gekoppelt sein müssen, damit der Gesamtumsatz im Beispiel korrekt herauskommt.\n- Prüfe bei `GroupCard`, welche Personenanzahlen laut Aufgabenstellung wirklich gültig sind (insbesondere Untergrenze). Passe die Validierung so an, dass nur realistische/erlaubte Werte durchgehen.\n\n3. Code Style:\n- `FlatRateCard` speichert `totalTime`, nutzt es aber für die Kostenberechnung gar nicht; entweder brauchst du den Zustand wirklich, oder du kannst ihn entfernen, um die Klasse klarer zu machen.\n- In `GroupCard` heißt das Feld `person`, obwohl es eigentlich „Anzahl Personen“ ist; ein pluraler/sprechender Name (z.B. `persons`/`numberOfPersons`) macht den Code leichter verständlich.\n- In `GroupCard` fehlen `@Override`-Annotationen bei `park`, `cost`, `reset`; das hilft, Fehler früh zu entdecken (z.B. bei Tippfehlern in Methodensignaturen).\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: swissmap\n\n### Correctness\n- `SwissMapApp`: Die `main`-Methode hat die falsche Signatur (`void main()`); so wird sie als Programmeinstieg normalerweise nicht ausgeführt.\n- Teil c) ist nicht erfüllt: `City` und `Lake` implementieren noch kein `Hoverable` und zeigen beim Darüberfahren keine Beschreibung an.\n- Teil c) ist bei `Mountain` nur teilweise erfüllt: Es wird beim Hover zwar das Bild gewechselt, aber die geforderte **Beschreibung** wird nicht angezeigt.\n- `Mountain.getInteractiveArea(...)`: Du verwendest `height` (Berg-Höhe in Metern) als Breite/Höhe des Rechtecks. Dadurch ist der interaktive Bereich riesig und hat nichts mit der Darstellung auf der Karte zu tun.\n- Teil d) fehlt komplett: `ModeButton` (Drawable + Hoverable + Clickable) ist nicht implementiert, und es gibt keinen Klick, der `setSatelliteMode(...)` umschaltet.\n\n### Suggestion\n- Schau dir die übliche Java-Entry-Point-Signatur an und passe deine `main`-Methode so an, dass sie vom Runtime-System erkannt wird.\n- Für c): Überlege dir pro Klasse (`City`, `Lake`, `Mountain`) ein `boolean hovered`-Feld und nutze es in `draw(...)`, um zusätzlich Text zu zeichnen (z.B. via `toString()`), aber eben nur wenn `hovered == true`.\n- Für den interaktiven Bereich: Nimm nicht Domänenwerte wie “4634 m” als Pixelgröße. Leite die Größe stattdessen aus der tatsächlichen Icon-/Marker-Darstellung ab (z.B. feste Pixelgröße oder abhängig von der aktuellen Skalierung/Icons).\n- Für d): Der Button braucht eine Referenz auf dein `SwissMap`-Objekt (das du schon als `map` hast). Überlege dir, wie du beim Linksklick den aktuellen Modus invertierst (statt immer nur `true`/`false` fest zu setzen).\n\n### Code Style\n- `SwissMapApp`: `import ch.trick17.gui.component.Component;` ist unbenutzt und kann weg.\n- `Mountain`: `isHovered` könntest du als `private boolean hovered;` halten (ohne `= false`, da Java default `false` setzt) und den Namen konsistent zu den anderen Klassen wählen, wenn du Hover überall einbaust.\n- `City.draw(...)`: `gui.getFontSize()` als Kreisradius ist ziemlich “zufällig” gekoppelt; eine klar benannte Konstante (z.B. `MARKER_RADIUS`) macht die Absicht verständlicher.\n\n\n# Exercise: visualizer\n\nLlm Evaluation ist für diese Aufgabe deaktiviert. Entferne die .llmignore Datei vom Package der Aufgabe.\n",
"status" : "SUCCESS"
}
}