diff --git a/README.md b/README.md index 8c7cd50..234fa72 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,374 @@ -# bc-erp-android-releases +# BC-ERP Android App -Public BC-ERP Android APK release assets \ No newline at end of file +Öffentliches Release-Repository für die BC-ERP Android-App. Dieses Repository enthält fertige APK-Dateien als Releases und diese bebilderte Anwenderdokumentation. + +## Inhaltsverzeichnis + +- [Zweck der App](#zweck-der-app) +- [Installation und Updates](#installation-und-updates) +- [Erster Start: Serveradresse einrichten](#erster-start-serveradresse-einrichten) +- [Login](#login) +- [Startseite und Sync](#startseite-und-sync) +- [Projekte](#projekte) +- [Zeiterfassung](#zeiterfassung) +- [Aufmaß](#aufmaß) +- [Materialbedarf](#materialbedarf) +- [Fotos](#fotos) +- [Profil und Monteur-Auswahl](#profil-und-monteur-auswahl) +- [Mehr und Abmelden](#mehr-und-abmelden) +- [Offline-Arbeiten und Sync-Status](#offline-arbeiten-und-sync-status) +- [Fehlerbehebung](#fehlerbehebung) + +## Zweck der App + +Die BC-ERP Android-App ist die Baustellen-App für Monteure und mobile Mitarbeiter. Sie wird auf der Baustelle genutzt, um projektspezifische Daten schnell und offlinefähig zu erfassen: + +- aktive Projekte anzeigen +- Zeiten per Timer erfassen +- Zeiten manuell nachtragen +- Aufmaße zu Angebotspositionen oder manuell erfassen +- Materialbedarf melden +- Baustellenfotos aufnehmen oder aus der Galerie übernehmen +- lokale Änderungen synchronisieren +- Monteur-Profil für Zeitbuchungen auswählen + +Die App ist für die tägliche Baustellennutzung optimiert. Sie speichert Eingaben lokal und synchronisiert diese mit dem BC-ERP Backend, sobald eine Verbindung verfügbar ist. + +## Installation und Updates + +Die APK wird über die Releases dieses Repositorys bereitgestellt. + +1. Neuestes Release öffnen. +2. APK-Datei herunterladen. +3. APK auf dem Android-Gerät installieren. +4. Falls Android nachfragt, Installation aus dieser Quelle erlauben. +5. App öffnen und Serveradresse einrichten. + +Die App prüft neue Releases automatisch. Wenn eine neuere APK verfügbar ist, wird sie heruntergeladen und anschließend zur Installation angeboten. + +Wichtig: + +- Updates werden ohne Play Store ausgeliefert. +- Die App installiert Updates nicht heimlich. Android zeigt vor der Installation eine Bestätigung an. +- Die Serveradresse wird beim ersten Start gesetzt und kann später über `Serveradresse ändern` neu gesetzt werden. + +## Erster Start: Serveradresse einrichten + +Beim ersten Start fragt die App nach der Backend-Adresse. Diese Adresse verbindet die Android-App mit dem BC-ERP Server. + +![Server-Setup](docs/android-app/01-server-setup.png) + +Vorgehen: + +1. Backend-Adresse eintragen, zum Beispiel `http://192.168.178.50:3000`. +2. `Verbinden und speichern` antippen. +3. Die App prüft automatisch `/api/health`. +4. Bei erfolgreicher Verbindung öffnet sich der Login. + +Hinweise: + +- Die App ergänzt `/api` automatisch, wenn es fehlt. +- Bei einem Serverwechsel werden alte Login-Daten verworfen. +- Wenn die Verbindung fehlschlägt, zeigt die App die technische Ursache an, zum Beispiel Timeout oder HTTP-Fehler. + +## Login + +Nach der Servereinrichtung meldet sich der Benutzer mit E-Mail und Passwort an. + +![Login](docs/android-app/02-login.png) + +Voraussetzungen: + +- Der Benutzer muss im BC-ERP Backend existieren. +- Das Recht `App Login` muss in der Benutzerverwaltung aktiviert sein. +- Admin-Benutzer haben alle Rechte. + +Funktionen: + +- `Anmelden`: meldet den Benutzer an und speichert einen mobilen API-Schlüssel. +- `Serveradresse ändern`: öffnet das Server-Setup und löscht lokale Login-Daten. +- `Abmelden`: entfernt den gespeicherten Login. + +Wenn der Login fehlschlägt, zeigt die App eine konkrete Meldung, zum Beispiel falsche Zugangsdaten, fehlendes App-Recht oder nicht erreichbarer Server. + +## Startseite und Sync + +Die Startseite zeigt den mobilen Arbeitsstand. + +![Startseite](docs/android-app/03-start-sync.png) + +Bereiche: + +- `Meine Projekte`: Anzahl der lokal verfügbaren aktiven Projekte. +- `Schnellzugriff`: direkte Navigation zu Projekten, Zeiten, Fotos und Profil. +- `Sync`: startet eine manuelle Synchronisierung. +- `Letzter Sync`: Zeitpunkt des letzten Sync-Laufs. +- `lokal gespeichert`: Anzahl noch nicht synchronisierter lokaler Änderungen. + +Der automatische Hintergrund-Sync läuft still. Der manuelle Sync lädt aktuelle Projektdaten und sendet lokale Änderungen. + +## Projekte + +Die Projektliste enthält aktive beauftragte Projekte und Projekte in Arbeit. + +![Projektliste](docs/android-app/04-projekte.png) + +Jede Projektkarte zeigt: + +- Projekttitel +- Projektnummer +- Status, zum Beispiel `Beauftragt` oder `In Arbeit` + +Durch Antippen öffnet sich die Projektdetailansicht. + +![Projektdetail](docs/android-app/05-projekt-detail.png) + +Von einem Projekt aus sind alle Baustellenfunktionen erreichbar: + +- `Zeit erfassen` +- `Zeit nachtragen` +- `Zeiten anzeigen` +- `Foto aufnehmen` +- `Aufmaß erfassen` +- `Materialbedarf melden` + +## Zeiterfassung + +Die Zeiterfassung unterstützt zwei Arbeitsweisen: Timer und manueller Nachtrag. + +### Timer + +![Zeiterfassung Timer](docs/android-app/06-zeiterfassung-timer.png) + +Vorgehen: + +1. Projekt auswählen. +2. Optional Tätigkeit eintragen. +3. `START` antippen. +4. Nach Arbeitsende `STOPP` antippen. + +Die App speichert die Zeit lokal und markiert sie als `PENDING`, bis sie synchronisiert wurde. + +### Manuelle Zeit + +![Zeiterfassung Manuell](docs/android-app/07-zeiterfassung-manuell.png) + +Vorgehen: + +1. Tab `Manuell` wählen. +2. Projekt auswählen. +3. Tätigkeit, Datum und Start/Ende oder Dauer eintragen. +4. `Zeit nachtragen` antippen. + +Die Dauer kann direkt als Stundenwert eingegeben werden, zum Beispiel `1,5`. Alternativ berechnet die App die Dauer aus Start- und Endzeit. + +### Zeiten anzeigen, bearbeiten und löschen + +![Zeitenliste](docs/android-app/08-zeiten-liste.png) + +Die Zeitenliste zeigt: + +- Tätigkeit +- Projekt +- Datum +- Start- und Endzeit +- Dauer +- Sync-Status + +Aktionen: + +- `Bearbeiten`: öffnet die gespeicherte Zeitbuchung zur Korrektur. +- `Löschen`: entfernt eine lokale Buchung. +- `Aktualisieren`: synchronisiert und lädt aktuelle Daten. + +## Aufmaß + +Aufmaße können auf Basis vorhandener Angebotspositionen oder manuell erfasst werden. + +![Aufmaßliste](docs/android-app/09-aufmass-liste.png) + +Die Liste gruppiert Aufmaße nach Status: + +- `Offen`: noch nicht abgerechnet +- `Abgerechnet`: bereits einer Rechnung zugeordnet + +Jeder Eintrag zeigt Bezeichnung, Menge, Einheit, Positionstyp und Sync-Status. + +### Aufmaß erfassen + +![Aufmaß erfassen](docs/android-app/10-aufmass-erfassen.png) + +Modus `Angebot`: + +1. Angebotsposition auswählen. +2. Aufgemessene Menge eintragen. +3. Optional Notiz hinzufügen. +4. `Lokal speichern` antippen. + +Modus `Manuell`: + +1. Typ `Material` oder `Maschine` wählen. +2. Bezeichnung, Einheit und Menge eintragen. +3. Optional Einzelpreis und Notiz ergänzen. +4. Lokal speichern. + +Die Daten werden offline gespeichert und beim nächsten Sync an BC-ERP übertragen. + +## Materialbedarf + +Materialbedarf erfasst benötigtes Material direkt aus der Baustelle. + +![Materialbedarf](docs/android-app/11-materialbedarf.png) + +Die Liste zeigt: + +- Materialbeschreibung +- Menge und Einheit +- Notiz +- Sync-Status + +### Materialbedarf melden + +![Materialbedarf melden](docs/android-app/12-materialbedarf-melden.png) + +Vorgehen: + +1. Material eintragen. +2. Menge und Einheit wählen. +3. Optional Notiz ergänzen. +4. `Lokal speichern` antippen. + +Der Bedarf wird lokal gespeichert und beim Sync an das Backend übertragen. Im Desktop kann der Bedarf weiterbearbeitet, bestellt, geliefert und einem Angebot zugeordnet werden. + +## Fotos + +Die App speichert Baustellenfotos projektbezogen und synchronisiert sie mit dem Backend. + +![Fotoliste](docs/android-app/13-fotos.png) + +Die Fotoliste zeigt: + +- Vorschaubereich +- Titel +- Aufnahmedatum +- Sync-Status + +Durch Antippen öffnet sich eine Detailansicht mit Bild, Titel, Beschreibung und Zeitpunkt. + +### Foto aufnehmen oder auswählen + +![Foto aufnehmen](docs/android-app/14-foto-aufnehmen.png) + +Vorgehen: + +1. Im Projekt `Foto aufnehmen` wählen. +2. `Foto aufnehmen` oder `Aus Galerie wählen` antippen. +3. Optional Titel und Beschreibung ergänzen. +4. `Lokal speichern` antippen. + +Die App speichert das Foto zuerst lokal. Beim Sync wird das Bild als Upload an BC-ERP gesendet. + +## Profil und Monteur-Auswahl + +Im Profil wird der Monteur gewählt, auf den Zeitbuchungen laufen. + +![Profil](docs/android-app/15-profil.png) + +Vorgehen: + +1. Monteur aus der Liste wählen. +2. `Speichern` antippen. + +Hinweise: + +- Die Monteurliste kommt aus dem Backend und wird offline zwischengespeichert. +- Ein Benutzer kann im Desktop einen Standardmonteur erhalten. +- Nach dem Login übernimmt die App den Standardmonteur automatisch, falls er hinterlegt ist. + +## Mehr und Abmelden + +Der Bereich `Mehr` zeigt kompakte Konto- und Statusinformationen. + +![Mehr](docs/android-app/16-mehr.png) + +Angezeigt werden: + +- angemeldeter Benutzer +- Anzahl lokaler Änderungen +- Abmelden-Funktion +- App-Informationen + +`Abmelden` löscht den gespeicherten Login und führt zurück zum Login. + +## Offline-Arbeiten und Sync-Status + +Die App ist offlinefähig. Eingaben werden zuerst lokal gespeichert und später synchronisiert. + +Sync-Status: + +- `⏳`: lokal gespeichert, noch nicht synchronisiert +- `✓`: erfolgreich synchronisiert +- `⚡`: Konflikt oder Sonderstatus + +Offline gespeichert werden: + +- Zeiten +- Aufmaße +- Materialbedarf +- Fotos +- Projekt- und Monteur-Cache + +Bei wiederhergestellter Netzwerkverbindung startet die App automatisch einen Sync. Zusätzlich kann jederzeit manuell über `Sync` oder `Aktualisieren` synchronisiert werden. + +## Fehlerbehebung + +### App fragt nicht nach Serveradresse + +Aktuelle Version installieren und bei Tests die App-Daten löschen oder die App neu installieren. Ab Version `1.0.10` wird Android-Backup für App-Einstellungen deaktiviert, damit alte Serverdaten nicht automatisch wiederhergestellt werden. + +### Login klappt nicht + +Prüfen: + +- Serveradresse korrekt? +- Backend erreichbar? +- Benutzer aktiv? +- Passwort korrekt? +- App-Recht in der Benutzerverwaltung aktiviert? + +### Projekte fehlen + +Prüfen: + +- Projektstatus ist `Beauftragt` oder `In Arbeit`. +- Benutzer ist online und kann synchronisieren. +- Einmal `Sync` auf der Startseite antippen. + +### Zeiten können nicht erfasst werden + +Prüfen: + +- Im Profil ist ein Monteur ausgewählt. +- Projekt ist lokal verfügbar. +- Datum und Dauer sind korrekt gesetzt. + +### Fotos werden nicht synchronisiert + +Ab Version `1.0.11` werden Foto-Uploads wieder als echtes `multipart/form-data` gesendet. Wenn Fotos weiterhin ausstehen: + +- Netzwerkverbindung prüfen. +- Serveradresse prüfen. +- Manuell `Sync` starten. +- Backend-Uploads-Verzeichnis prüfen. + +### Update wird nicht installiert + +Prüfen: + +- Installation aus unbekannten Quellen für BC-ERP erlauben. +- Download-Benachrichtigung antippen. +- Genug Speicherplatz auf dem Gerät vorhanden? + +## Release-Hinweis + +Dieses Repository enthält nur öffentliche Release-Artefakte und Dokumentation. Der Quellcode des Hauptprojekts liegt nicht in diesem Repository. diff --git a/docs/android-app/01-server-setup.png b/docs/android-app/01-server-setup.png new file mode 100644 index 0000000..a72671c Binary files /dev/null and b/docs/android-app/01-server-setup.png differ diff --git a/docs/android-app/02-login.png b/docs/android-app/02-login.png new file mode 100644 index 0000000..b971145 Binary files /dev/null and b/docs/android-app/02-login.png differ diff --git a/docs/android-app/03-start-sync.png b/docs/android-app/03-start-sync.png new file mode 100644 index 0000000..ef6a778 Binary files /dev/null and b/docs/android-app/03-start-sync.png differ diff --git a/docs/android-app/04-projekte.png b/docs/android-app/04-projekte.png new file mode 100644 index 0000000..ad56947 Binary files /dev/null and b/docs/android-app/04-projekte.png differ diff --git a/docs/android-app/05-projekt-detail.png b/docs/android-app/05-projekt-detail.png new file mode 100644 index 0000000..b38dc7f Binary files /dev/null and b/docs/android-app/05-projekt-detail.png differ diff --git a/docs/android-app/06-zeiterfassung-timer.png b/docs/android-app/06-zeiterfassung-timer.png new file mode 100644 index 0000000..e4e73c5 Binary files /dev/null and b/docs/android-app/06-zeiterfassung-timer.png differ diff --git a/docs/android-app/07-zeiterfassung-manuell.png b/docs/android-app/07-zeiterfassung-manuell.png new file mode 100644 index 0000000..85788b3 Binary files /dev/null and b/docs/android-app/07-zeiterfassung-manuell.png differ diff --git a/docs/android-app/08-zeiten-liste.png b/docs/android-app/08-zeiten-liste.png new file mode 100644 index 0000000..b9a6f5c Binary files /dev/null and b/docs/android-app/08-zeiten-liste.png differ diff --git a/docs/android-app/09-aufmass-liste.png b/docs/android-app/09-aufmass-liste.png new file mode 100644 index 0000000..1eb120f Binary files /dev/null and b/docs/android-app/09-aufmass-liste.png differ diff --git a/docs/android-app/10-aufmass-erfassen.png b/docs/android-app/10-aufmass-erfassen.png new file mode 100644 index 0000000..71031d2 Binary files /dev/null and b/docs/android-app/10-aufmass-erfassen.png differ diff --git a/docs/android-app/11-materialbedarf.png b/docs/android-app/11-materialbedarf.png new file mode 100644 index 0000000..833895f Binary files /dev/null and b/docs/android-app/11-materialbedarf.png differ diff --git a/docs/android-app/12-materialbedarf-melden.png b/docs/android-app/12-materialbedarf-melden.png new file mode 100644 index 0000000..a5a858e Binary files /dev/null and b/docs/android-app/12-materialbedarf-melden.png differ diff --git a/docs/android-app/13-fotos.png b/docs/android-app/13-fotos.png new file mode 100644 index 0000000..875e3e4 Binary files /dev/null and b/docs/android-app/13-fotos.png differ diff --git a/docs/android-app/14-foto-aufnehmen.png b/docs/android-app/14-foto-aufnehmen.png new file mode 100644 index 0000000..71cf191 Binary files /dev/null and b/docs/android-app/14-foto-aufnehmen.png differ diff --git a/docs/android-app/15-profil.png b/docs/android-app/15-profil.png new file mode 100644 index 0000000..defe1a8 Binary files /dev/null and b/docs/android-app/15-profil.png differ diff --git a/docs/android-app/16-mehr.png b/docs/android-app/16-mehr.png new file mode 100644 index 0000000..50e6841 Binary files /dev/null and b/docs/android-app/16-mehr.png differ