Files
craftvia/docs/craftvia/SPEC-CRAFTVIA.md
T
msolarczekandClaude Opus 5 c8e6f30a27
CI / build-and-check (push) Canceled after 0s
CI / audit (push) Canceled after 0s
CI / sbom (push) Canceled after 0s
Basis: Certvia dev@a48c5fb als Fundament für Craftvia
Unveränderter Stand von certvia/dev (a48c5fb) plus Craftvia-Spezifikation
und Brandbook unter docs/craftvia/. ISMS-Module werden im Folgecommit entfernt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 11:05:39 +02:00

2481 lines
47 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Technische Spezifikation – Handwerker- und Montageeinsatz-App
**Dokumenttyp:** Software Design Specification / Technisches Umsetzungskonzept
**Zielgruppe:** Codex, Claude Code, Softwareentwickler und technische Projektleitung
**Status:** Entwurf für MVP
**Version:** 1.0
**Sprache:** Deutsch
---
## 1. Zielsetzung
Ziel ist die Entwicklung einer mandantenfähigen Webanwendung für Handwerks- und Montagebetriebe.
Die Anwendung soll den vollständigen Ablauf eines Kunden- oder Baustelleneinsatzes digital unterstützen:
1. Auftragsbestätigung oder Einsatzdokument importieren
2. Auftragsdaten automatisch erkennen
3. Auftrag prüfen und einem Montageteam zuweisen
4. Auftrag auf Tablet oder Smartphone bearbeiten
5. Leistungen, Arbeitszeiten, Material, Fotos und Notizen dokumentieren
6. Tagesbericht oder Abschlussbericht erzeugen
7. Auftrag an das Backoffice zur Abrechnung übergeben
8. Einsatzhistorie je Kunde und Objekt dauerhaft verfügbar halten
Für den MVP wird keine native iOS- oder Android-App entwickelt. Die Lösung wird als responsive Progressive Web App, kurz PWA, umgesetzt.
---
## 2. Produktvision
Die Anwendung soll keine vollständige ERP-, Buchhaltungs- oder Warenwirtschaftslösung ersetzen.
Sie bildet die operative Verbindung zwischen:
- Backoffice
- Montageteams
- Kunden
- Baustellen
- Objekten
- Auftragsdokumenten
- Einsatzdokumentation
- Abrechnungsvorbereitung
Das System soll modular aufgebaut werden, sodass später weitere Funktionen und Schnittstellen ergänzt werden können.
Mögliche spätere Erweiterungen:
- direkte ERP- und Buchhaltungsschnittstellen
- digitale Zeiterfassung
- Lager- und Bestandsverwaltung
- Artikelstammdaten
- Anlagen- und Geräteverwaltung
- Wartungsintervalle
- Angebots- und Rechnungsstellung
- Kundenportal
- Tourenplanung
- Kalenderintegration
- automatische Einsatzplanung
- KI-Assistent für Monteure und Backoffice
---
## 3. Grundlegende Architekturentscheidung
### 3.1 Anwendungstyp
Der MVP wird als responsive Webanwendung mit PWA-Funktionen umgesetzt.
Die Anwendung muss auf folgenden Geräten nutzbar sein:
- Desktop-PC
- Notebook
- iPad
- Android-Tablet
- iPhone
- Android-Smartphone
### 3.2 Vorteile der PWA
- keine separate Entwicklung für iOS und Android
- Installation auf dem Startbildschirm möglich
- Nutzung der Gerätekamera
- Nutzung des Mikrofons
- lokale Zwischenspeicherung
- eingeschränkte Offline-Fähigkeit
- zentrale Bereitstellung von Updates
- geringerer Entwicklungs- und Wartungsaufwand
### 3.3 Mandantenfähigkeit
Die Anwendung muss von Beginn an vollständig mandantenfähig aufgebaut werden.
Jeder Handwerksbetrieb stellt einen eigenen Mandanten dar.
Mandanten dürfen ausschließlich auf ihre eigenen Daten zugreifen.
Eine Vermischung von Daten verschiedener Mandanten muss technisch ausgeschlossen werden.
---
## 4. Rollenmodell
### 4.1 Plattformadministrator
Der Plattformadministrator verwaltet die gesamte SaaS-Plattform.
Berechtigungen:
- Mandanten anlegen
- Mandanten deaktivieren
- Mandantenadministratoren anlegen
- Systemstatus einsehen
- globale Systemeinstellungen verwalten
- Funktionsmodule je Mandant aktivieren
- Speicherverbrauch und Nutzung einsehen
- Supportzugriff nach expliziter Freigabe durchführen
Der Plattformadministrator soll nicht standardmäßig auf fachliche Mandantendaten zugreifen können.
---
### 4.2 Mandantenadministrator
Der Mandantenadministrator verwaltet die Organisation eines Kunden.
Berechtigungen:
- Benutzer anlegen
- Benutzer deaktivieren
- Rollen vergeben
- Montageteams anlegen
- Mitarbeiter Teams zuordnen
- Kunden verwalten
- Objekte verwalten
- Vorlagen verwalten
- Auftragsstatus konfigurieren
- E-Mail-Empfänger konfigurieren
- Unternehmensdaten verwalten
- Berichtsvorlagen verwalten
- Nummernkreise konfigurieren
---
### 4.3 Backoffice
Das Backoffice plant, verwaltet und kontrolliert Aufträge.
Berechtigungen:
- Auftragsdokumente importieren
- erkannte Daten prüfen
- Kunden und Objekte anlegen
- Aufträge erstellen
- Aufträge bearbeiten
- Montageteams zuweisen
- Dokumente und technische Zeichnungen hinterlegen
- Auftragsfortschritt einsehen
- Berichte prüfen
- Aufträge zur Abrechnung freigeben
- Einsatzhistorie einsehen
- Notdiensteinsätze nachbearbeiten
---
### 4.4 Monteur
Der Monteur bearbeitet zugewiesene Aufträge.
Berechtigungen:
- eigene und dem Team zugewiesene Aufträge einsehen
- Auftragsinformationen anzeigen
- Kundendaten und Objektinformationen anzeigen
- technische Dokumente und Zeichnungen anzeigen
- Einsatz starten und beenden
- Arbeitszeiten dokumentieren
- Material dokumentieren
- Fotos aufnehmen
- Notizen erfassen
- Sprachnotizen aufnehmen
- Tagesberichte erstellen
- Abschlussberichte erstellen
- Kundenunterschrift erfassen
- Notdiensteinsatz anlegen
- vorherige freigegebene Einsätze am Objekt einsehen
Ein Monteur darf keine Aufträge oder Kundendaten anderer Teams einsehen, sofern ihm hierzu keine zusätzliche Berechtigung erteilt wurde.
---
### 4.5 Teamleiter
Der Teamleiter besitzt die Rechte eines Monteurs und zusätzlich:
- Teamaufträge einsehen
- Aufträge innerhalb des Teams koordinieren
- Tagesberichte prüfen
- Abschlussberichte freigeben
- Teammitglieder einem Einsatz zuordnen
- Korrekturen vor Abschluss anfordern
---
## 5. Mandantenmodell
Jeder Datensatz muss eindeutig einem Mandanten zugeordnet sein.
Dies betrifft insbesondere:
- Benutzer
- Rollen
- Teams
- Kunden
- Ansprechpartner
- Objekte
- Aufträge
- Einsätze
- Berichte
- Dokumente
- Fotos
- Materialien
- Benachrichtigungen
- Audit-Logs
- Vorlagen
### 5.1 Technische Anforderung
Jede relevante Datenbanktabelle erhält ein Feld:
```text
tenant_id
```
Der Zugriff auf Daten muss serverseitig immer über den aktuellen Mandantenkontext eingeschränkt werden.
Eine reine Filterung im Frontend ist nicht ausreichend.
### 5.2 Empfohlene Umsetzung
Für den MVP kann eine gemeinsame Datenbank mit mandantenbezogener Datenisolation verwendet werden.
Empfehlung:
- PostgreSQL
- Row-Level Security oder zentraler Repository-Filter
- tenant_id in allen fachlichen Tabellen
- serverseitige Autorisierungsprüfung bei jedem Zugriff
- getrennte Dateipfade oder Buckets je Mandant
Später kann optional ein Datenbank-pro-Mandant-Modell ergänzt werden.
---
## 6. Kernmodule des MVP
Der MVP besteht aus folgenden Modulen:
1. Benutzer- und Rollenverwaltung
2. Mandantenverwaltung
3. Kundenverwaltung
4. Objektverwaltung
5. Teamverwaltung
6. Auftragsimport
7. Auftragsverwaltung
8. Einsatzbearbeitung
9. Materialdokumentation
10. Foto- und Dokumentenverwaltung
11. Tages- und Abschlussberichte
12. Notdiensteinsätze
13. Objekt- und Einsatzhistorie
14. Benachrichtigungen
15. Audit-Logging
16. PWA- und Offline-Funktionen
---
## 7. Kundenverwaltung
### 7.1 Kundendaten
Folgende Daten sollen verwaltet werden:
- Kundennummer
- Firmenname
- Anrede
- Vorname
- Nachname
- Straße
- Hausnummer
- Postleitzahl
- Ort
- Land
- Telefonnummer
- Mobilnummer
- E-Mail-Adresse
- allgemeine Hinweise
- Abrechnungshinweise
- Status
- Erstellungsdatum
- Änderungsdatum
### 7.2 Ansprechpartner
Ein Kunde kann mehrere Ansprechpartner besitzen.
Daten:
- Name
- Funktion
- Telefonnummer
- Mobilnummer
- E-Mail-Adresse
- bevorzugter Kontaktweg
- Bemerkungen
### 7.3 Dublettenprüfung
Beim Import eines Auftrags muss geprüft werden, ob der Kunde bereits existiert.
Mögliche Vergleichswerte:
- Kundennummer
- Firmenname
- Adresse
- E-Mail-Adresse
- Telefonnummer
Bei unsicherer Übereinstimmung muss das Backoffice entscheiden:
- bestehenden Kunden verwenden
- neuen Kunden anlegen
- Datensätze zusammenführen
Eine automatische Zusammenführung darf im MVP nicht ohne Bestätigung erfolgen.
---
## 8. Objektverwaltung
Ein Kunde kann mehrere Objekte besitzen.
Beispiele:
- Baustelle
- Filiale
- Wohnhaus
- Produktionsstandort
- Bürogebäude
- technische Anlage
- Wartungsstandort
### 8.1 Objektdaten
- Objektbezeichnung
- Kunde
- Straße
- Hausnummer
- Postleitzahl
- Ort
- Land
- Ansprechpartner vor Ort
- Telefonnummer
- Zugangshinweise
- Parkhinweise
- Sicherheitsinformationen
- allgemeine technische Hinweise
- Status
- geografische Koordinaten optional
### 8.2 Objektbezogene Dokumente
Pro Objekt können Dokumente hinterlegt werden:
- technische Zeichnungen
- Grundrisse
- Schaltpläne
- Montageanleitungen
- Sicherheitsunterlagen
- Produktunterlagen
- Kundenhinweise
- Fotos vorheriger Einsätze
- sonstige PDF-Dateien
### 8.3 Objekt-Historie
Die Anwendung muss pro Objekt eine chronologische Einsatzhistorie anzeigen.
Anzuzeigen sind:
- Datum
- Auftrag
- Einsatzart
- eingesetztes Team
- durchgeführte Arbeiten
- verwendetes Material
- Fotos
- Berichte
- besondere Hinweise
- Kundenunterschrift
- Status
- offene Folgearbeiten
Für den MVP ist keine vollständige Geräte-, Anlagen- oder Seriennummernverwaltung erforderlich.
---
## 9. Auftragsimport per PDF
### 9.1 Ziel
Das Backoffice soll Auftragsdaten nicht vollständig manuell erfassen müssen.
Eine Auftragsbestätigung oder ein vergleichbares PDF-Dokument wird in die Anwendung hochgeladen.
Das System extrahiert daraus möglichst viele relevante Daten und erstellt einen Auftragsentwurf.
### 9.2 Unterstützte Dateien
MVP:
- PDF mit eingebettetem Text
- gescannte PDF-Dateien
- optional Bilddateien wie JPG und PNG
### 9.3 Verarbeitung
Der Importprozess besteht aus:
1. Datei hochladen
2. Malware- und Dateitypprüfung
3. Texterkennung
4. Dokumentenanalyse
5. strukturierte Datenextraktion
6. Plausibilitätsprüfung
7. Dublettenprüfung
8. Anzeige einer Prüfmaske
9. Bestätigung durch das Backoffice
10. Erstellung oder Zuordnung von Kunde, Objekt und Auftrag
### 9.4 OCR und KI-Extraktion
Für gescannte Dokumente wird OCR eingesetzt.
Für die strukturierte Extraktion kann ein KI-Modell verwendet werden.
Zu extrahierende Felder:
- Auftragsnummer
- Angebotsnummer
- Kundennummer
- Firmenname
- Kundenadresse
- Objektadresse
- Ansprechpartner
- Telefonnummer
- E-Mail-Adresse
- Auftragsdatum
- geplanter Ausführungszeitraum
- Leistungsbeschreibung
- Positionen
- Mengen
- Materialinformationen
- besondere Hinweise
- Gesamtbetrag optional
- Referenzen
- Dokumentdatum
### 9.5 Vertrauenswerte
Für jedes erkannte Feld soll ein Vertrauenswert gespeichert werden.
Beispiel:
```json
{
"field": "customer_name",
"value": "Musterbau GmbH",
"confidence": 0.96
}
```
Unsichere Felder müssen in der Prüfmaske hervorgehoben werden.
### 9.6 Manuelle Prüfung
Ein importierter Auftrag darf nicht automatisch produktiv freigegeben werden.
Status nach Import:
```text
Entwurf – Prüfung erforderlich
```
Das Backoffice muss die erkannten Daten bestätigen oder korrigieren.
### 9.7 Originaldokument
Das Originaldokument wird dauerhaft am Auftrag gespeichert.
Zusätzlich werden gespeichert:
- Importdatum
- importierender Benutzer
- erkannter Text
- strukturierte Extraktion
- Extraktionsversion
- verwendetes Extraktionsmodell
- Korrekturen des Benutzers
---
## 10. Auftragsverwaltung
### 10.1 Auftragsdaten
- interne Auftrags-ID
- externe Auftragsnummer
- Mandant
- Kunde
- Objekt
- Ansprechpartner
- Auftragsart
- Priorität
- Status
- Beschreibung
- Leistungsumfang
- geplantes Datum
- geplanter Zeitraum
- zugewiesenes Team
- zuständiger Teamleiter
- Dokumente
- Materialvorgabe
- Pflichtfotos
- Pflichtfelder
- Unterschrift erforderlich
- Abrechnungsart
- interne Hinweise
- Hinweise für Monteure
- Erstellungsdatum
- Änderungsdatum
### 10.2 Auftragsarten
Beispiele:
- Montage
- Reparatur
- Wartung
- Störung
- Notdienst
- Besichtigung
- Abnahme
- Nacharbeit
Die Auftragsarten sollen je Mandant konfigurierbar sein.
### 10.3 Statusmodell
Empfohlene Statuswerte:
```text
Entwurf
Prüfung erforderlich
Geplant
Zugewiesen
Angenommen
In Anfahrt
In Bearbeitung
Pausiert
Wartet auf Material
Tagesbericht erstellt
Technisch abgeschlossen
Unterschrift ausstehend
Zur Prüfung
Zur Abrechnung freigegeben
Abgerechnet
Storniert
```
Statusübergänge müssen serverseitig geprüft werden.
### 10.4 Teamzuweisung
Ein Auftrag kann einem Montageteam zugewiesen werden.
Optional können zusätzlich einzelne Mitarbeiter ausgewählt werden.
Ein Team erhält nach Zuweisung eine Benachrichtigung.
---
## 11. Montageteams
### 11.1 Teamdaten
- Teamname
- Teamleiter
- Mitglieder
- Status
- Telefonnummer
- Fahrzeug optional
- Einsatzgebiet optional
- interne Hinweise
### 11.2 Auftragsansicht
Monteure sehen:
- heutige Aufträge
- kommende Aufträge
- laufende Aufträge
- pausierte Aufträge
- abzuschließende Aufträge
- vergangene eigene Aufträge
Darstellung als:
- Listenansicht
- Kalenderansicht optional
- Kartenansicht erst nach dem MVP
---
## 12. Einsatzbearbeitung durch Monteure
### 12.1 Einsatzstart
Beim Start eines Einsatzes werden gespeichert:
- Startzeit
- Benutzer
- Team
- Auftrag
- optional Standort
- Gerätestatus
- Online- oder Offline-Status
Optional kann ein Status „In Anfahrt“ vor dem eigentlichen Arbeitsbeginn gesetzt werden.
### 12.2 Arbeitszeiten
Ein Einsatz kann mehrere Zeitabschnitte besitzen.
Beispiele:
- Anfahrt
- Arbeitszeit
- Pause
- Materialbeschaffung
- Rückfahrt
- Unterbrechung
Für den MVP genügt eine einfache Start-, Pause- und Stopp-Funktion.
Manuelle Korrekturen müssen protokolliert werden.
### 12.3 Tätigkeitsdokumentation
Monteure können dokumentieren:
- durchgeführte Arbeiten
- Abweichungen vom Auftrag
- Probleme
- zusätzliche Leistungen
- nicht ausführbare Arbeiten
- erforderliche Folgearbeiten
- Empfehlungen
- Kundenhinweise
Eingabemöglichkeiten:
- Text
- strukturierte Auswahlfelder
- Sprachnotiz
- Foto
### 12.4 Checklisten
Ein Auftrag kann eine Checkliste enthalten.
Beispiele:
- Anlage spannungsfrei geschaltet
- Arbeitsbereich abgesichert
- Material geprüft
- Funktionsprüfung durchgeführt
- Arbeitsbereich gereinigt
- Kunde eingewiesen
- Pflichtfotos erstellt
Checklisten können je Auftragsart als Vorlage definiert werden.
---
## 13. Materialdokumentation
### 13.1 Materialvorgabe
Das Backoffice kann geplantes Material am Auftrag hinterlegen.
Felder:
- Bezeichnung
- Artikelnummer optional
- geplante Menge
- Einheit
- Bemerkung
### 13.2 Tatsächlich verwendetes Material
Der Monteur bestätigt oder ändert je Position:
- vollständig verwendet
- teilweise verwendet
- nicht verwendet
- zusätzlich verwendet
Zu erfassen:
- tatsächliche Menge
- Einheit
- Begründung bei Abweichung
- Foto optional
- Notiz optional
### 13.3 Zusatzmaterial
Monteure können nicht geplantes Material ergänzen.
Felder:
- Bezeichnung
- Artikelnummer optional
- Menge
- Einheit
- Grund
- Foto optional
### 13.4 MVP-Abgrenzung
Im MVP erfolgt keine automatische Lagerbuchung.
Die Materialdokumentation dient:
- dem Arbeitsnachweis
- der Abrechnungsvorbereitung
- der Nachkalkulation
- der Information des Backoffice
---
## 14. Foto- und Dateidokumentation
### 14.1 Fotofunktionen
Monteure können Fotos:
- direkt mit der Kamera aufnehmen
- aus der Galerie auswählen
- einem Auftrag zuordnen
- einer Checklistenposition zuordnen
- als Vorher-, Während- oder Nachher-Foto kennzeichnen
- mit Kommentar versehen
### 14.2 Pflichtfotos
Das Backoffice kann Pflichtfotos definieren.
Beispiele:
- Ausgangszustand
- Typenschild
- Leitungsverlauf
- Zwischenschritt
- fertige Montage
- Funktionsprüfung
- Arbeitsbereich nach Abschluss
Ein Auftrag kann nicht abgeschlossen werden, wenn verpflichtende Fotos fehlen.
### 14.3 Metadaten
Zu jedem Foto werden gespeichert:
- Auftrag
- Einsatz
- Benutzer
- Zeitstempel
- Kategorie
- Kommentar
- Dateigröße
- MIME-Type
- optional Standort
- Uploadstatus
- Prüfsumme
### 14.4 Bildoptimierung
Bilder sollen vor dem Upload komprimiert werden.
Das Original kann optional erhalten bleiben.
Empfehlung:
- Vorschaubild
- optimierte Arbeitskopie
- optional Originaldatei
---
## 15. Sprachaufnahmen und KI-Unterstützung
### 15.1 Sprachnotizen
Monteure können Sprachnotizen aufnehmen.
Das System speichert:
- Audiodatei
- Transkription
- Zeitstempel
- Benutzer
- Bezug zum Auftrag oder Einsatz
### 15.2 KI-Verarbeitung
Die KI kann aus den vorhandenen Informationen einen Berichtsentwurf erstellen.
Datenquellen:
- Auftragsbeschreibung
- Tätigkeitsnotizen
- Sprachnotizen
- Checklisten
- Materialabweichungen
- Fotos und Bildkommentare
- Arbeitszeiten
- offene Folgearbeiten
### 15.3 Freigabeprinzip
KI-generierte Inhalte dürfen nicht automatisch als endgültiger Bericht versendet werden.
Der Monteur oder das Backoffice muss den Bericht prüfen und freigeben.
### 15.4 Transparenz
KI-generierte Texte werden als Entwurf gekennzeichnet.
Die ursprünglichen Notizen bleiben erhalten.
---
## 16. Tagesbericht
### 16.1 Zweck
Ein Tagesbericht wird erstellt, wenn ein Auftrag über mehrere Tage läuft oder noch nicht abgeschlossen wurde.
### 16.2 Inhalte
- Kunde
- Objekt
- Auftrag
- Datum
- eingesetzte Mitarbeiter
- Arbeitszeiten
- durchgeführte Tätigkeiten
- verwendetes Material
- Fotos
- Abweichungen
- Probleme
- offene Punkte
- geplante nächste Schritte
- Status
- Unterschrift optional
### 16.3 Ablauf
1. Monteur beendet den Arbeitstag
2. System prüft Pflichtangaben
3. Berichtsentwurf wird erzeugt
4. Monteur prüft und ergänzt
5. Bericht wird gespeichert
6. Backoffice wird optional informiert
7. Auftrag bleibt geöffnet
---
## 17. Abschlussbericht und Arbeitsnachweis
### 17.1 Zweck
Der Abschlussbericht dient als:
- Leistungsnachweis
- Montagebericht
- Arbeitsnachweis
- Grundlage für die Rechnungsstellung
- interne Dokumentation
- Kundendokumentation
### 17.2 Inhalte
- Logo und Unternehmensdaten des Mandanten
- Kunde
- Objekt
- Ansprechpartner
- Auftragsnummer
- Einsatzdatum
- eingesetzte Mitarbeiter
- Arbeitszeiten
- Auftragsbeschreibung
- ausgeführte Leistungen
- Abweichungen
- Zusatzleistungen
- verwendetes Material
- nicht verwendetes Material
- offene Restarbeiten
- Hinweise
- Fotos
- Kundenunterschrift
- Name des Unterzeichners
- Datum und Uhrzeit
- Name des Monteurs
- Berichtsversion
### 17.3 PDF-Erstellung
Nach Freigabe wird ein nicht veränderbares PDF erzeugt.
Das PDF wird:
- am Auftrag gespeichert
- in der Objekt-Historie abgelegt
- dem Backoffice zur Verfügung gestellt
- optional per E-Mail versendet
### 17.4 Versionierung
Änderungen nach Freigabe erzeugen eine neue Berichtsversion.
Bereits freigegebene Versionen dürfen nicht überschrieben werden.
---
## 18. Digitale Kundenunterschrift
### 18.1 Funktionen
Der Kunde kann auf dem Tablet oder Smartphone unterschreiben.
Zusätzlich werden erfasst:
- Name des Unterzeichners
- Funktion optional
- Datum
- Uhrzeit
- Bestätigungstext
- Bezug zum Bericht
- Benutzer, der die Unterschrift aufgenommen hat
### 18.2 Ablehnung oder Abwesenheit
Folgende Optionen müssen vorhanden sein:
- Kunde nicht anwesend
- Kunde verweigert Unterschrift
- Unterschrift wird später eingeholt
- Unterschrift nicht erforderlich
Eine Begründung kann verpflichtend sein.
---
## 19. Notdiensteinsatz
### 19.1 Ziel
Ein Monteur muss außerhalb der Geschäftszeiten selbstständig einen neuen Einsatz anlegen können.
### 19.2 Erfassungsmaske
Pflichtfelder:
- Kunde
- Objekt oder Einsatzadresse
- Ansprechpartner
- Telefonnummer
- Grund des Notdiensteinsatzes
- Beginn
- Team oder Monteur
Optionale Felder:
- bestehender Kunde auswählen
- neuen vorläufigen Kunden anlegen
- vorhandenes Objekt auswählen
- Fotos
- Sprachnotiz
- Material
- Tätigkeiten
- Kundenunterschrift
### 19.3 Vorläufige Datensätze
Falls der Kunde noch nicht existiert, wird ein vorläufiger Kundendatensatz angelegt.
Status:
```text
Vorläufig – Prüfung durch Backoffice erforderlich
```
Das Backoffice kann am nächsten Arbeitstag:
- Kunden bestätigen
- bestehenden Kunden zuordnen
- Dublette zusammenführen
- Objekt korrigieren
- Auftrag ergänzen
- Abrechnung freigeben
### 19.4 Benachrichtigung
Nach Abschluss eines Notdiensteinsatzes wird das Backoffice automatisch informiert.
Beispiel:
```text
Neuer Notdiensteinsatz abgeschlossen
Monteur: Martin Solarczek
Kunde: Lutz Meier
Einsatzbeginn: 28.07.2026, 23:42 Uhr
Einsatzende: 29.07.2026, 01:18 Uhr
Status: Zur Prüfung und Abrechnung
```
Benachrichtigungskanäle im MVP:
- E-Mail
- interne Benachrichtigung im Dashboard
Push-Benachrichtigungen können später ergänzt werden.
---
## 20. Benachrichtigungen
### 20.1 Ereignisse
Benachrichtigungen sollen unter anderem ausgelöst werden bei:
- neuer Teamzuweisung
- Änderung eines Auftrags
- Auftrag storniert
- Auftrag gestartet
- Tagesbericht erstellt
- Auftrag technisch abgeschlossen
- Unterschrift fehlt
- Bericht zur Prüfung eingereicht
- Auftrag zur Abrechnung freigegeben
- Notdiensteinsatz erstellt
- Notdiensteinsatz abgeschlossen
- Pflichtangaben fehlen
- Synchronisationsfehler
### 20.2 Kanäle
MVP:
- In-App-Benachrichtigung
- E-Mail
Später:
- Web Push
- SMS
- Microsoft Teams
- Slack
- ERP-Webhook
---
## 21. Backoffice-Dashboard
Das Dashboard zeigt mindestens:
- offene Aufträge
- heutige Einsätze
- laufende Einsätze
- nicht angenommene Aufträge
- überfällige Aufträge
- Berichte zur Prüfung
- abgeschlossene Aufträge
- Aufträge zur Abrechnung
- neue Notdiensteinsätze
- fehlende Unterschriften
- Synchronisationsfehler
Filter:
- Zeitraum
- Kunde
- Objekt
- Team
- Monteur
- Status
- Auftragsart
- Priorität
---
## 22. Mobile Auftragsansicht
Die mobile Ansicht muss für die Bedienung auf Baustellen optimiert sein.
Anforderungen:
- große Schaltflächen
- geringe Texteingabe
- klare Statusanzeige
- gute Lesbarkeit bei Tageslicht
- wenige Navigationsebenen
- Kamera direkt erreichbar
- Materialerfassung mit wenigen Eingaben
- automatische Zwischenspeicherung
- Offline-Hinweis
- Synchronisationsstatus sichtbar
Empfohlene Hauptnavigation:
```text
Heute
Aufträge
Notdienst
Synchronisation
Profil
```
---
## 23. Offline-Fähigkeit
### 23.1 Ziel
Ein Auftrag soll auch bei schlechter oder fehlender Internetverbindung bearbeitet werden können.
### 23.2 Offline verfügbare Daten
Vor einem Einsatz sollen lokal gespeichert werden:
- Auftragsdaten
- Kundendaten
- Objektdaten
- Ansprechpartner
- Checklisten
- Materialvorgaben
- relevante Dokumente
- technische Zeichnungen
- letzte freigegebene Einsatzberichte
- notwendige Vorlagen
### 23.3 Offline erfassbare Daten
- Arbeitsbeginn und Arbeitsende
- Tätigkeitsnotizen
- Checklisten
- Material
- Fotos
- Sprachnotizen
- Unterschrift
- Tagesbericht
- Abschlussbericht
### 23.4 Synchronisation
Lokale Änderungen werden in einer Warteschlange gespeichert.
Sobald eine Internetverbindung vorhanden ist, erfolgt die Synchronisation.
Jede Änderung erhält:
- lokale ID
- Server-ID nach Synchronisation
- Zeitstempel
- Benutzer
- Versionsnummer
- Synchronisationsstatus
- Fehlerstatus
### 23.5 Konfliktbehandlung
Bei Konflikten gilt:
- Daten dürfen nicht stillschweigend überschrieben werden
- Konflikte werden protokolliert
- konfliktfreie Felder werden automatisch synchronisiert
- kritische Konflikte müssen im Backoffice geprüft werden
---
## 24. Dokumentenverwaltung
### 24.1 Dokumentkategorien
- Auftragsbestätigung
- technische Zeichnung
- Montageanleitung
- Sicherheitsunterlage
- Arbeitsnachweis
- Tagesbericht
- Abschlussbericht
- Kundenfreigabe
- Foto
- sonstiges Dokument
### 24.2 Versionierung
Dokumente müssen versionierbar sein.
Zu speichern:
- Version
- Dateiname
- Kategorie
- Ersteller
- Uploaddatum
- Änderungsdatum
- Freigabestatus
- Prüfsumme
### 24.3 Zugriffsrechte
Dokumente können markiert werden als:
- nur Backoffice
- für Teamleiter
- für Montageteam
- für Kundenbericht freigegeben
---
## 25. Suche
Die Anwendung benötigt eine mandantenbezogene Suche.
Suchbereiche:
- Kunden
- Objekte
- Aufträge
- Einsatzberichte
- Auftragsnummern
- Ansprechpartner
- Adressen
- Dokumentnamen
- Notizen
Filterbare Suchergebnisse:
- Zeitraum
- Kunde
- Objekt
- Auftragsart
- Status
- Team
- Monteur
Eine KI-basierte semantische Suche ist nicht Bestandteil des MVP, kann aber später ergänzt werden.
---
## 26. Audit-Logging
Sicherheits- und fachlich relevante Aktionen müssen protokolliert werden.
Beispiele:
- Anmeldung
- fehlgeschlagene Anmeldung
- Benutzer angelegt
- Rolle geändert
- Auftrag importiert
- Extraktionsdaten geändert
- Auftrag zugewiesen
- Status geändert
- Arbeitszeit korrigiert
- Material geändert
- Bericht freigegeben
- PDF erzeugt
- Dokument gelöscht
- Unterschrift erfasst
- Mandanteneinstellung geändert
Ein Audit-Log enthält:
- Mandant
- Benutzer
- Aktion
- Objektart
- Objekt-ID
- Zeitstempel
- alte Werte
- neue Werte
- IP-Adresse
- User-Agent
- Ergebnis
Audit-Logs dürfen durch normale Benutzer nicht verändert oder gelöscht werden.
---
## 27. Datenschutz und Informationssicherheit
### 27.1 Grundprinzipien
- Datenschutz durch Technikgestaltung
- Mandantentrennung
- minimale Berechtigungen
- verschlüsselte Datenübertragung
- verschlüsselte Speicherung sensibler Daten
- sichere Passworthashes
- revisionsfähige Protokollierung
- definierte Löschfristen
- Datensicherung
- Wiederherstellbarkeit
### 27.2 Authentifizierung
MVP:
- E-Mail-Adresse und Passwort
- sichere Passwortanforderungen
- Passwort-Reset
- Sitzungsverwaltung
- optional verpflichtende Mehrfaktor-Authentifizierung für Administratoren
Empfehlung:
- MFA von Beginn an technisch vorbereiten
- später Microsoft Entra ID und weitere Identity Provider über OIDC integrieren
### 27.3 Autorisierung
Autorisierung muss serverseitig erfolgen.
Prüfung mindestens auf:
- Mandant
- Rolle
- Team
- Auftragszuweisung
- Dokumentenfreigabe
- Aktion
### 27.4 Dateisicherheit
- erlaubte Dateitypen einschränken
- Dateigröße begrenzen
- MIME-Type prüfen
- Dateinamen normalisieren
- Malware-Scan
- direkte öffentliche Dateilinks vermeiden
- zeitlich begrenzte Download-URLs verwenden
### 27.5 Löschkonzept
Daten dürfen nicht ausschließlich durch hartes Löschen entfernt werden.
Für fachliche Datensätze wird zunächst Soft Delete verwendet.
Berichte und abrechnungsrelevante Nachweise erhalten mandantenbezogene Aufbewahrungsfristen.
---
## 28. Datenmodell – Hauptentitäten
### 28.1 Tenant
```text
Tenant
- id
- name
- slug
- status
- settings
- created_at
- updated_at
```
### 28.2 User
```text
User
- id
- tenant_id
- email
- password_hash
- first_name
- last_name
- phone
- status
- last_login_at
- created_at
- updated_at
```
### 28.3 Role
```text
Role
- id
- tenant_id
- name
- permissions
```
### 28.4 Team
```text
Team
- id
- tenant_id
- name
- leader_user_id
- status
```
### 28.5 TeamMember
```text
TeamMember
- team_id
- user_id
- valid_from
- valid_to
```
### 28.6 Customer
```text
Customer
- id
- tenant_id
- customer_number
- company_name
- first_name
- last_name
- address
- contact_data
- status
- is_provisional
```
### 28.7 Site
```text
Site
- id
- tenant_id
- customer_id
- name
- address
- contact_person_id
- access_notes
- safety_notes
- technical_notes
```
### 28.8 WorkOrder
```text
WorkOrder
- id
- tenant_id
- customer_id
- site_id
- external_order_number
- order_type
- priority
- status
- title
- description
- planned_start
- planned_end
- assigned_team_id
- signature_required
- source_document_id
```
### 28.9 WorkSession
```text
WorkSession
- id
- tenant_id
- work_order_id
- user_id
- team_id
- type
- started_at
- ended_at
- status
```
### 28.10 MaterialPlan
```text
MaterialPlan
- id
- tenant_id
- work_order_id
- name
- article_number
- planned_quantity
- unit
```
### 28.11 MaterialUsage
```text
MaterialUsage
- id
- tenant_id
- work_order_id
- material_plan_id
- name
- article_number
- actual_quantity
- unit
- usage_status
- deviation_reason
```
### 28.12 Report
```text
Report
- id
- tenant_id
- work_order_id
- type
- version
- status
- content
- pdf_document_id
- approved_by
- approved_at
```
### 28.13 Document
```text
Document
- id
- tenant_id
- customer_id
- site_id
- work_order_id
- category
- file_name
- storage_key
- mime_type
- file_size
- checksum
- version
- visibility
```
### 28.14 Notification
```text
Notification
- id
- tenant_id
- user_id
- type
- title
- message
- read_at
- sent_at
```
### 28.15 AuditLog
```text
AuditLog
- id
- tenant_id
- user_id
- action
- entity_type
- entity_id
- old_values
- new_values
- ip_address
- user_agent
- created_at
```
---
## 29. API-Konzept
Die Anwendung soll über eine versionierte API verfügen.
Beispiel:
```text
/api/v1/
```
### 29.1 Beispiel-Endpunkte
```text
POST /api/v1/auth/login
POST /api/v1/auth/logout
POST /api/v1/auth/refresh
GET /api/v1/customers
POST /api/v1/customers
GET /api/v1/customers/{id}
PATCH /api/v1/customers/{id}
GET /api/v1/sites
POST /api/v1/sites
GET /api/v1/sites/{id}/history
GET /api/v1/work-orders
POST /api/v1/work-orders
GET /api/v1/work-orders/{id}
PATCH /api/v1/work-orders/{id}
POST /api/v1/work-orders/{id}/assign
POST /api/v1/work-orders/{id}/start
POST /api/v1/work-orders/{id}/pause
POST /api/v1/work-orders/{id}/complete
POST /api/v1/work-orders/import
GET /api/v1/imports/{id}
POST /api/v1/imports/{id}/confirm
POST /api/v1/work-orders/{id}/materials
POST /api/v1/work-orders/{id}/photos
POST /api/v1/work-orders/{id}/voice-notes
POST /api/v1/work-orders/{id}/daily-report
POST /api/v1/work-orders/{id}/completion-report
POST /api/v1/reports/{id}/approve
GET /api/v1/reports/{id}/pdf
POST /api/v1/emergency-orders
POST /api/v1/sync
```
### 29.2 API-Anforderungen
- REST oder vergleichbares klar definiertes API-Modell
- OpenAPI-Dokumentation
- konsistente Fehlercodes
- Pagination
- Filter
- Sortierung
- Idempotency Keys für kritische mobile Aktionen
- Rate Limiting
- Mandantenprüfung
- Rollenprüfung
- Audit-Logging
---
## 30. Technologievorschlag
Der konkrete Stack kann angepasst werden.
### 30.1 Frontend
Empfehlung:
- Next.js oder React
- TypeScript
- responsive UI-Komponenten
- PWA Service Worker
- IndexedDB für Offline-Daten
- React Query oder vergleichbare Datenabstraktion
- Formularvalidierung mit Zod
- PDF- und Bildvorschau
### 30.2 Backend
Mögliche Varianten:
**Variante A**
- TypeScript
- NestJS
- Prisma ORM
- PostgreSQL
**Variante B**
- Python
- FastAPI
- SQLAlchemy
- PostgreSQL
Für eine einheitliche TypeScript-Codebasis wird Variante A empfohlen.
### 30.3 Dateispeicher
- S3-kompatibler Object Storage
- MinIO für lokale oder selbst gehostete Umgebungen
- alternativ Cloudflare R2, AWS S3 oder Azure Blob Storage
### 30.4 Hintergrundverarbeitung
Für folgende Aufgaben ist eine Job Queue erforderlich:
- OCR
- KI-Extraktion
- Transkription
- PDF-Erstellung
- Bildoptimierung
- E-Mail-Versand
- Benachrichtigungen
- Synchronisationsnachverarbeitung
Mögliche Technologien:
- Redis
- BullMQ
- Celery bei Python
- RabbitMQ optional
### 30.5 Bereitstellung
Empfehlung:
- Docker
- Docker Compose für Entwicklung
- Coolify für Hosting
- PostgreSQL
- Redis
- Object Storage
- Reverse Proxy
- TLS
- getrennte Entwicklungs-, Test- und Produktionsumgebung
---
## 31. KI- und OCR-Abstraktion
KI- und OCR-Funktionen dürfen nicht fest mit einem einzigen Anbieter verbunden werden.
Es wird eine Provider-Abstraktion empfohlen.
Beispiel:
```typescript
interface DocumentExtractionProvider {
extractText(file: Buffer): Promise<ExtractedText>;
extractStructuredData(text: string): Promise<WorkOrderExtraction>;
}
```
Mögliche Provider:
- Azure AI Document Intelligence
- Google Document AI
- AWS Textract
- Tesseract OCR
- OpenAI
- Anthropic
- lokales Sprachmodell
Konfiguration je Mandant oder Plattform:
- Provider
- Modell
- Region
- Datenschutzoptionen
- Aufbewahrung
- maximale Dateigröße
- Kostenlimit
---
## 32. PDF-Berichtsgenerierung
Berichte sollen über HTML-Templates erzeugt und als PDF gerendert werden.
Mögliche Technologien:
- Playwright
- Puppeteer
- serverseitige HTML-zu-PDF-Engine
Vorteile:
- anpassbares Layout
- Mandantenlogo
- individuelle Berichtsvorlagen
- saubere Seitenumbrüche
- Fotoübersichten
- Unterschriftenintegration
Jeder erzeugte Bericht erhält:
- eindeutige Bericht-ID
- Versionsnummer
- Erstellungsdatum
- Prüfsumme
- Freigabestatus
---
## 33. E-Mail-Versand
### 33.1 E-Mail-Ereignisse
- Teamzuweisung
- Bericht zur Prüfung
- Auftrag zur Abrechnung
- Notdiensteinsatz
- Fehler bei der Dokumentverarbeitung
### 33.2 Konfiguration
Je Mandant konfigurierbar:
- Absendername
- Absenderadresse
- Empfänger für Notdienste
- Empfänger für Abrechnung
- Antwortadresse
- E-Mail-Vorlagen
### 33.3 Technische Umsetzung
Mögliche Anbindung:
- SMTP
- Microsoft Graph
- Amazon SES
- Mailgun
- Postmark
E-Mails werden über eine Warteschlange versendet.
Versandstatus und Fehler werden protokolliert.
---
## 34. Nichtfunktionale Anforderungen
### 34.1 Performance
- Standardseiten sollen innerhalb von zwei Sekunden reagieren
- Auftragslisten müssen paginiert werden
- Bilder werden asynchron geladen
- große Dokumente werden im Hintergrund verarbeitet
- Uploadfortschritt muss sichtbar sein
### 34.2 Verfügbarkeit
Für den MVP wird eine Zielverfügbarkeit von 99,5 Prozent empfohlen.
### 34.3 Skalierbarkeit
Die Architektur muss horizontal erweiterbar sein.
Insbesondere:
- stateless Backend
- externer Dateispeicher
- zentrale Datenbank
- Redis oder Queue-System
- getrennte Worker
### 34.4 Browserunterstützung
- aktuelle Version von Chrome
- aktuelle Version von Edge
- aktuelle Version von Safari
- aktuelle Version von Firefox
- mobile Browser unter iOS und Android
### 34.5 Barrierearme Bedienung
- ausreichende Kontraste
- verständliche Beschriftungen
- Tastaturbedienung im Backoffice
- große Touch-Ziele
- Fehlermeldungen in Klartext
---
## 35. MVP-Abgrenzung
Nicht Bestandteil des initialen MVP:
- native iOS-App
- native Android-App
- vollständige Lagerverwaltung
- automatische Bestandsbuchung
- vollständige Anlagenverwaltung
- Seriennummern- und Gerätehistorie
- Rechnungsstellung
- Finanzbuchhaltung
- direkte DATEV-Schnittstelle
- direkte ERP-Schnittstellen
- automatische Tourenoptimierung
- GPS-Dauertracking
- Fahrzeugverwaltung
- Kundenportal
- Lieferantenportal
- automatische Angebotserstellung
- komplexe Ressourcenplanung
- Lohnabrechnung
- vollautomatische KI-Freigaben
- semantische Suche über alle Dokumente
---
## 36. Priorisierung
### 36.1 Muss-Funktionen für den MVP
- Multitenancy
- Benutzer und Rollen
- Kunden
- Objekte
- Teams
- PDF-Import
- OCR und Datenextraktion
- manuelle Prüfmaske
- Aufträge
- Teamzuweisung
- mobile PWA
- eingeschränkte Offline-Nutzung
- Arbeitszeiten
- Tätigkeitsdokumentation
- Materialdokumentation
- Fotos
- Checklisten
- Tagesbericht
- Abschlussbericht
- PDF-Erstellung
- Kundenunterschrift
- Notdiensteinsatz
- Backoffice-Benachrichtigung
- Objekt-Historie
- technische Dokumente
- Audit-Logging
### 36.2 Soll-Funktionen
- Sprachnotizen
- Transkription
- KI-Berichtsentwurf
- konfigurierbare Vorlagen
- E-Mail-Versand von Berichten
- Berichtsversionierung
- MFA
- Kartenlink zur Einsatzadresse
### 36.3 Kann-Funktionen
- Push-Benachrichtigungen
- Kalenderansicht
- Standorterfassung beim Einsatzstart
- Barcode- oder QR-Code-Erfassung
- kundenspezifische Statusmodelle
- digitale Einsatzfreigabe durch Teamleiter
---
## 37. User Stories
### US-001 – Mandant anlegen
**Als Plattformadministrator**
möchte ich einen neuen Handwerksbetrieb als Mandanten anlegen,
damit dieser die Anwendung mit vollständig getrennten Daten nutzen kann.
**Akzeptanzkriterien:**
- Mandant erhält eine eindeutige ID
- Mandantenadministrator kann angelegt werden
- Daten anderer Mandanten sind nicht sichtbar
- Mandant kann deaktiviert werden
---
### US-002 – Auftragsbestätigung importieren
**Als Backoffice-Mitarbeiter**
möchte ich eine Auftragsbestätigung als PDF hochladen,
damit Kunden-, Objekt- und Auftragsdaten automatisch übernommen werden.
**Akzeptanzkriterien:**
- PDF kann hochgeladen werden
- Text wird erkannt
- strukturierte Felder werden extrahiert
- unsichere Felder werden markiert
- Daten können korrigiert werden
- Auftrag wird erst nach Bestätigung angelegt
- Originaldokument bleibt gespeichert
---
### US-003 – Bestehenden Kunden erkennen
**Als Backoffice-Mitarbeiter**
möchte ich beim Import erkennen, ob der Kunde bereits existiert,
damit keine unnötigen Dubletten entstehen.
**Akzeptanzkriterien:**
- System prüft Kundennummer, Name und Adresse
- mögliche Treffer werden angezeigt
- Benutzer entscheidet über Zuordnung
- keine automatische Zusammenführung ohne Bestätigung
---
### US-004 – Auftrag einem Team zuweisen
**Als Backoffice-Mitarbeiter**
möchte ich einen Auftrag einem Montageteam zuweisen,
damit das Team den Auftrag auf dem Tablet bearbeiten kann.
**Akzeptanzkriterien:**
- Team kann ausgewählt werden
- Auftrag erscheint in der mobilen Ansicht
- Team wird benachrichtigt
- Zuweisung wird protokolliert
---
### US-005 – Technische Unterlagen ansehen
**Als Monteur**
möchte ich technische Zeichnungen und frühere Einsatzberichte am Objekt ansehen,
damit ich den aktuellen Einsatz korrekt durchführen kann.
**Akzeptanzkriterien:**
- relevante Dokumente sind am Auftrag sichtbar
- freigegebene frühere Berichte sind sichtbar
- Dokumente können vorab offline gespeichert werden
- Backoffice-interne Dokumente bleiben verborgen
---
### US-006 – Einsatz dokumentieren
**Als Monteur**
möchte ich Arbeiten, Zeiten, Fotos, Material und Notizen erfassen,
damit ein vollständiger Arbeitsnachweis entsteht.
**Akzeptanzkriterien:**
- Einsatz kann gestartet und beendet werden
- Fotos können aufgenommen werden
- Materialmengen können bestätigt oder geändert werden
- Zusatzmaterial kann erfasst werden
- Notizen bleiben bei Verbindungsabbruch erhalten
---
### US-007 – Tagesbericht erstellen
**Als Monteur**
möchte ich am Ende eines Arbeitstages einen Tagesbericht erstellen,
damit der Fortschritt eines mehrtägigen Auftrags dokumentiert ist.
**Akzeptanzkriterien:**
- Bericht enthält Arbeitszeiten und Tätigkeiten
- offene Punkte können dokumentiert werden
- Fotos können eingebunden werden
- Auftrag bleibt geöffnet
- Bericht erscheint in der Objekt-Historie
---
### US-008 – Abschlussbericht erstellen
**Als Monteur**
möchte ich nach Abschluss einen Bericht erzeugen,
damit der Kunde und das Backoffice einen Leistungsnachweis erhalten.
**Akzeptanzkriterien:**
- Pflichtangaben werden geprüft
- Pflichtfotos werden geprüft
- Materialabweichungen sind enthalten
- Kundenunterschrift kann erfasst werden
- PDF wird erzeugt
- Auftrag erhält den Status „Zur Prüfung“
---
### US-009 – Auftrag zur Abrechnung freigeben
**Als Backoffice-Mitarbeiter**
möchte ich einen abgeschlossenen Auftrag prüfen und zur Abrechnung freigeben,
damit die Rechnung erstellt werden kann.
**Akzeptanzkriterien:**
- Bericht ist einsehbar
- Arbeitszeiten sind einsehbar
- Material ist einsehbar
- Bericht kann freigegeben oder zurückgewiesen werden
- Freigabe wird protokolliert
- zuständige Stelle wird benachrichtigt
---
### US-010 – Notdiensteinsatz anlegen
**Als Monteur**
möchte ich außerhalb der Geschäftszeiten selbst einen Notdiensteinsatz anlegen,
damit der Einsatz vollständig dokumentiert und später abgerechnet werden kann.
**Akzeptanzkriterien:**
- bestehender Kunde kann ausgewählt werden
- vorläufiger Kunde kann angelegt werden
- Objekt oder Einsatzadresse kann erfasst werden
- Zeiten, Tätigkeiten, Material und Fotos können dokumentiert werden
- Abschlussbericht kann erstellt werden
- Backoffice wird automatisch informiert
- Einsatz ist am nächsten Arbeitstag zur Prüfung sichtbar
---
### US-011 – Objekt-Historie aufrufen
**Als Monteur oder Backoffice-Mitarbeiter**
möchte ich die bisherigen Einsätze eines Objekts einsehen,
damit frühere Arbeiten und technische Hinweise berücksichtigt werden.
**Akzeptanzkriterien:**
- chronologische Liste aller freigegebenen Einsätze
- Berichte und Fotos sind abrufbar
- verwendetes Material ist sichtbar
- offene Folgearbeiten werden hervorgehoben
---
### US-012 – Offline arbeiten
**Als Monteur**
möchte ich einen Auftrag ohne stabile Internetverbindung bearbeiten,
damit die Dokumentation auf Baustellen nicht unterbrochen wird.
**Akzeptanzkriterien:**
- Auftragsdaten sind offline verfügbar
- Eingaben werden lokal gespeichert
- Fotos werden in die Uploadwarteschlange aufgenommen
- Synchronisationsstatus ist sichtbar
- Daten werden nach Wiederherstellung der Verbindung übertragen
- Konflikte werden nicht stillschweigend überschrieben
---
## 38. Beispielprozess – regulärer Auftrag
```text
Backoffice lädt Auftragsbestätigung hoch
↓
OCR und KI extrahieren Daten
↓
Backoffice prüft Kunden-, Objekt- und Auftragsdaten
↓
Bestehender Kunde und bestehendes Objekt werden zugeordnet
↓
Auftrag wird einem Montageteam zugewiesen
↓
Team lädt Auftrag und Dokumente auf das Tablet
↓
Monteur startet Einsatz
↓
Arbeiten, Zeiten, Material, Fotos und Notizen werden erfasst
↓
Monteur erstellt Abschlussbericht
↓
Kunde unterschreibt
↓
PDF-Arbeitsnachweis wird erzeugt
↓
Backoffice prüft Bericht
↓
Auftrag wird zur Abrechnung freigegeben
↓
Einsatz erscheint in der Objekt-Historie
```
---
## 39. Beispielprozess – Notdiensteinsatz
```text
Monteur erhält außerhalb der Geschäftszeit einen Anruf
↓
Monteur öffnet „Notdienst“
↓
Bestehender Kunde wird ausgewählt oder vorläufig angelegt
↓
Einsatzadresse und Störungsgrund werden erfasst
↓
Einsatz wird gestartet
↓
Arbeiten, Material, Fotos und Zeiten werden dokumentiert
↓
Kunde unterschreibt oder Abwesenheit wird dokumentiert
↓
Abschlussbericht wird erzeugt
↓
Backoffice erhält E-Mail und In-App-Benachrichtigung
↓
Backoffice prüft am nächsten Arbeitstag die Stammdaten
↓
Auftrag wird zur Abrechnung freigegeben
```
---
## 40. Akzeptanzkriterien für den Gesamt-MVP
Der MVP gilt als fachlich abnahmefähig, wenn:
1. mehrere Mandanten mit sicher getrennter Datenhaltung betrieben werden können
2. Benutzer, Rollen und Montageteams verwaltet werden können
3. Auftragsbestätigungen als PDF importiert werden können
4. Kunden-, Objekt- und Auftragsdaten automatisiert extrahiert werden
5. das Backoffice die erkannten Daten prüfen und korrigieren kann
6. Aufträge Teams zugewiesen werden können
7. Monteure Aufträge auf Tablets und Smartphones bearbeiten können
8. wesentliche Daten offline erfasst werden können
9. Arbeitszeiten, Tätigkeiten, Material und Fotos dokumentiert werden können
10. Tagesberichte erzeugt werden können
11. Abschlussberichte inklusive Kundenunterschrift erzeugt werden können
12. ein PDF-Arbeitsnachweis erstellt wird
13. das Backoffice abgeschlossene Aufträge zur Abrechnung freigeben kann
14. Monteure selbstständig Notdiensteinsätze anlegen können
15. das Backoffice über Notdiensteinsätze informiert wird
16. frühere Einsätze und technische Dokumente pro Objekt abrufbar sind
17. relevante Änderungen revisionsfähig protokolliert werden
---
## 41. Empfohlene Entwicklungsphasen
### Phase 0 – Technische Basis
- Repository
- CI/CD
- Docker
- Datenbank
- Authentifizierung
- Mandantenkontext
- Rollen und Berechtigungen
- Logging
- Object Storage
- Grundlayout
### Phase 1 – Stammdaten und Aufträge
- Kunden
- Ansprechpartner
- Objekte
- Teams
- Benutzer
- Aufträge
- Statusmodell
- Dokumentenupload
- Teamzuweisung
### Phase 2 – PDF-Import
- Upload
- OCR
- Extraktion
- Prüfmaske
- Dublettenprüfung
- Auftragsentwurf
- Originaldokument
### Phase 3 – Mobile Einsatzbearbeitung
- PWA
- mobile Auftragsliste
- Einsatzstart
- Arbeitszeiten
- Checklisten
- Material
- Fotos
- Notizen
- Offline-Speicherung
### Phase 4 – Berichte
- Tagesbericht
- Abschlussbericht
- Unterschrift
- PDF-Erstellung
- Berichtsversionen
- Backoffice-Freigabe
### Phase 5 – Notdienst
- Notdiensteinsatz
- vorläufiger Kunde
- vorläufiges Objekt
- Benachrichtigungen
- Nachbearbeitung im Backoffice
### Phase 6 – Stabilisierung
- Audit-Logging
- Sicherheitsprüfungen
- Lasttests
- Offline-Konflikte
- Backup und Restore
- Monitoring
- Fehlerbehandlung
- Pilotbetrieb
---
## 42. Definition of Done
Eine Funktion gilt als fertig, wenn:
- fachliche Anforderungen umgesetzt sind
- Mandantentrennung geprüft wurde
- Rollen- und Rechteprüfung vorhanden ist
- Eingaben validiert werden
- Fehlerfälle behandelt werden
- relevante Aktionen protokolliert werden
- automatisierte Tests vorhanden sind
- API dokumentiert ist
- responsive Darstellung geprüft wurde
- Offline-Verhalten geprüft wurde, sofern relevant
- Datenschutzanforderungen berücksichtigt sind
- technische Dokumentation aktualisiert wurde
- Funktion in einer Testumgebung abgenommen wurde
---
## 43. Teststrategie
### 43.1 Unit-Tests
- Datenvalidierung
- Statusübergänge
- Berechtigungen
- Mandantenfilter
- Materialberechnungen
- Berichtsgenerierung
- Extraktionsmapping
### 43.2 Integrationstests
- PDF-Import
- OCR-Verarbeitung
- Dateiupload
- E-Mail-Versand
- PDF-Erstellung
- Datenbank
- Object Storage
- Queue-Verarbeitung
### 43.3 End-to-End-Tests
- regulärer Auftrag vom Import bis zur Freigabe
- mehrtägiger Auftrag mit Tagesbericht
- Notdiensteinsatz
- Offline-Erfassung und Synchronisation
- fehlende Pflichtfotos
- fehlende Unterschrift
- Dublettenprüfung
- Mandantentrennung
### 43.4 Sicherheitstests
- Zugriff auf fremde Mandantendaten
- manipulierte IDs
- unzulässige Rollenaktionen
- schädliche Uploads
- Session-Handling
- Rate Limiting
- Passwort-Reset
- Audit-Log-Manipulation
---
## 44. Offene fachliche Entscheidungen vor Produktivbetrieb
Folgende Punkte müssen spätestens während der Umsetzung konkretisiert werden:
- genaue Berichtsvorlage des Pilotkunden
- Pflichtfelder je Auftragsart
- erforderliche Fotoarten
- Regelung der Arbeitszeitkorrektur
- Aufbewahrungsfristen
- Empfänger der Abrechnungsbenachrichtigung
- bevorzugter OCR- und KI-Anbieter
- gewünschter E-Mail-Dienst
- Hostingstandort
- gewünschte MFA-Regelung
- Umgang mit Standortdaten
- maximale Offline-Dauer
- maximale Dateigrößen
- konkrete Buchhaltungssoftware des Pilotkunden
- später gewünschte Schnittstellen
- Unternehmensbranding der PWA
- Berichtssprache
- Lösch- und Archivierungskonzept
---
## 45. Perspektive für Version 2
Für Version 2 werden folgende Erweiterungen empfohlen:
- direkte Schnittstelle zum Buchhaltungs- oder ERP-System
- Artikel- und Materialstamm
- Lagerbestände
- automatische Übergabe abrechnungsrelevanter Positionen
- Kalender und Einsatzplanung
- Routenplanung
- Kundenportal
- Wartungsplanung
- Anlagen- und Geräteverwaltung
- Seriennummern
- QR-Codes an Objekten oder Anlagen
- automatische Erinnerungen
- Web-Push-Benachrichtigungen
- Microsoft-365-Integration
- DATEV-Export
- KI-Suche in Einsatzhistorien
- KI-Assistent für Monteure
- automatische Zusammenfassung früherer Einsätze
- Auswertung von Nachkalkulationen
- Kennzahlen je Team, Auftrag und Kunde
- konfigurierbare Workflows je Mandant
---
## 46. Zusammenfassung
Der MVP soll eine mandantenfähige PWA für Handwerks- und Montagebetriebe bereitstellen.
Der Kernnutzen besteht darin, Auftragsdaten aus bestehenden PDF-Dokumenten zu übernehmen, Montageteams digital mit allen notwendigen Informationen zu versorgen und aus der tatsächlichen Arbeit vor Ort einen vollständigen, abrechnungsfähigen Nachweis zu erzeugen.
Besonders wichtig sind:
- geringe manuelle Datenerfassung
- einfache Bedienung auf der Baustelle
- Offline-Fähigkeit
- vollständige Foto- und Materialdokumentation
- Tages- und Abschlussberichte
- Notdiensteinsätze ohne Backoffice
- dauerhafte Objekt-Historie
- technische Dokumente am Objekt
- sichere Mandantentrennung
- modular erweiterbare Architektur
Die Lösung bildet damit die Grundlage für eine später umfassendere SaaS-Plattform für Handwerks- und Montagebetriebe.