Einstellungen-Screen (ViewModel + UI + Persistenz) #35

Closed
opened 2026-05-13 23:56:49 +00:00 by jreinemann-euris · 1 comment
jreinemann-euris commented 2026-05-13 23:56:49 +00:00 (Migrated from github.com)

Feature: Einstellungen-Screen mit Personenzahl, kcal/Tag und Export/Import-Platzhalter

Part of: #8
Depends on: #33 (Bottom Navigation Bar und App-Shell)

Ziel

Der Einstellungen-Tab zeigt einen Screen zum Bearbeiten von Personenzahl und kcal/Tag. Die Werte werden via SettingsRepository (Room) persistiert und fliessen in die Reichweitenberechnung ein.

Scope

  • SettingsScreen-Composable (ui/settings/)
  • SettingsViewModel mit StateFlow
  • Eingabefelder: Personenzahl (householdSize), kcal pro Tag pro Person (dailyKcalPerPerson)
  • Persistierung ueber bestehenden SettingsRepository (Room key-value Store)
  • Platzhalter-Buttons fuer Datenexport/-import (Funktionalitaet kommt in Block 6)
  • Integration: CalculateSupplyRangeUseCase + DashboardViewModel lesen Settings aus Repository statt hardcodierte Defaults

Technische Hinweise

  • Bestehende Dateien: domain/repository/SettingsRepository.kt, data/repository/SettingsRepositoryImpl.kt
  • SettingsEntity ist key-value basiert (key: String, value: String)
  • CalculateSupplyRangeUseCase hat aktuell DEFAULT_HOUSEHOLD_SIZE=2, DEFAULT_DAILY_KCAL_PER_PERSON=2000 → soll Settings aus Repository lesen
  • DashboardViewModel muss Settings-Flow einbinden und an CalculateSupplyRangeUseCase weitergeben

Akzeptanzkriterien

  • Einstellungen-Tab zeigt Personenzahl und kcal/Tag mit aktuellen Werten
  • Werte koennen bearbeitet und gespeichert werden
  • Gespeicherte Werte ueberleben App-Neustart (Room-Persistierung)
  • Reichweitenberechnung im Dashboard verwendet die gespeicherten Werte
  • Export/Import-Buttons sind sichtbar (Platzhalter, zeigen Toast/Hinweis)
  • Tests: SettingsViewModel Unit-Tests, Build kompiliert
## Feature: Einstellungen-Screen mit Personenzahl, kcal/Tag und Export/Import-Platzhalter Part of: #8 Depends on: #33 (Bottom Navigation Bar und App-Shell) ### Ziel Der Einstellungen-Tab zeigt einen Screen zum Bearbeiten von Personenzahl und kcal/Tag. Die Werte werden via SettingsRepository (Room) persistiert und fliessen in die Reichweitenberechnung ein. ### Scope - SettingsScreen-Composable (ui/settings/) - SettingsViewModel mit StateFlow - Eingabefelder: Personenzahl (householdSize), kcal pro Tag pro Person (dailyKcalPerPerson) - Persistierung ueber bestehenden SettingsRepository (Room key-value Store) - Platzhalter-Buttons fuer Datenexport/-import (Funktionalitaet kommt in Block 6) - Integration: CalculateSupplyRangeUseCase + DashboardViewModel lesen Settings aus Repository statt hardcodierte Defaults ### Technische Hinweise - Bestehende Dateien: domain/repository/SettingsRepository.kt, data/repository/SettingsRepositoryImpl.kt - SettingsEntity ist key-value basiert (key: String, value: String) - CalculateSupplyRangeUseCase hat aktuell DEFAULT_HOUSEHOLD_SIZE=2, DEFAULT_DAILY_KCAL_PER_PERSON=2000 → soll Settings aus Repository lesen - DashboardViewModel muss Settings-Flow einbinden und an CalculateSupplyRangeUseCase weitergeben ### Akzeptanzkriterien - [ ] Einstellungen-Tab zeigt Personenzahl und kcal/Tag mit aktuellen Werten - [ ] Werte koennen bearbeitet und gespeichert werden - [ ] Gespeicherte Werte ueberleben App-Neustart (Room-Persistierung) - [ ] Reichweitenberechnung im Dashboard verwendet die gespeicherten Werte - [ ] Export/Import-Buttons sind sichtbar (Platzhalter, zeigen Toast/Hinweis) - [ ] Tests: SettingsViewModel Unit-Tests, Build kompiliert
jreinemann-euris commented 2026-05-14 00:51:02 +00:00 (Migrated from github.com)

Abgeschlossen (2025-05-14)

Zyklen: 1
Tests: 6 neue + alle bestehenden Tests, 0 Fehler

Implementierte Artefakte

  • SettingsViewModel: Lädt/speichert householdSize und dailyKcalPerPerson via SettingsRepository
  • SettingsScreen: Eingabefelder mit Validierung, Speicher-Button, Export/Import-Platzhalter
  • SettingsUiState: Datenklasse für UI-State
  • DashboardViewModel-Integration: Liest Settings reaktiv und berechnet Reichweite dynamisch
  • DAO/Repository-Erweiterung: observeValue(key) Flow für reaktive Einzelwert-Beobachtung
  • SettingsViewModelTest: 6 Unit-Tests (Defaults, Persistierung, Validierung)
## Abgeschlossen (2025-05-14) **Zyklen:** 1 **Tests:** ✅ 6 neue + alle bestehenden Tests, 0 Fehler ### Implementierte Artefakte - ✅ SettingsViewModel: Lädt/speichert householdSize und dailyKcalPerPerson via SettingsRepository - ✅ SettingsScreen: Eingabefelder mit Validierung, Speicher-Button, Export/Import-Platzhalter - ✅ SettingsUiState: Datenklasse für UI-State - ✅ DashboardViewModel-Integration: Liest Settings reaktiv und berechnet Reichweite dynamisch - ✅ DAO/Repository-Erweiterung: observeValue(key) Flow für reaktive Einzelwert-Beobachtung - ✅ SettingsViewModelTest: 6 Unit-Tests (Defaults, Persistierung, Validierung)
Sign in to join this conversation.
No description provided.