Files
boc/GVIS_QX_INTEGRATION.md
T
Bernt bae705aa97 ARCHITECTURE: NFC roadmap, edge AI, audit logging
- 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
2026-06-29 16:24:48 +00:00

6.0 KiB

GVIS — quiXzoom Integration Spec

Mission Type Mapping

Varje GVIS-objekt blir en quiXzoom mission type med AI-prompt och zoomer-instruktion.

Exempel: TRN-001 (Asfalt)

{
  "mission_type": "gvis-trn-001",
  "namn": "Asfaltinspektion",
  "gvis_id": "TRN-001",
  "beskrivning": "Dokumentera asfaltens skick på utsatt sträcka",
  "betalning": "150-300 kr",
  "tid": "15-30 min",
  "utrustning": "Smartphone",
  
  "ai_prompt": {
    "system": "Du är en asfaltspecialist. Bedöm asfaltens skick från fotografier.",
    "kontrollpunkter": [
      "Identifiera potthål (djup >2cm, diameter >10cm)",
      "Identifiera sprickor (bredd >2cm, längd >30cm)",
      "Identifiera sättningar (djup >3cm)",
      "Identifiera spårskärpning (djup >1cm)"
    ],
    "output": {
      "skick": "0-100",
      "risknivå": "1-5",
      "prioritet": "information/underhåll/åtgärd/akut/kritisk",
      "typ_av_skada": "string",
      "omfattning": "string",
      "rekommenderad_åtgärd": "string",
      "åtgärdstid": "string"
    }
  },
  
  "zoomer_instruktion": {
    "steg": [
      "Navigera till utsatt GPS-position",
      "Fotografera asfalten rakt ovanifrån (90°)",
      "Fotografera asfalten i 45° vinkel för djupbedömning",
      "Fotografera eventuella skador med närbild",
      "Fotografera omgivningen för kontext",
      "Bekräfta position i appen"
    ],
    "krav": [
      "Minst 3 foton",
      "Dagsljus eller god belysning",
      "Inga fordon i bild",
      "GPS aktiverad"
    ]
  },
  
  "validering": {
    "min_foton": 3,
    "max_avstand_m": 10,
    "min_upplosning": "12MP",
    "godkand_vinkel": ["90", "45"]
  }
}

Exempel: HAM-024 (Livboj)

{
  "mission_type": "gvis-ham-024",
  "namn": "Livbojskontroll",
  "gvis_id": "HAM-024",
  "beskrivning": "Verifiera att livboj finns på plats och är i brukbart skick",
  "betalning": "100-200 kr",
  "tid": "5-10 min",
  "utrustning": "Smartphone",
  
  "ai_prompt": {
    "system": "Du är en sjösäkerhetsspecialist. Bedöm livbojens skick.",
    "kontrollpunkter": [
      "Livboj finns på plats",
      "Stolpen står rakt (lutning <5°)",
      "Lina finns och är hel",
      "Bojen är hel (inga sprickor/hål)",
      "Reflex finns och är synlig",
      "Skylt finns och är läsbar",
      "Fri åtkomst (inga hinder inom 2m)",
      "Ingen korrosion på stolpe/fäste",
      "Inga hinder som blockerar användning"
    ],
    "output": {
      "skick": "0-100",
      "risknivå": "1-5",
      "saknas": "boolean",
      "skadad": "boolean",
      "blockerad": "boolean"
    }
  },
  
  "zoomer_instruktion": {
    "steg": [
      "Navigera till livbojens GPS-position",
      "Fotografera hela livbojen med omgivning (5m avstånd)",
      "Fotografera närbild av boj, lina och reflex",
      "Fotografera stolpe och fundament",
      "Fotografera eventuella hinder",
      "Bekräfta position i appen"
    ]
  }
}

API Endpoints

Skapa GVIS-mission

POST /api/v1/missions/gvis
{
  "gvis_id": "TRN-001",
  "position": {"lat": 59.3293, "lng": 18.0686},
  "radius_m": 50,
  "priority": "normal",
  "deadline": "2026-07-01T23:59:59Z"
}

Response:
{
  "mission_id": "M-123456",
  "status": "active",
  "estimated_completion": "24h",
  "zoomers_notified": 12
}

Hämta GVIS-observation

GET /api/v1/observations/{observation_id}

Response:
{
  "gvis_id": "TRN-001",
  "objekt": "Asfalt",
  "bedömning": {
    "skick": 23,
    "risknivå": 4,
    "prioritet": "akut",
    "typ_av_skada": "potthål_djup_>5cm",
    "omfattning": "punkt_0.5m2"
  },
  "media": [...],
  "zoomer": {"id": "Z-78432", "rating": 4.8},
  "ai_konfidens": 0.94,
  "human_reviewed": true
}

Batch-analys (Landvex)

POST /api/v1/analyze/contradictions
{
  "kommun": "Stockholm",
  "gvis_filter": ["TRN-001", "TRN-002", "BEL-013"],
  "period": "2026-Q2",
  " jämför_med": "officiell_rapport_2026"
}

Response:
{
  "kontradiktioner": [
    {
      "typ": "underhåll_vs_verklighet",
      "allvarlighet": "hög",
      "beskrivning": "Kommunen rapporterar 98% fungerande gatlyktor, GVIS visar 23% trasiga i område X",
      "påverkade_objekt": 47,
      "rekommenderad_åtgärd": "Omedelbar inspektion av område X"
    }
  ]
}

Dataflöde

┌─────────────┐     ┌──────────────┐     ┌─────────────┐     ┌─────────────┐
│   Zoomer    │────▶│  quiXzoom    │────▶│   GVIS      │────▶│  Landvex    │
│  (App)      │     │   Backend    │     │ Normalizer  │     │  Analysis   │
└─────────────┘     └──────────────┘     └─────────────┘     └─────────────┘
                           │                                           │
                           ▼                                           ▼
                    ┌──────────────┐                          ┌─────────────┐
                    │  AI-bedomning │                          │  Kontradiktion│
                    │  (Vision API) │                          │  Rapport      │
                    └──────────────┘                          └─────────────┘
                           │                                           │
                           ▼                                           ▼
                    ┌──────────────┐                          ┌─────────────┐
                    │  Kvalitets-   │                          │  Kund        │
                    │  kontroll     │                          │  (Kommun)    │
                    └──────────────┘                          └─────────────┘

GVIS-quiXzoom Integration v1.0 — 2026-06-26