Für Feldinspektionen gibt es eine interne Android-Anwendung (Kotlin, Android 10-14, mindestens API 26). Inspektoren arbeiten in Nicht-Kommunikationszonen, füllen eine Checkliste aus, machen Fotos und erstellen am Ende eine Akte im PDF-Format. Jetzt wird das PDF auf dem Server generiert, wodurch der Prozess offline unterbrochen wird. Es ist notwendig, eine lokale Erstellung und Signatur des PDFs auf dem Gerät mit anschließender Synchronisierung beim Erscheinen des Netzwerks vorzunehmen. Technische Umgebung und Einschränkungen - Projekt: Kotlin, Gradle Kotlin DSL, MVVM, Coroutines/Flow, Hilt, Room, WorkManager, minSdk 26 - Dokumentformat: PDF/A ist nicht erforderlich, aber das PDF sollte sich fehlerfrei in Adobe Acrobat öffnen lassen - Unterschrift: handschriftliche Unterschrift mit Stift/Finger + Zeitstempel, sowie optionale Einblendung eines Siegelbildes auf dem Dokument (PNG mit Transparenz) - Offline: PDF-Generierung und Synchronisierungsaufgabe ohne Netzwerkzugriff - Sicherheit: Das Originalfoto und die Originalsignatur können nicht in freigegebene Verzeichnisse geschrieben werden, sondern nur in den privaten App-Speicher; Temporäre Dateien sollten gelöscht werden Was ist schon da - Bildschirm zum Ausfüllen der Checkliste, lokale Raumdatenbank mit Überprüfungsdaten und Fotos, Synchronisierungswarteschlange im WorkManager – Der Serverendpunkt akzeptiert das fertige PDF als Multipart und gibt die serverDocumentId zurück Was muss getan werden? - Fügen Sie ein Modul/Paket für die lokale PDF-Generierung aus Bewertungsdaten hinzu (Textfelder, Punktetabelle, eingebettete Fotos mit Zoom, Seitennummerierung). - Signatursammelbildschirm hinzufügen: Leinwand mit Druckverfolgung, Linienglättung (Bezier/Kalman oder ähnliches), Schaltflächen zum Löschen/Wiederholen, Seitenvorschau mit Signaturposition - Implementieren Sie die Signatur- und Siegelüberlagerung im definierten Bereich der letzten PDF-Seite mit der richtigen Skalierung, unabhängig von der Geräte-DPI - Fügen Sie eine Offline-Warteschlange hinzu: Wenn kein Netzwerk vorhanden ist, speichern Sie die generierte PDF-Datei im internen Speicher, erstellen Sie einen Datensatz in Room, und der WorkManager sollte das Dokument senden, wenn das Netzwerk erscheint, und die serverDocumentId festlegen - Fügen Sie grundlegende instrumentierte Tests oder Prüfungen hinzu, um Generationsregressionen abzufangen (z. B. dass die PDF-Datei nicht leer ist und die erwartete Anzahl von Seiten für eine große Anzahl von Fotos enthält). - Bereitstellung einer kurzen Dokumentation für Entwickler in Form einer README-Datei mit einer Beschreibung der Architektur und der Integrationspunkte Messbare Akzeptanzkriterien 1) Im Flugmodus können Sie einen Inspektionsbericht mit mindestens 20 Punkten und 10 Fotos (jeweils 3-5 MB) erstellen, eine Unterschrift hinzufügen, ein PDF auf dem Gerät ohne Abstürze und ANR erhalten. 2) Das PDF wird auf einem PC in Adobe Acrobat geöffnet und enthält: Titel, Objektdaten, Punktetabelle, angehängte Fotos, Seitenzahl im Format "X/Y", Signatur im angegebenen Bereich der letzten Seite. 3) Nachdem das Netzwerk wiederhergestellt ist, sendet WorkManager die PDF-Datei an den Server, die serverDocumentId erscheint in der lokalen Datenbank und die lokale temporäre Datei wird gelöscht (oder zur Bereinigung markiert, wird aber tatsächlich innerhalb von 24 Stunden bereinigt). 4) Speicher: Bei der Erstellung einer PDF-Datei aus 10 Fotos stürzt die Anwendung auf Geräten mit 4 GB RAM nicht ab; Große Bilder werden vor dem Einbetten in PDF in der Größe geändert. 5) Der Code wird im vorhandenen CI (Gradle) kompiliert, ohne dass starke Abhängigkeiten hinzugefügt werden, die die Größe des APK erheblich erhöhen (vereinbarte Grenze +8 MB). Ergebnis - PR oder Satz von Commits an das Repository mit Implementierung der PDF-Generierung, Signaturbildschirm, Offline-Synchronisierung und minimalen Tests, bereit zur Überprüfung. Das Budget ist begrenzt, daher ist eine pragmatische Umsetzung ohne unnötiges Design, aber mit zuverlässigem Offline-Betrieb und korrektem PDF wichtig.