2.7 KiB
2.7 KiB
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/mebeim App-Start). - Login-Oberfläche mit den bestehenden
Tc*-Widgets; nach Anmeldung die Phase‑1-Demo-Shell mit echtem Benutzernamen und rollenbasierter Navigation (Admin-Zusatzmenü nur beirole == 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.vueundStatusBox.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