Update .gitignore to exclude Android/Gradle files and enhance TimeEntryController and TimefixService for better error handling and performance. Refactor frontend components to use AppBrand for consistent branding across views.
This commit is contained in:
67
mobile-app/README.md
Normal file
67
mobile-app/README.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user