Files
korken_mosaic/docs/review/review-20260224.md

53 lines
3.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Code Review Änderungen von `814705c` bis `HEAD` (`ab7aa62`)
## 1) High-risk Findings
### Keine blocker-kritischen Defekte gefunden
Ich habe im betrachteten Commit keine eindeutigen Crash-/Datenverlust-Blocker gefunden, die einen sofortigen Release-Stopp erzwingen.
> Hinweis: Es gibt aber eine **relevante funktionale Regression** (siehe Nitpicks #1), die je nach Produktanforderung als Go/No-Go-Kriterium gewertet werden kann.
---
## 2) Nitpicks / Verbesserungen
1. **Funktionale Regression in der UI (ehemals 4 Style-Regler, jetzt nur noch 1 sichtbar)**
In `lib/main.dart` zeigt `_buildColorStep()` nur noch den Slider `fidelityStructure`.
Die bisherigen Feineinstellungen `ditheringStrength`, `edgeEmphasis`, `colorVariation` sind weiter im State/Codec vorhanden, aber nicht mehr direkt im UI editierbar.
**Impact:** Nutzer verlieren granulare Qualitätskontrolle; gespeicherte Werte bleiben zwar erhalten, sind aber kaum noch aktiv manipulierbar.
2. **Stepper-Logik ohne Validierung / Guidance**
`onStepContinue` lässt das Voranschreiten ohne notwendige Preconditions zu (z. B. ohne Bildauswahl bis Schritt 4). Das ist technisch robust (Generate guarded), aber UX-seitig irreführend.
**Vorschlag:** Continue-Button je Schritt konditional deaktivieren oder klare Inline-Hinweise anzeigen.
3. **`Fertig`-Button im letzten Step ohne echte Aktion**
In `controlsBuilder` wird im letzten Schritt der Label-Text auf `Fertig` gesetzt, aber `onStepContinue` führt dort effektiv nichts mehr aus.
**Vorschlag:** Auf letzter Stufe Button ausblenden oder mit sinnvoller Aktion belegen (z. B. Export, Speichern, Zur Projektliste).
4. **Projekt-Ladesemantik setzt immer auf Step `result`**
Beim Laden mit Bild springt der Flow direkt auf `MosaicFlowStep.result`. Das ist für „Quick resume“ okay, nimmt aber ggf. den Guided-Flow-Charakter.
**Vorschlag:** Optionales Verhalten (z. B. Restore des letzten Steps oder Konfiguration `resumeAtResult`).
5. **Testabdeckung für neue Kernpfade noch dünn**
Es gibt gute Basis-Tests (`project_codec_test`, einfacher Stepper-Smoke-Test), aber es fehlen Tests für:
- latest/autosave-Verhalten (`latest_project.json`),
- manuell vs. automatisch speichern,
- Export-JSON-Struktur inkl. Result-Payload,
- Laden aus Snapshot vs. latest.
---
## 3) Go/No-Go Empfehlung
**Empfehlung: GO mit Auflagen (kein Hard No-Go).**
Begründung:
- Die neuen Features (4-Step-Flow, autosave/latest, JSON-Export, Bestätigungsdialog beim Löschen) sind grundsätzlich sinnvoll umgesetzt.
- Kein klarer, reproduzierbarer Blocker im Diff erkennbar.
- Vor Release sollten jedoch mindestens die UX-/Funktionsregressionspunkte (insb. fehlende 3 Style-Regler) bewusst entschieden/fixiert werden.
**Release-Auflagen (kurz):**
1. Entscheiden/fixen, ob die 3 fehlenden Style-Regler absichtliche Scope-Reduktion oder Regression sind.
2. Stepper-UX (Continue/Finish-Verhalten) konsistenter machen.
3. 23 gezielte Tests für Save/Load/Export-Pfade ergänzen.