Doku-Drift beseitigt: Push-Notifications, Heute-Route, drei API-Endpunkte fehlten
Beim Doku-Abgleich (/docs) gegen den Code aufgefallen: - ntfy-Push-Notifications sind laengst fertig (app.js Einstellungen-Route), README fuehrte sie noch unter "Geplant" als offen - "Heute"-Ansicht (Route /today, Google-Maps-Tagesroute) fehlte komplett - API-Abschnitt: verify.php, logout.php, orders.php?action=create und config.php wurden von lib/api.js schon lange genutzt, standen aber nicht in der Endpunkt-Liste Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
707638808c
commit
b7e80fac8c
1 changed files with 10 additions and 4 deletions
14
README.md
14
README.md
|
|
@ -13,6 +13,8 @@ Mobile Progressive Web App für die Baustellen-Doku — Foto-Upload, Sprach- und
|
||||||
|
|
||||||
**Aufträge**
|
**Aufträge**
|
||||||
- ✅ Login mit Dolibarr-Credentials → zentrales SSO (HttpOnly-Cookie `awl_sso`, same-origin; Single-Sign-On/-Logout über alle AWL-Apps). WebAuthn/Passkey-Login möglich
|
- ✅ Login mit Dolibarr-Credentials → zentrales SSO (HttpOnly-Cookie `awl_sso`, same-origin; Single-Sign-On/-Logout über alle AWL-Apps). WebAuthn/Passkey-Login möglich
|
||||||
|
- ✅ **„Heute"-Ansicht**: offene Aufträge des Tages, gefiltert aus der normalen Auftragsliste, mit Route
|
||||||
|
für alle Termine auf einen Blick (öffnet Google Maps mit allen Adressen als Wegpunkten)
|
||||||
- ✅ Auftragsliste mit Suche, gefiltert auf eigene Aufträge (Multi-User)
|
- ✅ Auftragsliste mit Suche, gefiltert auf eigene Aufträge (Multi-User)
|
||||||
- ✅ Toggle "Auch abgeschlossene" (Filter in localStorage persistiert)
|
- ✅ Toggle "Auch abgeschlossene" (Filter in localStorage persistiert)
|
||||||
- ✅ Auftragsdetail mit Kunde, Adresse, Telefon (Click-to-Call)
|
- ✅ Auftragsdetail mit Kunde, Adresse, Telefon (Click-to-Call)
|
||||||
|
|
@ -74,13 +76,11 @@ Mobile Progressive Web App für die Baustellen-Doku — Foto-Upload, Sprach- und
|
||||||
- ✅ Android-Hardware-Back-Button schließt Modale/Ansichten sauber (History-Modal-Stack), bricht Mehrfachauswahl ab statt App zu verlassen
|
- ✅ Android-Hardware-Back-Button schließt Modale/Ansichten sauber (History-Modal-Stack), bricht Mehrfachauswahl ab statt App zu verlassen
|
||||||
- ✅ „Nochmal drücken zum Beenden"-Toast auf Top-Level-Routen
|
- ✅ „Nochmal drücken zum Beenden"-Toast auf Top-Level-Routen
|
||||||
- ✅ PIN-Schutz (optional)
|
- ✅ PIN-Schutz (optional)
|
||||||
|
- ✅ **Push-Benachrichtigungen via ntfy** (statt klassischem Web-Push): eigener Server/Topic in den
|
||||||
|
Einstellungen, Browser-Notification-Permission, Reconnect bei Verbindungsabbruch
|
||||||
- ✅ **Bild-Cache** `baustelle-media` (cache-first, LRU 300): schon angesehene Fotos sind auch ohne Netz da; überlebt Deploys, wird beim Abmelden geleert
|
- ✅ **Bild-Cache** `baustelle-media` (cache-first, LRU 300): schon angesehene Fotos sind auch ohne Netz da; überlebt Deploys, wird beim Abmelden geleert
|
||||||
- ✅ **Keine Browser-Dialoge** — `confirm`/`alert`/`prompt` sind durch eigene Modale ersetzt (`confirmDialog`, `alertDialog`, `inputDialog`); der Hardware-Zurück-Button schließt sie als Abbruch
|
- ✅ **Keine Browser-Dialoge** — `confirm`/`alert`/`prompt` sind durch eigene Modale ersetzt (`confirmDialog`, `alertDialog`, `inputDialog`); der Hardware-Zurück-Button schließt sie als Abbruch
|
||||||
|
|
||||||
## Geplant
|
|
||||||
|
|
||||||
- Push-Notifications für neue Aufträge
|
|
||||||
|
|
||||||
## Hosting
|
## Hosting
|
||||||
|
|
||||||
Deploy per Forgejo-Pipeline (Commit-Tag `[deploy]`) nach `/mnt/appdata/firma/dolibarr-202509/modules/baustelle/`. Erreichbar unter `https://awl.data-it-solution.de/custom/baustelle/`. Cache-Busting automatisch via `filemtime()` in `index.php` (`?v=<mtime>` an JS/CSS) — kein manuelles Versions-Hochzählen nötig, die PWA aktualisiert sich beim nächsten Laden.
|
Deploy per Forgejo-Pipeline (Commit-Tag `[deploy]`) nach `/mnt/appdata/firma/dolibarr-202509/modules/baustelle/`. Erreichbar unter `https://awl.data-it-solution.de/custom/baustelle/`. Cache-Busting automatisch via `filemtime()` in `index.php` (`?v=<mtime>` an JS/CSS) — kein manuelles Versions-Hochzählen nötig, die PWA aktualisiert sich beim nächsten Laden.
|
||||||
|
|
@ -114,12 +114,15 @@ Die App spricht die Bericht-API unter `/custom/bericht/api/`:
|
||||||
|
|
||||||
**Auth**
|
**Auth**
|
||||||
- `POST /auth.php` — Login mit Dolibarr-Credentials → setzt HttpOnly-Cookie `awl_sso` (zentrales SSO via awlauth). Folge-Requests authentisieren same-origin über das Cookie (kein Bearer-Token)
|
- `POST /auth.php` — Login mit Dolibarr-Credentials → setzt HttpOnly-Cookie `awl_sso` (zentrales SSO via awlauth). Folge-Requests authentisieren same-origin über das Cookie (kein Bearer-Token)
|
||||||
|
- `GET /verify.php` — prüft das Cookie und verlängert die Session (sliding renewal); läuft bei jedem Routenwechsel (`ensureAuth()`) und ist der Weg, wie `share.html` prüft, ob eine Anmeldung nötig ist
|
||||||
|
- `POST /logout.php` — löscht das `awl_sso`-Cookie (Single-Logout über alle AWL-Apps)
|
||||||
|
|
||||||
**Aufträge**
|
**Aufträge**
|
||||||
- `GET /orders.php` — Aufträge des Users (Filter: `?open=1`, `?q=suche`)
|
- `GET /orders.php` — Aufträge des Users (Filter: `?open=1`, `?q=suche`)
|
||||||
- `GET /orders.php?id=X` — Auftrag-Detail inkl. verknüpfte Berichte
|
- `GET /orders.php?id=X` — Auftrag-Detail inkl. verknüpfte Berichte
|
||||||
- `GET /orders.php?id=X&action=photos` — Anhang-Liste (je Datei `taken_at` = EXIF-Aufnahmezeit, danach sortiert)
|
- `GET /orders.php?id=X&action=photos` — Anhang-Liste (je Datei `taken_at` = EXIF-Aufnahmezeit, danach sortiert)
|
||||||
- `POST /orders.php?id=X&action=upload_photo` — Foto-Upload (multipart)
|
- `POST /orders.php?id=X&action=upload_photo` — Foto-Upload (multipart)
|
||||||
|
- `POST /orders.php?action=create` — Neuen Auftrag anlegen (Kunde, Ihr Zeichen, Beschreibung, Liefertermin, optional direkt freigeben)
|
||||||
|
|
||||||
**Kunden**
|
**Kunden**
|
||||||
- `GET /customers.php` — Kundenliste (Filter: `?q=suche`)
|
- `GET /customers.php` — Kundenliste (Filter: `?q=suche`)
|
||||||
|
|
@ -168,6 +171,9 @@ Die App spricht die Bericht-API unter `/custom/bericht/api/`:
|
||||||
- `GET /templates.php` — Bericht-Vorlagen
|
- `GET /templates.php` — Bericht-Vorlagen
|
||||||
- `GET /odt_templates.php` — ODT-Deckblatt-Vorlagen
|
- `GET /odt_templates.php` — ODT-Deckblatt-Vorlagen
|
||||||
|
|
||||||
|
**Konfiguration**
|
||||||
|
- `GET /config.php` — Admin-Vorgaben zur Fotoqualität (`photo_maxside`, `photo_quality`); wird beim Start und nach jedem Login neu geladen, zwischengespeichert in `localStorage` für den Offline-Fall
|
||||||
|
|
||||||
## Lizenz
|
## Lizenz
|
||||||
|
|
||||||
GPL v3+
|
GPL v3+
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue