Files
Torsten Schulz (local) f50ea76c89 Update StatusBox to display app version and adjust refresh intervals
Add a new element in StatusBox.vue to show the application version. Update the refresh interval for status display from every 0.5 seconds to every 1 second for improved performance. Increment mobile app version to 0.8.0-alpha8 and version code to 9. Introduce new VersionScreen in the mobile app for displaying version information, and update navigation and mock data accordingly.
2026-05-15 11:47:49 +02:00
..

TimeClock Android Frontend

Phase 1 enthält die native Android-Grundapp und die gemeinsamen Compose-Design-Widgets.

Phase 2 (API- und Auth-Fundament) ist umgesetzt:

  • Konfigurierbare API-Basis-URL (BuildConfig.API_BASE_URL), Standard: https://stechuhr3.tsschulz.de/api.
  • HTTP mit OkHttp, JSON mit kotlinx.serialization, normalisierte Fehler (ApiException).
  • JWT in EncryptedSharedPreferences (AndroidX Security Crypto), nicht im Klartext.
  • Login (POST /auth/login), Logout (POST /auth/logout), Session-Wiederherstellung (GET /auth/me beim App-Start).
  • Login-Oberfläche mit den bestehenden Tc*-Widgets; nach Anmeldung die Phase1-Demo-Shell mit echtem Benutzernamen und rollenbasierter Navigation (Admin-Zusatzmenü nur bei role == 1).
  • Debug-Build: Cleartext-HTTP erlaubt (composeApp/src/debug/AndroidManifest.xml) für lokales Testen.

Phase 3 (Kern-Zeiterfassung) ist umgesetzt:

  • Echter aktueller Status über GET /time-entries/current-state.
  • Stempelaktionen über POST /time-entries/clock.
  • Laufender Eintrag über GET /time-entries/running.
  • StatusBox mit echten Zeiten und Aktionsbuttons.
  • Tages-/Wochenwerte über GET /time-entries/stats/summary.
  • Wochenübersicht über GET /week-overview?weekOffset=....
  • Automatische Status-Aktualisierung alle 30 Sekunden nach Anmeldung.

Phase 4 (Buchungs-Workflows) ist umgesetzt:

  • Zeitkorrekturen: Worklog-Einträge nach Datum, heutige Korrekturen, Erstellen und Löschen.
  • Urlaub: Liste, Erstellen und Löschen.
  • Krankheit: Krankheitstypen, Liste, Erstellen und Löschen.
  • Arbeitstage: Jahresstatistik.
  • Kalender: Monatsansicht mit Feiertag, Krankheit, Urlaub und Arbeitsstunden.

API-URL setzen

In mobile-app/local.properties (wird typischerweise nicht eingecheckt):

# Beispiel: lokales Backend im Emulator (Host-Rechner)
timeclock.api.baseUrl=http://10.0.2.2:3010/api

oder beim Gradle-Aufruf:

# Beispiel: lokales Backend statt Standard-Server
./gradlew :composeApp:assembleDebug -Ptimeclock.api.baseUrl=http://10.0.2.2:3010/api

Scope (Phase 1)

  • Native Android-App unter composeApp.
  • Web-inspiriertes Designsystem an frontend/src/assets/main.css, App.vue, SideMenu.vue und StatusBox.vue.
  • Adaptive Shell: schmale Breiten mit Top-Bar und Bottom-Navigation, Tablet mit persistenter Seitennavigation.
  • Nicht umgesetzte Einstellungs-/Admin-Screens bleiben vorerst Demo/Mock; StatusBox, Wochenübersicht und Buchungs-Workflows verwenden echte Backend-Daten.

Build

Aus diesem Verzeichnis:

./gradlew :composeApp:assembleDebug

Beispiel mit eigenem Gradle-Cache:

GRADLE_USER_HOME=/tmp/gradle-home ./gradlew :composeApp:assembleDebug --no-daemon