This commit is contained in:
@@ -18,8 +18,10 @@ Die Anwendung besteht aus einem Go-Binary, eingebettetem HTML/CSS/Vanilla-JavaSc
|
||||
- Rundung 1–60 Minuten, normal oder immer aufwärts
|
||||
- CSV-Export (Semikolon + UTF-8 BOM für Excel)
|
||||
- PDF-Export ohne PDF-Framework
|
||||
- Service-Bericht als PDF pro Kunde mit Tätigkeitsübersicht, Auftrag/Ticket, Ansprechpartner, Einsatzort, Bemerkungen und Unterschriftsfeldern für Kunde/Techniker
|
||||
- Export wahlweise für aktuelle Ansicht oder freien Datumsbereich, auf-/absteigend und kompakt
|
||||
- Responsive Desktop-/Mobile-Oberfläche
|
||||
- Mobile Kompaktansicht: startet mit dem Timer im Fokus; Verlauf/Übersicht und Einstellungen werden separat über die untere Navigation geöffnet
|
||||
- Mehrbenutzerbetrieb mit strikt getrennten Daten
|
||||
- Admin-/Benutzerrollen
|
||||
- Benutzer anlegen, deaktivieren und Passwörter zurücksetzen
|
||||
@@ -135,6 +137,35 @@ Schreibende API-Aufrufe benötigen zusätzlich ein zufälliges, sitzungsgebunden
|
||||
|
||||
Jede SQL-Operation auf Zeiten enthält die `user_id` aus der authentifizierten Session. IDs aus einem anderen Benutzerkonto reichen daher nicht aus, um fremde Einträge zu lesen oder zu verändern.
|
||||
|
||||
## Mobile Kompaktansicht
|
||||
|
||||
Auf Smartphones (bis 820 px Breite) ist standardmäßig die **Kompaktansicht** aktiv. Dabei verschwindet die Desktop-Kopfleiste und die Timer-Erfassung nutzt nahezu den gesamten verfügbaren Bildschirm. Kunde, Tätigkeit, Timer, Start/Stop und die Tages-/Wochensummen bleiben direkt sichtbar.
|
||||
|
||||
Die untere mobile Navigation trennt die Bereiche bewusst:
|
||||
|
||||
- **Timer** – konzentrierte Zeiterfassung
|
||||
- **Übersicht** – Verlauf, Suche, Filter, Nachtragen und Export
|
||||
- **Mehr** – Einstellungen, Benutzerverwaltung (für Admins) und Abmelden
|
||||
|
||||
Die Einstellung **„Kompaktansicht auf Mobilgeräten“** kann pro Benutzer deaktiviert werden. Sie wird in SQLite in `user_settings.mobile_compact` gespeichert. Bestehende Datenbanken werden beim Start automatisch um die neue Spalte ergänzt; der Standardwert ist aktiviert.
|
||||
|
||||
## Service-Berichte
|
||||
|
||||
Im Exportdialog steht zusätzlich **„Service-Bericht für Unterschrift“** zur Verfügung. Der Bericht verwendet den gewählten Exportzeitraum und filtert anschließend exakt auf einen Kunden. Dadurch können keine Tätigkeiten anderer Kunden versehentlich in denselben unterschreibbaren Bericht geraten.
|
||||
|
||||
Der Service-Bericht enthält:
|
||||
|
||||
- Kunde und Ansprechpartner
|
||||
- Einsatzort
|
||||
- Auftrags-/Ticketnummer
|
||||
- Betreff sowie optionale Zusammenfassung/Bemerkungen
|
||||
- chronologische Tätigkeiten mit Datum, Uhrzeit und gerundeter Dauer
|
||||
- Gesamtdauer
|
||||
- Ort und Berichtsdatum
|
||||
- getrennte Unterschriftsfelder für Kunde und Techniker
|
||||
|
||||
Die zusätzlichen Berichtsdaten werden per `POST /api/service-report.pdf` übertragen und nicht als Query-Parameter in der Download-URL abgelegt. Es werden keine Service-Berichte oder Unterschriften dauerhaft in SQLite gespeichert; der PDF-Export wird bei Bedarf erzeugt.
|
||||
|
||||
## Backup
|
||||
|
||||
Wegen WAL sollte die Datenbank nicht blind während Schreibzugriffen als einzelne Datei kopiert werden. Der einfachste konsistente Weg bei Docker Compose:
|
||||
|
||||
Reference in New Issue
Block a user