68 lines
2.7 KiB
Markdown
68 lines
2.7 KiB
Markdown
# 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 Phase‑1-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):
|
||
|
||
```properties
|
||
# Beispiel: lokales Backend im Emulator (Host-Rechner)
|
||
timeclock.api.baseUrl=http://10.0.2.2:3010/api
|
||
```
|
||
|
||
oder beim Gradle-Aufruf:
|
||
|
||
```bash
|
||
# 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:
|
||
|
||
```bash
|
||
./gradlew :composeApp:assembleDebug
|
||
```
|
||
|
||
Beispiel mit eigenem Gradle-Cache:
|
||
|
||
```bash
|
||
GRADLE_USER_HOME=/tmp/gradle-home ./gradlew :composeApp:assembleDebug --no-daemon
|
||
```
|