5.3 KiB
5.3 KiB
QA Issues – 2026-02-24
Scope: Agentische, statische QA-Review (Flutter/Dart CLI lokal nicht verfügbar: flutter fehlt). Fokus auf 4-Step-Flow, Save/Load/Delete, JSON-Export und UX-Kantenfälle.
Issue 1 (P1) – 4-Step-Flow lässt Fortschritt ohne Pflichtdaten zu
Bereich: 4-Step-Flow
Beobachtung
- Im
Stepperkann man perWeiter/Tap bis Schritt 4 springen, auch ohne Bildauswahl. - Auf Schritt 4 ist „Generate Mosaic“ aktiv, aber
_generate()bricht stillschweigend ab, wenn kein Bild vorhanden ist.
Code-Hinweis
lib/main.dart:1068-1127(Stepperohne Guard/Validation)lib/main.dart:1250-1255(Generate-Button nur an_isGeneratinggebunden)lib/main.dart:884ff (_generate()returnt bei_sourceImageBytes == nullohne User-Feedback)
Repro-Schritte
- App öffnen (kein Bild geladen).
- Im Mosaic-Stepper mehrfach „Weiter“ klicken oder direkt auf Schritt 4 tippen.
- „Generate Mosaic“ klicken.
- Es passiert visuell nichts (kein Ergebnis, kein Hinweis).
Akzeptanzkriterium
- Schritt-Navigation ist zustandsbasiert: Schritt 2-4 erst zugänglich, wenn notwendige Voraussetzungen erfüllt sind.
- „Generate Mosaic“ ist deaktiviert, solange kein Bild geladen ist.
- Alternativ/zusätzlich: verständliche Fehlermeldung (Snackbar), falls Generierung ohne Bild ausgelöst wird.
Issue 2 (P1) – Projekt-Load mit leerem Bild leert bestehenden Zustand nicht
Bereich: Save/Load-Flow
Beobachtung
- Beim Laden werden
_sourceImageBytesund_resultnur gesetzt, wenndata.sourceImageBytes != null. - Lädt man ein Projekt ohne Bild, bleibt ggf. ein altes Bild/Ergebnis aus vorherigem Zustand erhalten.
Code-Hinweis
lib/main.dart:308-313(fehlenderelse-Zweig zum expliziten Zurücksetzen)
Repro-Schritte
- Projekt A mit Bild laden/generieren.
- Projekt B laden, das ohne Bild gespeichert wurde (oder manuell erstellt wurde).
- Erwartung: leerer/initialer Zustand.
- Ist-Zustand: vorheriges Bild kann bestehen bleiben.
Akzeptanzkriterium
- Beim Laden eines Projekts ohne
sourceImageByteswird Zustand explizit zurückgesetzt (_sourceImageBytes = null,_result = null, ggf. Step auf 1). - UI zeigt konsistent den tatsächlich geladenen Projektzustand.
Issue 3 (P1) – Projekt-Snapshots sind nicht reproduzierbar, da Katalog nicht versioniert wird
Bereich: Save/Load-Flow + JSON-Export
Beobachtung
- Gespeicherte Projekte enthalten Parameter + Bild, aber keinen Snapshot des verwendeten Farb-Katalogs.
- Beim Laden wird mit aktuellem globalen
_catalogneu generiert → Ergebnis kann von ursprünglichem Snapshot abweichen.
Code-Hinweis
lib/project_codec.dart(MosaicProjectDataohne Katalogdaten)lib/main.dart:316(_generate()nach Load nutzt aktuellen_catalog)
Repro-Schritte
- Mit Katalog-Set A ein Projekt erzeugen/speichern.
- Katalogfarben ändern (hinzufügen/löschen/umfärben).
- Projekt laden.
- Ergebnisfarben/Zuordnung unterscheiden sich vom ursprünglichen Stand.
Akzeptanzkriterium
- Projektspeicherung enthält eine Palette/Katalog-Snapshot-Version (mind. Name + Farbe pro Eintrag).
- Load nutzt standardmäßig den gespeicherten Snapshot (mit klarer UX bei Konflikten/Optionen).
- Reproduzierbarkeit des Mosaiks ist gewährleistet.
Issue 4 (P2) – Export JSON nicht klar reproduzierbar ohne Ergebnis
Bereich: JSON-Export
Beobachtung
- Export enthält
projectimmer,resultaber nur falls bereits generiert. - Wenn vor Export keine Generierung lief, fehlt Kerninformation (
assignments/palette) ohne klaren Nutzerhinweis.
Code-Hinweis
lib/main.dart:378-392
Repro-Schritte
- Bild laden, aber nicht generieren.
- „Export JSON“ klicken.
- Exportdatei enthält kein
result-Objekt.
Akzeptanzkriterium
- UX-Entscheidung explizit umsetzen:
- entweder Export-Button nur mit vorhandenem Ergebnis aktivieren, oder
- vor Export automatisch generieren, oder
- deutlichen Hinweisdialog anzeigen („Export ohne Ergebnisdaten“).
Issue 5 (P3) – „Fertig“-CTA im letzten Step ohne klaren Effekt
Bereich: 4-Step-Flow UX
Beobachtung
- Im letzten Step zeigt der Continue-Button „Fertig“, führt aber funktional zu keiner sichtbaren Aktion.
Code-Hinweis
lib/main.dart:1071-1093(onStepContinueerhöht nur bis max. letztem Step)
Repro-Schritte
- Bis Schritt 4 navigieren.
- „Fertig“ klicken.
- Kein Abschluss-Feedback/State-Change.
Akzeptanzkriterium
- Letzter CTA hat klare Bedeutung (z. B. „Generieren“, „Abschließen“, „Zum Export“) oder wird im letzten Step ausgeblendet.
- Nutzer erhält eindeutiges Abschlussfeedback.
Issue 6 (P3) – Lösch-Flow ohne Hinweis auf betroffenen Arbeitsstand
Bereich: Delete-Flow UX
Beobachtung
- Beim Löschen eines Snapshots gibt es nur Dateiname + Bestätigung.
- Kein Hinweis, ob gerade geladener Stand betroffen ist bzw. wie sich das auf „Letzten Stand laden“ auswirkt.
Code-Hinweis
lib/main.dart:333-367
Repro-Schritte
- Snapshot laden.
- In Projekte denselben Snapshot löschen.
- Nutzer bleibt ohne Kontext, ob aktiver Stand/Latest-Verhalten beeinflusst ist.
Akzeptanzkriterium
- Dialog/Feedback benennt Auswirkungen klar (z. B. „Aktuell geladener Zustand bleibt im Speicher bis Wechsel/Neustart“).
- Optional: Markierung des aktuell geladenen Snapshots in der Liste.