Offline inspection to problem synchronizacji z wymaganiami evidence
Aplikacja terenowa nie może zakładać stabilnego internetu, poprawnego zegara urządzenia ani natychmiastowego dostępu do backendu. Jednocześnie pomiary, GPS, zdjęcia i decyzje technika mogą później stać się częścią protokołu lub audit trail. Architektura musi więc bezpiecznie zachować local work i synchronizować go deterministycznie.
1. Utwórz local inspection session z identity nadanym przez serwer
Przed rozpoczęciem pracy pobierz assigned work order, snapshot assetu, checklist definition i server-issued inspection/session ID. Mobilka może offline dopisywać observations do tego identity. Nie twórz drugiego niezależnego inspection locally, który później trzeba „scalić”.
2. Device time i server time przechowuj osobno
Dla pomiaru zachowaj device timestamp, timezone/offset i sync metadata. Po odbiorze serwer dodaje server-received time. Nie „naprawiaj” historii przez overwrite oryginalnego czasu. Gdy zegar telefonu jest błędny, audit trail nadal powinien pokazywać oba timestampy.
3. GPS jest evidence, a nie identity assetu
GPS może wspierać dowód wykonania pracy przy obiekcie, ale wewnątrz budynku może być niedokładny albo niedostępny. Zapisz lat/long, accuracy, capture time i permission/source state jako evidence record połączony z inspection. Nie używaj współrzędnych jako canonical location hydrantu lub gaśnicy.
4. Dane z urządzenia pomiarowego potrzebują provenance
Zachowuj device identifier, raw value, normalized unit, capture time i transport/source. Manual correction nie powinno zastępować device event; utwórz amendment z aktorem i reason.
5. Użyj durable append queue i idempotency
Offline writes trafiają do lokalnej kolejki. Każda mutacja ma stable client event ID/idempotency key. Po powrocie internetu serwer może bezpiecznie potwierdzić retry bez duplikowania danych. Queue state powinien rozróżniać pending, sent, acknowledged, rejected i needs repair.
6. Konflikty rozwiązuj regułą domenową, nie last-write-wins
| Konflikt | Bezpieczniejsza reguła |
|---|---|
| Dwóch techników zmienia notatkę | Zachowaj versions albo merge task |
| Asset przeniesiony podczas offline | Zachowaj inspection przy captured snapshot i zgłoś zmianę |
| Pomiar powtórzony | Zachowaj oba eventy i oznacz accepted |
| Protokół finalized | Wymagaj amendment/reopen workflow |
Last-write-wins jest dobre dla preferencji UI, ale nie dla audit evidence.
7. Finalny PDF generuj wyłącznie z zsynchronizowanego canonical state
Technik może mieć offline preview, ale final protocol powinien powstać po acknowledged mutations i validation. Serwer składa dokument z canonical inspection version, measurements, findings, evidence attachments i template version. Wtedy PDF nie zawiera wartości, które nigdy nie dotarły do bazy.
8. Repair states muszą być widoczne
Jeżeli jedno zdjęcie nie zostało wysłane albo measurement nie przechodzi schema, nie oznaczaj całego inspection jako completed. Pokaż dokładnie, czego brakuje, i pozwól na targeted retry. Supervisor powinien widzieć osobny stan „field work complete / synchronization incomplete”.
9. Offline data wymaga osobnego security modelu
Minimalizuj pobierane customer data, używaj bezpiecznego storage, wygaszaj sessions, trzymaj tokens w secure storage i kasuj cached inspection packages po retention window. Offline rozszerza data boundary na urządzenie technika.
10. Produkcyjny proof z operacji PPOŻ
W systemie TECHPRES field measurements, GPS/location context, service orders i generated protocols należą do jednego operational graphu. Reusable pattern jest prosty: capture evidence locally, synchronizuj z explicit identity/provenance, a customer/audit outputs generuj z finalized canonical state. Wdrożenia: Fire Safety & Inspection Software Development.
Checklist offline inspection
- Server-issued inspection/session identity.
- Device i server timestamps przechowywane osobno.
- GPS z accuracy/provenance.
- Measurement events immutable + amendments.
- Durable queue i idempotent writes.
- Domain-specific conflict resolution.
- Visible repair/sync states.
- Final PDF z synchronized canonical state.
