{
"llm" : {
"feedback" : "# Exercise: parking\n\n### Correctness\n- `FlatRateCard.cost()` liefert immer 150 CHF, unabhängig davon, ob die Karte überhaupt „benutzt“ wurde; damit wird der Umsatz auch dann um 150 erhöht, wenn nie geparkt wurde (die Aufgabenbeschreibung spricht von Monatskosten, aber im Kontext des Systems wird `cost()` pro Abrechnungsperiode verwendet).\n- In `GroupCard` ist `HOURLY_RATE` als `static` deklariert und wird im Konstruktor überschrieben; dadurch beeinflusst eine `GroupCard`-Instanz die Tarifberechnung aller anderen `GroupCard`-Instanzen (bei unterschiedlichen Gruppengrössen wären die Kosten falsch).\n\n### Suggestion\n- Überlege bei der `FlatRateCard`, wie sich eine „Monatsgebühr“ im gegebenen Ablauf (`calculateRevenueAndReset()` ruft `cost()` und danach `reset()`) verhalten soll: Soll die 150 CHF immer anfallen, oder nur, wenn die Karte in der Periode überhaupt registriert/aktiv genutzt wurde? Entscheide dich konsistent mit dem System-Konzept „Abrechnen + Reset“.\n- Mach den Tarif der `GroupCard` zu einem Instanzwert statt zu einem Klassenwert: Jede Karte sollte ihren eigenen, beim Erzeugen festgelegten Stundenansatz behalten, ohne andere Karten zu beeinflussen.\n\n### Code Style\n- In `GroupCard` sollte `HOURLY_RATE` nicht `static` sein und zudem als Konstante benannt werden, wenn er konstant ist; wenn er pro Instanz variiert, passt eher ein normales Feld (z.B. nicht in ALL_CAPS) und ggf. `final`.\n- Parameter- und Variablennamen wie `Personen` besser klein beginnen (`personen`) und konsistent zur restlichen Codebasis (Deutsch/Englisch nicht mischen).\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.main()` hat die falsche Signatur: Es ist keine `public static void main(String[] args)`-Methode, dadurch startet das Programm je nach Umgebung nicht wie erwartet.\n- `Lake` implementiert nicht `Hoverable`, damit fehlt für Seen die geforderte Hover-Funktionalität (Beschreibung anzeigen via Mouse-Over).\n- Die Klasse `ModeButton` fehlt komplett; damit ist Teil (d) (Clickable + Umschalten Satellite-Mode per Klick) nicht umgesetzt.\n- In `Lake.draw(...)` ist der Skalierungsfaktor für das See-Icon an die Kartenbreite gekoppelt (`SwissMap.WIDTH * ... / BG_PIXEL_WIDTH`), wodurch das Icon extrem gross werden kann; gefordert ist, dass das Objekt “wie dargestellt” erscheint (also als Icon in sinnvoller Grösse an der Position).\n\n### Suggestion\n- Schau dir an, welche Methodensignatur Java als Programmeinstieg erwartet, und passe die `main`-Methode entsprechend an.\n- Für `Lake`: orientiere dich an deiner Umsetzung in `City`/`Mountain` (hovered-Flag, `onMouseEnter/Exit`, `getInteractiveArea`) und überlege dir eine passende `Shape` (z. B. `Rectangle` um das Icon oder ein Kreis).\n- Für den See-Icon-Scale: unterscheide zwischen “Map-Scale” (Hintergrundbild) und “Icon-Scale” (kleines Symbol). Überlege, ob du für Icons eher eine feste Pixelgrösse oder einen moderaten Faktor relativ zur GUI-Grösse willst.\n- Für (d): Du brauchst ein neues Component-Objekt, das sowohl zeichnen als auch Hover/Click behandeln kann und beim Klick `setSatelliteMode(...)` am selben `SwissMap`-Objekt umschaltet (denk an Referenz im Konstruktor).\n\n### Code Style\n- In `Circle` sind die Parameternamen `v`/`v1` wenig aussagekräftig; benenne sie eher wie `x`/`y` (oder `px`/`py`) damit klar ist, was geprüft wird.\n- In `City.draw(...)` sind Ausdrücke wie `rad*1/4` unnötig kompliziert/fehleranfällig (Integer-/Double-Lesbarkeit); schreibe das klarer, damit sofort ersichtlich ist, welche Position gemeint ist.\n- Magische Zahlen wie `-10` beim See-Offset und `IMG_W/IMG_H` sollten (wie du es bei `Mountain` gemacht hast) als Konstanten erklärt werden, idealerweise auch beim `Lake` (Icon-Breite/Höhe, Offset, etc.).\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"
}
}