- Add NFC ePassport roadmap (ICAO 9303, eIDAS) - Add TensorFlow.js edge face detection (BlazeFace) - Add structured audit logger (GDPR-compliant) - Risk scoring support Part of KYC Apple Native UX v1.1.0
6.6 KiB
quiXzoom Capture Flow — Arkitekturspec
Beslutad: 2026-06-17. Ägare: Erik Svensson.
Grundprincip
Användaren ska aldrig behöva gissa vad som är fel.
Gammalt flöde (oacceptabelt): Ta bild → Vänta → Få avslag → Gissa → Ta ny bild
quiXzoom-flödet: Rikta kamera → Följ instruktioner → Grönt ljus → Bild tas → Godkänd direkt
KPI: >90% av alla bilder godkänns vid första exponeringen.
Flödets 7 steg
Steg 1 — Uppdrag accepteras
Zoomer väljer uppdrag. Systemet laddar ett Mission Context Package:
{
mission_id, location, control_objects[], reference_images[],
capture_rules[], ai_knowledge_packs[], acceptance_criteria[]
}
Varje control_object är kopplat till ett AVO-kunskapspaket.
Steg 2 — AI-styrt kameraläge (Live Guidance)
Istället för direkt kamera öppnas Live Guidance Mode — kontinuerlig analys av videoströmmen, ~10 fps.
Realtidskontroller (alla måste vara ✅ för grönt läge):
| Check | Fel-feedback |
|---|---|
| Objekt hittat | "Rikta kameran mot [objekt]" |
| Rätt avstånd | "Flytta närmare" / "Backa 1 meter" |
| Rätt vinkel | "Vrid kameran åt höger" / "Höj kameran 15 cm" |
| Tillräckligt ljus | "För mörkt — sök bättre ljus" |
| Hela objektet synligt | "Objekt delvis utanför bild — backa lite" |
| Skärpa godkänd | "Håll kameran still" |
| Geo-match | "Du är inte vid rätt adress" |
Teknisk implementation:
- Klientsidig: TensorFlow Lite / CoreML på device (låg latens, offline-kapabel)
- Serversidig fallback för tyngre analyser (sprickor, OCR) vid bra uppkoppling
- Feedback-overlay i AR: grön ram = klar, röd + text = korrigering krävs
Steg 3 — Grönt läge (Capture Ready)
När alla kriterier är uppfyllda:
🟢 Objekt verifierat
🟢 Bildkvalitet godkänd
🟢 Redo att fotografera
Kameran kan antingen:
- Autoshoot — tar bilden automatiskt vid 3 sek stabil grön status
- Manual unlock — låser upp avtryckaren, Zoomer tar bilden
Default: autoshoot. Konfigurerbart per uppdragstyp.
Steg 4 — Parallell AI-analys
Efter exponering körs AVO-analyser parallellt (target: <3 sek):
┌─────────────────────────────────────────────┐
│ Image received │
├──────────────┬──────────────┬───────────────┤
│ AVO instance │ AVO instance │ AVO instance │
│ control_obj_1│ control_obj_2│ quality_check │
└──────────────┴──────────────┴───────────────┘
↓ ↓ ↓
└──────────────┴──────────────┘
↓
Decision Engine
Varje AVO-instans kör mot sitt kunskapspaket och returnerar avvikelse-JSON. Quality check är ett eget paket: blur, exposure, completeness.
Steg 5 — Beslutsmotor
GODKÄND:
🟢 Uppdragets bildkrav uppfyllda
Bild accepterad. Fortsätt till nästa kontrollpunkt.
→ Bild sparas, geo-tagg + timestamp + device-ID loggas, betalningspipeline triggas.
NEKAD — AI måste alltid ge en konkret, handlingsbar anledning:
| Avvikelse | Feedback till Zoomer |
|---|---|
| OCR-fel: skylt oläsbar | "Registreringsskylten är inte fullt läsbar." |
| Objekt delvis skymt | "Serienumret är skymt." |
| Completeness-fel | "Hela fasaden syns inte." |
| Blur | "Bilden är oskarp." |
| Object mismatch | "Objektet motsvarar inte uppdragets beskrivning." |
| Distance-fel | "Avståndet är för långt." |
Aldrig: "Fel uppstod." / "Bild ej godkänd." utan anledning.
Steg 6 — Automatisk återgång
Vid nekad bild: systemet öppnar direkt kameran igen med uppdaterad guidance baserad på avvisningsanledningen.
Rikta kameran 30 cm lägre. ← Ny specifik instruktion
Ta med hela objektet.
Ingen manuell navigation. Ingen "försök igen"-knapp. Det bara händer.
Steg 7 — Uppdrag slutfört
När alla obligatoriska kontrollobjekt är verifierade:
🟢 Uppdrag slutfört
🟢 12 av 12 kontrollpunkter verifierade
🟢 Kvalitetsnivå: 98%
Betalning triggas automatiskt via Stripe Connect. Uppdragsgivaren får leverans i sin dashboard.
AVO-integration (avvikelsemotorn)
Live Guidance (steg 2) och Post-capture (steg 4) delar samma kunskapspaket men körs i olika lägen:
| Läge | Trigger | Latenskrav | AVO-config |
|---|---|---|---|
| Live | Videoframe ~10fps | <100ms | Lätt subset av checks — guidance only |
| Capture | Exponering | <3 sek | Fullständiga checks — beslutsgrundande |
Live-läget kör aldrig beslutsgrundande analys — det guidar bara. Post-capture kör fullständig AVO och är det enda som räknas för godkännande.
Kunskapspaket per uppdragstyp (exempel)
{
"object": "building_facade",
"checks": ["completeness", "ocr_address", "damage_detection", "lighting_check"],
"tolerances": { "min_coverage_pct": 85, "max_blur": 0.3 },
"known_faults": ["crack", "graffiti", "missing_element", "occlusion"],
"risk_rules": { "ocr_fail": "high", "crack": "medium", "graffiti": "low" },
"live_guidance": {
"distance_range_m": [3, 8],
"preferred_angle": "straight_on",
"required_elements": ["entrance", "full_height"]
}
}
Teknisk stack (förslag)
| Komponent | Teknologi |
|---|---|
| Live guidance (client) | TensorFlow Lite / CoreML |
| Post-capture AVO | Server-side (GPU), <3 sek SLA |
| Overlay UI | React Native + Reanimated |
| Geo-validering | Device GPS + ±15m tolerans |
| Bildlagring | S3 (quixzoom-media-prod) |
| Beslutspipeline | aamos-core → AVO → beslut → Stripe |
| Audit trail | Immutable log: image_hash + geo + timestamp + device_id |
Öppna frågor
- Autoshoot vs manual unlock — default per uppdragstyp eller global setting?
- Offline-kapabilitet — live guidance måste fungera utan nät. Post-capture kan queua.
- Manipulationsskydd — hur hindrar vi att Zoomers skickar skärmdumpar av bilder? Device attestation (iOS/Android)?
- Max antal omtag per kontrollobjekt — ska det finnas ett tak? (ex. 5 försök → eskalera till manuell granskning)
- Deltagarens integritet — bilder kan innehålla personer. GDPR-krav på face blurring?
Nästa steg: Bygga MVP-implementation av Live Guidance för iOS.