Există o aplicație internă Android pentru inspecții pe teren (Kotlin, Android 10-14, minim API 26). Inspectorii lucrează în zone fără comunicare, completează o listă de verificare, fac fotografii și, la sfârșit, creează un act în PDF. Acum PDF-ul este generat pe server, ceea ce provoacă întreruperea procesului offline. Este necesar să se facă o formare locală și semnătură a PDF-ului pe dispozitiv cu sincronizare ulterioară atunci când apare rețeaua. Mediu tehnic și limitări - Proiect: Kotlin, Gradle Kotlin DSL, MVVM, Coroutines/Flow, Hilt, Room, WorkManager, minSdk 26 - Formatul documentului: PDF/A nu este necesar, dar PDF-ul ar trebui să se deschidă în Adobe Acrobat fără erori - Semnătura: semnătură de mână cu un stylus/deget + marca temporală, precum și suprapunerea opțională a unei imagini de sigiliu pe document (PNG cu transparență) - Offline: sarcină de generare și sincronizare PDF fără acces la rețea - Securitate: fotografia și semnătura originale nu pot fi scrise în directoare partajate, doar stocare privată în aplicație; fișierele temporare ar trebui șterse Ce este deja acolo - Ecran de umplere a listei de verificare, baza de date locală a camerei cu date de revizuire și fotografii, coadă de sincronizare pe WorkManager - Punctul final al serverului acceptă PDF-ul finit ca pe mai multe părți și returnează serverDocumentId Ce trebuie făcut - Adăugați un modul/pachet pentru generarea locală de PDF din datele de revizuire (câmpuri de text, tabel de puncte, fotografii încorporate cu zoom, numerotarea paginilor) - Adăugați ecran de colectare a semnăturilor: pânză cu urmărire a presiunii, netezire a liniilor (bezier/kalman sau similar), butoane de ștergere/repetare, previzualizare a paginii cu locația semnăturii - Implementați suprapunerea semnăturii și a sigiliului în zona definită a ultimei pagini PDF cu scara corectă, indiferent de DPI-ul dispozitivului - Adăugați o coadă offline: dacă nu există rețea, salvați PDF-ul generat în memoria internă, creați o înregistrare în Room, iar WorkManager ar trebui să trimită documentul când apare rețeaua și să seteze serverDocumentId - Adăugați teste sau verificări instrumentate de bază pentru a capta regresiile de generare (de exemplu, că PDF-ul nu este gol, conține numărul așteptat de pagini pentru un set mare de fotografii) - Furnizați o scurtă documentație pentru dezvoltatori sub forma unui README cu o descriere a arhitecturii și a punctelor de integrare Criterii de acceptare măsurabile 1) În modul zbor, puteți crea un raport de inspecție cu minim 20 de puncte și 10 fotografii (3-5 MB fiecare), adăugați o semnătură, primiți un PDF pe dispozitiv fără blocări și ANR. 2) PDF-ul este deschis pe un PC în Adobe Acrobat și conține: titlu, date obiect, tabel de puncte, fotografii atașate, numărul paginii în format "X/Y", semnătură în zona specificată a ultimei pagini. 3) După ce rețeaua este restaurată, WorkManager trimite PDF-ul către server, serverDocumentId apare în DB local și fișierul temporar local este șters (sau marcat pentru curățare, dar este de fapt curățat în 24 de ore). 4) Memorie: în timpul generării unui PDF din 10 fotografii, aplicația nu se blochează pe dispozitivele cu 4 GB RAM; imaginile mari sunt redimensionate înainte de a le încorpora în PDF. 5) Codul este compilat în CI existent (Gradle), fără a adăuga dependențe grele care măresc semnificativ dimensiunea APK-ului (limită agreată +8 MB). Rezultat - PR sau un set de commit la depozit cu implementare generare PDF, ecran de semnătură, sincronizare offline și teste minime, gata pentru revizuire. Bugetul este limitat, așa că este importantă o implementare pragmatică fără design inutil, dar cu funcționare offline fiabilă și PDF corect.