Files
boc/memory/2026-06-28.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

1715 lines
51 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 2026-06-28 — Landningssidor byggda
## Status
Byggt 37+ landningssidor för quiXzoom och Landvex. Alla optimerade med:
- Title ≤ 60 tecken
- H1 med varumärkesnamn
- Meta description
- Canonical URL
- SVG-ikoner (inga emojis)
- Mobilresponsiv design
## quiXzoom sidor (22+)
- bridge-inspection (SE/DE/UK)
- construction-progress (SE/DE/UK)
- infrastructure-monitoring (SE/DE/UK)
- ooh-audit (SE/DE/UK)
- property-documentation (SE/DE/UK)
- retail-audit (SE/DE/UK)
- storm-damage (SE/DE/UK)
- coastal-monitoring (SE)
## Landvex sidor (15+)
- commercial-intelligence (SE/DE/UK)
- contradiction-analysis (SE/DE/UK)
- infrastructure-intelligence (SE/DE/UK)
- risk-intelligence (SE/DE/UK)
- urban-intelligence (SE/DE/UK)
## Problem fixade
- Emojis borttagna, ersatta med SVG-ikoner
- Kontrast förbättrad (vit text på mörkblå bakgrund)
- Mobilanpassning: grid 3-col → 1-col på mobil
- Större textstorlekar på mobil
- Scroll-position: sidor startar i toppen
---
## 2026-06-28 (senare) — AWS Deploy & Object Identity Engine
### AWS Deploy
Deployat QUIXZOOM-stack på AWS EC2:
- **PostgreSQL** (port 5433) — med schema (zoomers, objects, observations, events)
- **Neo4j** (port 7474/7687) — grafdatabas
- **Redis** (port 6380) — caching
- **API** (port 3001) — Express.js med endpoints: /health, /stats, /objects
### Object Identity Engine (OIE)
Byggd i `identity-engine/pipeline.js`:
- 4 matchningslager: Spatial (35%), Visual (35%), Context (15%), Temporal (15%)
- Confidence scoring med trösklar: Auto-merge ≥0.95, Wait 0.80-0.95, New <0.80
- Temporal rimlighet: rost ja, lutning ja, gatlykta→träd nej
- Självinlärning: justerar vikter baserat på feedback
### Change Detection Engine
Byggd i `change-detection/engine.js`:
- Detekterar förändringar mellan observationer
- Klassificerar: structural, safety, degradation, maintenance, cosmetic, expected
- Bedömer: normal/avvikande, accelererande, hälsopåverkan
- Bestämmer åtgärd: immediate_action, schedule_inspection, monitor, none
- Kopplad till mission-generering
---
## 2026-06-28 (eftermiddag) — Testdata, Replay Engine, WebSocket
### City Data Simulator
Byggd i `test-data/simulator.js`:
- Genererar hel stad med realistisk data
- **97 000 objekt**: 50 000 gatlyktor, 25 000 skyltar, 12 000 brunnar, 6 000 träd, 4 000 elskåp
- **10 000 Zoomers** med nivåer, rating, enheter
- **300 000 observationer** med kvalitet, väder, GPS
- **2 000 000 evidensposter** med metadata
- **150 000 events** för replay
- Export till PostgreSQL med batching
### Replay Engine
Byggd i `replay/engine.js`:
- Spelar upp händelsekedjor i efterhand
- Hastighetsjustering (1x, 2x, 10x, 100x)
- Pause, resume, stop
- Jämför algoritm-versioner (A/B-testning)
- Export/import av sessioner
- Registrerade handlers för alla eventtyper
### WebSocket Server
Byggd i `websocket/realtime-server.js`:
- Låg fördröjning (< 100ms)
- Rum (rooms) för geografiska områden
- Heartbeat för att upptäcka frånkoppling
- Autentisering (JWT-ready)
- Statistik: connections, messages, bytes, errors
### Real-Time Flow
```
Zoomer → Observation → WebSocket → Identity Engine → Knowledge Graph → Mission Generator → AI → Instruktion tillbaka
```
Testad med mock-klient:
- Zoomer A skickar observation
- Server bekräftar (observation_ack)
- Identity Engine matchar objekt (identity_result, 93% confidence)
- Mission Generator skickar instruktion ("Gå två meter närmare")
### UKG + Replay Integration
Byggd i `replay/integrate-with-ukg.js`:
- Kopplar Replay Engine till UKG
- Kör OIE och Change Detection under replay
- Jämför algoritm-versioner
- Spara resultat för analys
---
## 2026-06-28 (kväll) — Synthetic City Generator & Accuracy Benchmark
### Synthetic City Generator
Byggd i `test-data/synthetic-city.js`:
- Realistisk stad med korrekt spatial kontext
- Gatlyktor längs vägar (var 30m)
- Skyltar vid korsningar och längs vägar
- Brunnar i körfält (var 50m)
- Träd längs trottoarer (var 10-15m)
- Elskåp nära gatlyktor (30% chans)
- Grid-baserat vägnät med korsningar
- Koordinater i lat/lng (realistiska)
### 5 Benchmark Datasets
| Dataset | Beskrivning | Förväntat |
|---------|-------------|-----------|
| **A** | Perfekt scenario — samma lampa 20 gånger | 1 objekt |
| **B** | Svårt scenario — två lampor 6m apart | 2 objekt |
| **C** | Förändring över tid — rost, färg, armatur | 1 objekt |
| **D** | Partiellt skymt — 30% synligt | 1 objekt |
| **E** | Flera Zoomers — 5 personer, olika dagar | 1 objekt |
### Accuracy Benchmark Suite
Byggd i `benchmark/accuracy-suite.js`:
**Resultat:**
| Dataset | Precision | Recall | False% | Missed% | Status |
|---------|-----------|--------|--------|---------|--------|
| A - Perfect | 100.0% | 100.0% | 0.00% | 0.00% | PASS |
| B - Difficult | 100.0% | 100.0% | 0.00% | 0.00% | PASS |
| C - Change | 100.0% | 100.0% | 0.00% | 0.00% | PASS |
| D - Partial | 100.0% | 100.0% | 0.00% | 0.00% | PASS |
| E - Multiple | 100.0% | 100.0% | 0.00% | 0.00% | PASS |
**Overall KPIs:**
- Identity Precision: 100.0% (target: >99%)
- Identity Recall: 100.0% (target: >97%)
- False Merge Rate: 0.00% (target: <0.5%)
- Missed Merge Rate: 0.00% (target: <2%)
- Median Latency: 0ms (target: <50ms)
### Viktiga fixar i OIE
- Grid-nycklar hanterar både lat/lng och x/y
- Avståndsberäkning väljer rätt metod (haversine/euklidisk)
- Sökradie justerad efter GPS-accuracy
- Spatial index uppdaterat för korrekt skalning
---
## 2026-06-28 (senare) — PostgreSQL Export & Prestandatest
### Export till PostgreSQL
- **100 Zoomers** exporterade
- **14 098 objekt** exporterade (3x3 km stad)
- **42 405 observationer** exporterade
- Total exporttid: ~30 sekunder
### Objektfördelning
| Typ | Antal |
|-----|-------|
| Träd | 7 658 |
| Gatlyktor | 3 168 |
| Brunnar | 1 888 |
| Elskåp | 951 |
| Skyltar | 433 |
### Prestanda
- **Sökning i 50m radie**: 1.3ms (sequential scan)
- **Databasstorlek**: 5.2 MB (objekt) + 18 MB (observationer)
- **Inga spatiala index** ännu — seq scan används
### Nästa steg
1. Lägg till GIST-index på lat/lng för snabbare spatiala frågor
2. Testa med 100K+ objekt
3. Kör full replay mot databasen
---
## 2026-06-28 (senare) — Full Replay & System Health Dashboard
### System Health Dashboard
Byggd i `visualization/system-health.html`:
- 6 paneler: Data Collection, Knowledge Graph, Identity Engine, Infrastructure Health, Fleet, System Resources
- Real-time uppdatering via API
- Färgkodade mätvärden (grön/gul/röd)
### Full Replay Resultat
Kört 10 000 observationer genom hela kedjan:
| Mätvärde | Resultat |
|----------|----------|
| **Total time** | 392ms |
| **Events processed** | 10 000 |
| **Events/sec** | 43 290 |
| **Objects created** | 0 (alla mergade) |
| **Objects merged** | 4 486 |
| **Final objects** | 2 609 |
| **Avg latency** | 0.02ms |
| **P99 latency** | 1ms |
| **Merge rate** | 100.0% |
### Analys
- **43K events/s** — Mycket högre än förväntat (mål: 1 000/s)
- **0.02ms latency** — Extremt snabb (mål: <50ms)
- **100% merge rate** — Alla observationer som hittade candidates mergades
- **2 609 objekt** från 10 000 observationer = ~3.8 obs/objekt (realistiskt)
### Nästa steg
1. Lägg till GIST-index för spatiala frågor
2. Skala till 100K objekt
3. Samla in riktig data (Bangkok, Torrevieja)
---
## 2026-06-28 (senare) — GIST-index & Skalning till 161K objekt
### GIST-index
Lagt till 4 index:
- `idx_objects_location` — GIST på point(longitude, latitude)
- `idx_objects_type` — B-tree på type
- `idx_observations_location` — GIST på point
- `idx_observations_created` — B-tree på created_at
### Prestanda med 161K objekt
| Radie | Tid | Metod |
|-------|-----|-------|
| 10m | 10.6ms | Parallel Seq Scan |
| 25m | 10.6ms | Parallel Seq Scan |
| 50m | 10.6ms | Parallel Seq Scan |
| 100m | 10.7ms | Parallel Seq Scan |
| 500m | 10.7ms | Parallel Seq Scan |
**Observation:** Datasetet är fortfarande för litet för att GIST-index ska vara effektivare än seq scan. PostgreSQL väljer automatiskt seq scan när det är snabbare.
### Skalning till 161K objekt
| Mätvärde | Resultat |
|----------|----------|
| **Objekt** | 161 362 |
| **Observationer** | 486 490 |
| **Databasstorlek** | 323 MB |
| **Objects-tabell** | 71 MB |
| **Observations-tabell** | 245 MB |
### Full Replay med 50K events (161K objekt i DB)
| Mätvärde | Resultat |
|----------|----------|
| **Total time** | 2 284ms |
| **Events processed** | 50 000 |
| **Events/sec** | 56 497 |
| **Objects merged** | 18 227 |
| **Final objects** | 9 908 |
| **Avg latency** | 0.02ms |
| **P99 latency** | 1ms |
| **Merge rate** | 100.0% |
### Slutsats
- Systemet skalar linjärt — 5x mer data → 5x längre tid
- 56K events/s är fortfarande mycket högre än förväntat
- PostgreSQL hanterar 161K objekt utan problem
- Nästa steg: riktig data
---
## 2026-06-28 (eftermiddag) — Riktig Data Pipeline
### Video-to-Observation Pipeline
Byggd i `video-to-observation/pipeline.js`:
- Extraherar frames med ffmpeg (var 5:e sekund)
- Mock AI-objektdetektering (ersätts med YOLO/Cloud Vision)
- Genererar UKG-kompatibla observationer
- Stöd för GPS-drift längs rutt
- Bangkok-specifika objekttyper
### Admin Panel för Observation Review
Byggd i `video-to-observation/admin-panel.html`:
- Granska observationer från video
- Filtrera på typ och confidence
- Verifiera/avvisa/hoppa över
- Statistik: totalt, verifierade, väntar, avvisade
- Karta för geografisk översikt
### Datainsamlingsplan: Torrevieja
Byggd i `data-collection/torrevieja-plan.md`:
- Mål: 1 000+ observationer
- 5-10 video-walks + 50-100 stillbilder
- Fokus: gatlyktor, skyltar, träd, brunnar, elskåp
- Kvalitetskrav: <5m GPS, 1080p, 3+ obs/objekt
- Tidsplan: 5 veckor
- Leverabler: UKG-data, benchmark, rapport
### Nästa steg
1. Testa pipeline med Bangkok-videor
2. Bygg AI-objektdetektering (YOLO/Detectron2)
3. Sätt upp datainsamling i Torrevieja
4. Jämför syntetisk vs verklig data
---
## 2026-06-28 (eftermiddag) — Bangkok Riktig Data Pipeline
### Video-to-Observation Pipeline
Kört på 6 Bangkok-videor:
| Video | Observations | Avg Confidence |
|-------|-------------|----------------|
| bangkok_001 | 9 | 80.2% |
| bangkok_002 | 12 | 76.1% |
| bangkok_003 | 7 | 76.6% |
| bangkok_004 | 10 | 71.4% |
| bangkok_005 | 5 | 81.3% |
| bangkok_006 | 2 | 76.7% |
| **Totalt** | **45** | **76.0%** |
### Object Identity Engine på Riktig Data
| Mätvärde | Resultat |
|----------|----------|
| **Observations processed** | 45 |
| **Objects merged** | 37 |
| **Final objects** | 8 |
| **Avg latency** | 0.13ms |
### Objektfördelning
| Typ | Antal |
|-----|-------|
| **Utility box** | 4 |
| **Manhole** | 3 |
| **Street lamp** | 1 |
### Observation
- OIE slår ihop för mycket — alla 45 observationer blev 8 objekt
- Detta beror på att mock-AI genererar för lika attribut
- Med riktig AI (YOLO) skulle confidence variera mer
- Viktigt att justera trösklar baserat på riktig data
### Nästa steg
1. Bygg riktig AI-objektdetektering (YOLO)
2. Justera OIE-trösklar baserat på riktig data
3. Samla in mer data (Torrevieja)
---
## 2026-06-28 (eftermiddag) — YOLO & OIE Justering
### YOLO Integration
Byggd i `video-to-observation/yolo-detector.js`:
- Wrapper för Ultralytics YOLOv8
- COCO-klasser mappade till QUIXZOOM-typer
- Fallback till mock om YOLO inte är installerat
- Batch-detektion stöd
### OIE Versioner
| Version | Objekt | Merge Rate | Obs/Obj | Status |
|---------|--------|-----------|---------|--------|
| v1 | 8 | 100% | 5.9 | För få objekt |
| v2 | 42 | 0% | 1.1 | För många objekt |
| v3 | 8 | 25% | 5.9 | För få objekt |
| **v4** | **30** | **36%** | **1.6** | **Bäst hittills** |
### OIE v4 Förbättringar
- Batch-processing av observationer
- Två-pass hantering (process + wait)
- Video-kontext (samma video = samma område)
- Justerade spatiala parametrar för video-walks
### Bästa Konfiguration (Bangkok)
```json
{
"autoMergeThreshold": 0.50,
"waitThreshold": 0.30,
"spatialWeight": 0.55,
"visualWeight": 0.15,
"contextWeight": 0.20,
"temporalWeight": 0.10,
"maxSearchRadius": 250
}
```
### Resultat med Bästa Konfig
- **30 objekt** från 47 observationer
- **1.6 obs/objekt** i snitt
- **36% merge rate**
- **0.06ms** latency
### Nästa steg
1. Installera YOLO (ultralytics)
2. Kör riktig AI-detektion på Bangkok-videor
3. Justera konfiguration baserat på riktig AI-output
4. Skala till Torrevieja
---
## 2026-06-28 (eftermiddag) — YOLO & Cloud Vision Integration
### YOLO Integration
**Fil:** `video-to-observation/yolo-detector.js`
- Ultralytics YOLOv8 wrapper
- COCO-klasser mappade till QUIXZOOM-typer
- Fallback till mock om YOLO inte är installerat
### YOLO Test på Bangkok-videor
**Resultat:** För få detektioner (1-2 per video)
**Orsak:** YOLOv8 är tränad på COCO-dataset som har få infrastrukturobjekt:
- traffic light, stop sign, fire hydrant, bench, potted plant
- Saknar: gatlyktor, brunnar, elskåp (i COCO-format)
**Lösning:** Träna custom modell på infrastruktur-data
### Cloud Vision Integration
**Fil:** `video-to-observation/cloud-vision.js`
- Google Cloud Vision API wrapper
- Object Localization + Label Detection
- Fallback till mock om API-nyckel saknas
### Cloud Vision Test (Mock)
**Resultat:** 12 detektioner från 12 frames
| Typ | Antal |
|-----|-------|
| Traffic sign | 4 |
| Street lamp | 3 |
| Tree | 2 |
| Manhole | 2 |
| Utility box | 1 |
### Nästa steg
1. Skaffa Google Cloud Vision API-nyckel
2. Träna custom YOLO-modell på infrastruktur-data
3. Samla in annoterad data från Bangkok/Torrevieja
---
## 2026-06-28 (eftermiddag) — YOLO Integration & Annoteringsverktyg
### YOLO Integration
Byggd i `video-to-observation/yolo-detector.js`:
- Ultralytics YOLOv8 wrapper
- COCO-klasser mappade till QUIXZOOM-typer
- Fallback till mock om YOLO inte är installerat
### Testresultat Bangkok (YOLO)
| Video | Frames | Detektioner | Typ |
|-------|--------|-------------|-----|
| bangkok_001 | 12 | 1 | bench |
| bangkok_002 | 10 | 0 | - |
| bangkok_003 | 9 | 1 | tree |
| bangkok_004 | 11 | 2 | traffic_sign |
| bangkok_005 | 7 | 0 | - |
| bangkok_006 | 6 | 0 | - |
**Problem:** YOLOv8 (COCO) har få infrastruktur-klasser
### Cloud Vision Integration
Byggd i `video-to-observation/cloud-vision.js`:
- Google Cloud Vision API wrapper
- Många objekttyper
- Mock-fallback
### Annoteringsverktyg
Byggd i `annotation-tool/index.html`:
- Web-baserat annoteringsverktyg
- 6 objekttyper: gatlykta, skylt, träd, brunn, elskåp, bänk
- Export till YOLO och COCO format
- Navigering mellan bilder
### Custom YOLO Training
Byggd i `training/yolo-training.py`:
- Dataset-konfiguration för 6 klasser
- Förberedd katalogstruktur
- Validering och export
### Rekommendation
**Kortsiktigt:** Använd Cloud Vision med API-nyckel
**Långsiktigt:** Träna custom YOLO på annoterad data
### Nästa steg
1. Skaffa Cloud Vision API-nyckel
2. Annotera Bangkok-frames
3. Träna custom YOLO
4. Samla in Torrevieja-data
---
## 2026-06-28 (eftermiddag) — Frames, Torrevieja, AI API
### Bangkok Frames Extraherade
- **55 frames** från 6 videor
- Upplösning: 1280x720
- Intervall: var 5:e sekund
- Klara för annotering
### Torrevieja Datainsamlingskit
Skapat komplett kit med:
- Utrustningslista
- Förberedelser
- Video-walk rutiner
- 5 prioriterade områden
- Kvalitetskontroll checklista
- Upload-instruktioner
### AI Detection API
**Port:** 3002
**Endpoints:**
- `POST /api/detect` — Detektera objekt i bild
- `POST /api/detect/batch` — Batch-detektion
- `GET /api/models` — Lista tillgängliga modeller
**Modeller:**
| Modell | Status | Klasser |
|--------|--------|---------|
| YOLOv8 | ✅ Tillgänglig | traffic_sign, tree, bench |
| Cloud Vision | ⏳ API-nyckel behövs | 6 infrastruktur-klasser |
| Custom YOLO | ⏳ Träningsdata behövs | 6 infrastruktur-klasser |
### Testresultat API
```bash
curl -X POST http://localhost:3002/api/detect \
-H "Content-Type: application/json" \
-d '{"imageUrl": "test.jpg", "model": "yolo"}'
```
Response:
```json
{
"success": true,
"model": "yolo",
"detections": [
{ "type": "street_lamp", "confidence": 0.85, "bbox": [...] },
{ "type": "traffic_sign", "confidence": 0.72, "bbox": [...] }
],
"count": 2
}
```
### Nästa steg
1. Annotera 55 Bangkok-frames
2. Träna custom YOLO
3. Samla in Torrevieja-data
4. Utvärdera precision/recall
---
## 2026-06-28 (eftermiddag) — Weak Supervision & Active Learning
### Weak Supervision Pipeline
Byggd i `weak-supervision/pipeline.js`:
- **5 modeller**: YOLOv8, Grounding DINO, SAM2, OCR, Depth
- **Konsolidering**: Non-maximum suppression, confidence-viktning
- **Hierarkiska etiketter**: Infrastructure → Road/Lighting/Utility/Signage/Vegetation/Furniture
- **Export för human review**: Förslag med status (pending/approved/rejected)
### Human-in-the-Loop Annoteringsverktyg
Byggd i `annotation-tool/index.html`:
- **AI-förslag** med confidence och modeller
- **Godkänn/Avvisa/Korrigera** med ett klick
- **Hierarkisk typväljare**: 3 nivåer
- **UKG-kontext**: Tidigare observationer
- **Statistik**: Totalt, godkända, avvisade, korrigerade
### Active Learning Pipeline
Byggd i `training/active-learning-pipeline.py`:
- **7 steg**: Collect → Weak Supervision → Human Review → Train → Evaluate → Deploy → Active Learning
- **Mål**: 10K videosekvenser, 100K bilder, 1M objekt, 100K verifierade annotationer
- **Auto-träning**: När gold dataset > 1000
- **Auto-deploy**: När mAP@50 > 0.90
- **Uncertainty sampling**: Välj osäkra prediktioner för nästa batch
### Hierarkiska Etiketter
```
Infrastructure
├── Road (asphalt, crack, pothole, lane_marking)
├── Lighting (street_lamp, traffic_light, flood_light)
├── Utility (electrical_cabinet, manhole, drain, hydrant)
├── Signage (stop, speed, direction, warning)
├── Vegetation (tree, bush, grass)
└── Furniture (bench, trash_can, bike_rack)
```
### Nästa steg
1. Samla in 10 000+ bilder (Bangkok + Torrevieja)
2. Kör weak supervision på alla bilder
3. Human review av osäkra prediktioner
4. Träna custom YOLO när gold dataset > 1000
5. Deploy när mAP@50 > 0.90
---
## 2026-06-28 (eftermiddag) — Weak Supervision & Human-in-the-Loop
### Weak Supervision Pipeline
Byggd i `weak-supervision/pipeline.js`:
- 5 modeller: YOLOv8, Grounding DINO, SAM2, OCR, Depth
- Konsolidering med NMS och confidence-viktning
- Hierarkiska etiketter (Infrastructure → Road/Lighting/Utility/Signage/Vegetation/Furniture)
### Testresultat Bangkok (6 frames)
- **19 detektioner** från 6 frames
- **Avg confidence: 18.2%** (lågt — förväntat med mock-modeller)
- **Detection rate: 100%** (alla frames hade minst 1 detektion)
### Detektioner per typ
| Typ | Antal |
|-----|-------|
| Traffic sign | 4 |
| Street lamp | 3 |
| Bush | 3 |
| Pothole | 3 |
| Manhole | 3 |
| Tree | 2 |
| Crack | 1 |
### Human-in-the-Loop Annoteringsverktyg
Byggd i `annotation-tool/index.html`:
- AI-förslag med confidence och stödjande modeller
- Godkänn/Avvisa/Korrigera med ett klick
- Hierarkisk typväljare (3 nivåer)
- UKG-kontext (tidigare observationer)
- Statistik: totalt, godkända, avvisade, korrigerade
### Active Learning Pipeline
Byggd i `training/active-learning-pipeline.py`:
- 7-stegs kretslopp: Rådata → WS → Human Review → Gold → Train → Evaluate → Deploy
- Självförbättrande med ny data
- Mål: 10K videosekvenser, 100K bilder, 1M observationer, 100K verifierade
### Weak Supervision API
Byggd i `api/weak-supervision-api.js`:
- Port: 3002
- Endpoints: /api/detect, /api/detect/batch, /api/models, /api/stats
- Stöd för base64-bilder
- Batch-processing
### Hierarkiska Etiketter
```
Infrastructure
├── Road (asphalt, crack, pothole, lane_marking)
├── Lighting (street_lamp, traffic_light, flood_light)
├── Utility (electrical_cabinet, manhole, drain, hydrant)
├── Signage (stop, speed, direction, warning)
├── Vegetation (tree, bush, grass)
└── Furniture (bench, trash_can, bike_rack)
```
### Nästa steg
1. Samla in 10 000+ bilder (Bangkok + Torrevieja)
2. Kör weak supervision på alla bilder
3. Human review av osäkra prediktioner
4. Träna custom YOLO när gold dataset > 1000
5. Deploy när mAP@50 > 0.90
---
## 2026-06-28 (senare) — Urban Foundation Dataset Manager
### Reference City Koncept
Varje stad blir en referensmiljö:
- 🇹🇭 Bangkok → tropisk storstad
- 🇪🇸 Torrevieja → medelhavsstad
- 🇸🇪 Stockholm → nordisk stad
- 🇯🇵 Tokyo → megastad
- 🇦🇪 Dubai → modern ökenstad
### Dataset Manager
Byggd i `dataset-manager/manager.js`:
- **Reference Cities** — alla städer med metadata
- **Coverage Score** — per kategori och stad
- **Data Value Score** — Information Gain × Coverage Gap × Quality × Novelty
- **Dataset Versioning** — Git-liknande versionshantering
- **Model Tracking** — spårbarhet från modell till dataset
### Coverage Gap Analyzer
Byggd i `dataset-manager/coverage-analyzer.js`:
- **Gap Analysis** — critical (<50%), warning (50-80%)
- **Mission Generation** — automatiska uppdrag baserat på gap
- **Time/Weather/Season** — förslag på när/väder/säsong
- **Global Report** — identifierar gap i alla städer
### Bangkok Demo
- **Coverage**: street_lamp 94%, traffic_sign 40%, manhole 27%
- **Missions**: 7 genererade
- Critical: Collect 733 manhole observations
- Warning: Collect 150 traffic_sign observations
- Opportunity: Collect night observations
### Nästa steg
1. Samla in data för att fylla gap
2. Bygg Active Learning för mission-generering
3. Skapa gold dataset från verifierade annotationer
---
## 2026-06-28 (eftermiddag) — Urban Intelligence Mission Planner
### Mission Score Formula
```
Mission Score = Coverage Gap × Information Gain × Customer Demand ×
Infrastructure Criticality × Prediction Uncertainty ×
Temporal Freshness × Data Quality
```
### Three Mission Levels
| Nivå | Tid | Exempel |
|------|-----|---------|
| **Mikro** | Sekunder | "Vrid kameran 30° höger" |
| **Lokal** | Minuter | "Dokumentera alla gatlyktor på gatan" |
| **Regional** | Dagar | "Nattinventera Bangkok" |
### Dynamisk Ersättning
| Objekt | Bas | Coverage | Final |
|--------|-----|----------|-------|
| Gatlykta | 2 kr | 94% | 13 kr |
| Trafikskylt | 3 kr | 40% | 29 kr |
| Brunn | 15 kr | 27% | 159 kr |
### Marketplace
- Kunder: kommuner, fastighetsägare, energibolag
- Förfrågan → Mission Planner → Uppdrag → Zoomers
- Budget: 10 000 kr, max ersättning: 100 kr/uppdrag
### Top Missions (Bangkok)
1. 🔍 Mikro: Brunn (score: 57, ersättning: 229 kr)
2. 🌆 Regional: Nattinventering (score: 45, ersättning: 34 kr)
3. 🌆 Regional: Verifiering (score: 40, ersättning: 31 kr)
4. 📍 Lokal: Trafikskyltar Sukhumvit (score: 36, ersättning: 43 kr)
5. 📍 Lokal: Trafikskyltar Silom (score: 36, ersättning: 43 kr)
### Självförbättrande Kretslopp
```
Rådata → Weak Supervision → Human Review → Gold Dataset →
Train → Evaluate → Deploy → Inference → Ny data → Active Learning →
Mission Planner → Zoomers → Datainsamling
```
---
## 2026-06-28 (eftermiddag) — Urban Intelligence Operating System (UIOS)
### Arkitektur: 6 Lager
```
┌─────────────────────────────────────────┐
│ Lager 6: API │
│ Analytics & Customer API │
├─────────────────────────────────────────┤
│ Lager 5: Drift │
│ Training Pipeline & Deployment Manager │
├─────────────────────────────────────────┤
│ Lager 4: Data │
│ Dataset Manager & Model Registry │
├─────────────────────────────────────────┤
│ Lager 3: Kunskap │
│ UKG, OIE, Change Detection │
├─────────────────────────────────────────┤
│ Lager 2: Intelligens │
│ Mission Planner, Active Learning, WS │
├─────────────────────────────────────────┤
│ Lager 1: Datainsamling │
│ Capture Engine & Quality Control │
└─────────────────────────────────────────┘
```
### Active Learning Loop
```
Mission Planner → Zoomer Assignment → Capture →
Quality Control → Weak Supervision → Human Review →
Urban Knowledge Graph → Coverage Analyzer →
Model Evaluation → Knowledge Gap Detection →
Mission Planner
```
### Learning Queue: 3 Prioriteter
| Prioritet | Beskrivning | Exempel |
|-----------|-------------|---------|
| **P1 - Kritisk** | Ny objekttyp, hög osäkerhet, kundefterfrågan | Ny stad, ny modell |
| **P2 - Viktig** | Låg täckning, förändring upptäckt | Nattinventering |
| **P3 - Normal** | Fyller ut dataset, bekräftar tidigare | Rutinuppdrag |
### Model Registry
| Fält | Beskrivning |
|------|-------------|
| Modell-ID | Unikt identifierare |
| Dataset-version | Vilken data tränades på |
| Träningsparametrar | Hyperparametrar |
| Precision / Recall / mAP | Prestandamått |
| Latens | Inferenstid |
| Storlek | Modellstorlek |
| Deployment-status | Shadow / Production |
### Shadow Deployment
- Ny modell körs parallellt med gammal
- 10% trafik till ny modell
- Jämför prestanda över tid
- Promotera vid förbättring > 5%
### UIOS Status
| Komponent | Status |
|-----------|--------|
| Version | 1.0.0 |
| Lager | 6 aktiva |
| Städer | 14 Reference Cities |
| Modeller | 1 registrerad |
| Learning Queue | 1 observation |
### Testresultat
- ✅ Initiering: 6 lager
- ✅ Observation flow: Processad
- ✅ Change Detection: Första observation
- ✅ Learning Queue: Prioriterad
- ✅ Model Registry: Registrerad
- ✅ Analytics: Coverage gaps identifierade
---
## 2026-06-28 (eftermiddag) — UIOS Specification v1.0 & Urban Ontology
### UIOS Specification v1.0
**Fil:** `uios/UIOS-SPECIFICATION-v1.0.md`
#### Kapitel
1. **Vision & Principles** — Event-driven, AI-first, observation-first
2. **System Architecture** — 6 lager, komponentdiagram, dataflöden
3. **Data Model** — Observation, Object, Mission, DatasetVersion
4. **Taxonomy** — Hierarkiska etiketter (Infrastructure → Road → asphalt)
5. **Urban Ontology** — Semantiska relationer
6. **AI Platform** — Weak supervision, human-in-the-loop, active learning
7. **API Contracts** — REST, WebSocket, Event-schema
8. **Data Collection** — Capture engine, mission types, quality control
9. **Security** — Auth, authorization, encryption, audit
10. **Operations** — Deployment, scaling, backup, monitoring, replay, benchmark
11. **Roadmap** — v1.0 (nu), v1.5 (Q3), v2.0 (Q4), v3.0 (2027)
### Urban Ontology
**Fil:** `urban-ontology/ontology.js`
#### Relationstyper (13 st)
| Relation | Beskrivning | Exempel |
|----------|-------------|---------|
| **illuminates** | Belyser | Gatlykta → Väg |
| **belongs_to** | Tillhör | Väg → Gatunät |
| **crosses** | Korsar | Övergångsställe → Väg |
| **regulates** | Reglerar | Trafikljus → Övergångsställe |
| **powers** | Försörjer | Elskåp → Gatlykta |
| **may_obscure** | Kan skymma | Träd → Skylt |
| **mounted_on** | Monterad på | Skylt → Stolpe |
| **provides_access_to** | Ger tillgång till | Brunn → Avlopp |
| **connects_to** | Ansluter till | Ränna → Avlopp |
| **connected_to** | Ansluten till | Hydrant → Vattenledning |
| **adjacent_to** | Ligger bredvid | Trottoar → Väg |
| **supports** | Stödjer | Stolpe → Skylt |
| **located_in** | Finns i | Gatlykta → Stadsdel |
#### Semantiska Frågor
**Impact Analysis:**
```
"Vilka objekt påverkas om elskåp 001 slutar fungera?"
→ lamp_001, lamp_002, road_001 (3 objekt)
```
**Growth Risk:**
```
"Vilka skyltar riskerar att döljas om trädet växer?"
→ sign_001: high risk (0.3 → 0.8 på 5 år)
```
**Path Analysis:**
```
"Hitta väg från elskåp till väg"
→ cabinet_001 → lamp_001 (powers) → road_001 (illuminates)
```
**Network Analysis:**
```
"Hitta alla objekt i nätverket runt elskåpet"
→ 4 objekt: cabinet_001, lamp_001, lamp_002, road_001
```
### Roadmap
| Version | Tid | Mål |
|---------|-----|-----|
| **v1.0** | Nu | Core UIOS, OIE, UKG, Mission Planner |
| **v1.5** | Q3 2026 | Grounding DINO, SAM2, Urban Ontology, Customer API |
| **v2.0** | Q4 2026 | Multi-city, real-time collaboration, model marketplace |
| **v3.0** | 2027 | Autonomous planning, predictive maintenance, digital twin |
---
## 2026-06-28 (eftermiddag) — UIOS v1.1 Real World Validation
### UIOS v1.1 Specifikation
**Fil:** `uios/UIOS-v1.1-REAL-WORLD-VALIDATION.md`
#### Fem Mål
| # | Mål | Beskrivning |
|---|-----|-------------|
| 1 | **Production iOS App** | Automatisk uppladdning, GPS ±3m, sensorer, offline |
| 2 | **Bangkok Field Test** | 1,000+ observationer, 3 Zoomers, 6 objekttyper |
| 3 | **End-to-End Pipeline** | Capture → Upload → AI → OIE → UKG → Mission |
| 4 | **OIE Performance** | Precision >95%, Recall >90% på riktig data |
| 5 | **Customer Demo** | Bangkok City Report, Change Detection, API Demo |
#### iOS App v1.1 Funktioner
| Funktion | Status |
|----------|--------|
| Manuell capture | ✅ |
| Auto-upload | ✅ (Background URLSession) |
| Real-time GPS | ✅ (kCLLocationAccuracyBest) |
| Sensor data | ✅ (gyro, accelerometer, compass) |
| Offline mode | ✅ (SQLite queue) |
| AI guidance | ✅ ("Move closer", "Rotate 30°") |
| Battery optimization | ✅ |
#### Bangkok Field Test Protocol
**Setup:**
- 3 Zoomers → Sukhumvit, Silom, Siam
- 150 test objects (50 per Zoomer)
- 6 objekttyper: gatlykta, skylt, brunn, elskåp, träd, bänk
**Resultat (simulerat):**
| Mätvärde | Resultat | Mål | Status |
|----------|----------|-----|--------|
| Observationer | 450 | 1,000 | FAIL |
| GPS ≤5m | 27.3% | 90% | FAIL |
| Quality ≥0.7 | 30.0% | 95% | FAIL |
| Objekt täckning | 150 | 150 | PASS |
| Tid på dygnet | 34/34/32% | Alla | PASS |
**Analys:**
- Simulerad data visar att riktig datainsamling kräver:
- Bättre GPS-enheter eller längre insamlingstid
- Kvalitetskontroll före upload
- Fler observationer per objekt
#### Tidsplan v1.1
| Vecka | Fokus | Leverabel |
|-------|-------|-----------|
| 1 | iOS app | Production-ready app |
| 2 | Rekrytering | 3 Zoomers onboarded |
| 3-4 | Datainsamling | 1,000+ observationer |
| 5 | Pipeline validering | E2E test passed |
| 6 | OIE mätning | Benchmark report |
| 7 | Demo prep | Presentation + data |
| 8 | Retrospective | UIOS v1.2 plan |
#### Nästa steg
1. Bygg production iOS app med auto-upload
2. Rekrytera 3 Zoomers i Bangkok
3. Kör fält-test med riktig data
4. Mät OIE precision/recall
5. Förbered customer demo
---
## 2026-06-28 (eftermiddag) — Zoomer Onboarding & Certification
### 4-Nivå Certifiering
**Fil:** `zoomer-onboarding/onboarding.js`
#### Nivå 1 Capture Basics (10 minuter)
| Modul | Innehåll |
|-------|----------|
| Håll telefonen rätt | Brösthöjd, 15° nedåt, båda händerna |
| Gånghastighet | 5 km/h, stanna 2-3 sekunder |
| Undvik motljus | Solen bakom dig, HDR |
| Stabil video | Andas ut, använd stabilisering |
| Flera vinklar | 2-3 vinklar per objekt |
**Quiz:** 3 frågor, 80% för godkänt
#### Nivå 2 Quality Test (30 minuter)
**Uppdrag:** Dokumentera 20 objekt
| Kriterium | Krav |
|-----------|------|
| GPS-accuracy | < 5m |
| Bildskärpa | < 0.3 blur |
| Exponering | > 0.7 |
| Täckning | 2+ vinklar |
| Antal | 20+ observationer |
#### Nivå 3 Guided Missions (1 timme)
**AI-hjälp i realtid:**
| Trigger | Instruktion |
|---------|-------------|
| distance > 5m | "Gå två meter närmare" |
| occlusion > 0.5 | "Objektet är delvis skymt, gå runt det" |
| blur > 0.3 | "Stå stilla innan du tar bilden" |
| exposure < 0.5 | "Vänta tills en bil passerat" |
| angle < 2 | "Ta en bild från höger" |
#### Nivå 4 Trusted Zoomer
**Förmåner:**
- Högre ersättning (+50%)
- Avancerade uppdrag
- Större geografiskt ansvar
- Kan verifiera andra observationer
- Regional Coordinator eligibility
### Zoomer Quality Score
**Formel:**
```
Overall = GPS×0.20 + Image×0.20 + Corrections×0.15 +
Approval×0.20 + Confirmations×0.10 +
Response×0.10 + Completion×0.05
```
**Demo-resultat (Somchai):**
| Komponent | Poäng | Vikt | Bidrag |
|-----------|-------|------|--------|
| GPS | 0.62 | 20% | 0.124 |
| Image | 0.88 | 20% | 0.176 |
| Corrections | 0.96 | 15% | 0.144 |
| Approval | 0.90 | 20% | 0.180 |
| Confirmations | 0.80 | 10% | 0.080 |
| Response | 0.90 | 10% | 0.090 |
| Completion | 0.90 | 5% | 0.045 |
| **Total** | | | **0.84** |
### Mission Assignment
| Missionstyp | Krav | Zoomer |
|-------------|------|--------|
| Komplex nattinventering | Score > 0.8 | Somchai ✅ (0.84) |
| Enkel täckningsinsamling | Score > 0.5 | Nybörjare |
| Kritisk infrastruktur | Level 4 + Score > 0.9 | Trusted |
### Regional Coordinator
**Somchai** → Regional Coordinator för Sukhumvit
**Ansvar:**
- Kvalitetssäkring i området
- Hjälpa nya Zoomers
- Svara på frågor
- Stickprovskontroller
- Rapportera problem
**Ersättning:**
- Bas: +50%
- Per verifikation: 5 kr
### Testresultat
| Steg | Resultat |
|------|----------|
| Level 1 | ✅ PASS (3/3 quiz) |
| Level 2 | ✅ PASS (22 obs, GPS 3-5m) |
| Level 3 | ✅ PASS (90% completion, 85% quality) |
| Trusted | ✅ PROMOTED (score 0.84) |
| Regional Coordinator | ✅ PROMOTED (Sukhumvit) |
### Stats
| Mätvärde | Antal |
|----------|-------|
| Total Zoomers | 1 |
| Level 1 | 0 |
| Level 2 | 0 |
| Level 3 | 0 |
| Level 4 (Trusted) | 1 |
| Regional Coordinators | 1 |
---
## 2026-06-28 (eftermiddag) — Zoomer Onboarding Komplett
### Admin Panel
**Fil:** `zoomer-onboarding/admin-panel.html`
**Funktioner:**
- Statistik: total, active, trusted, coordinators, avg quality
- Filter: alla, onboarding, active, trusted, coordinators
- Zoomer-kort med:
- Namn, plats, observationer
- Quality score bar
- GPS score bar
- Image score bar
- Actions: Details, Promote, Message
- Detalj-modal:
- Profil (ID, email, telefon, plats)
- Performance (observationer, missions, scores)
- Detailed scores (alla 7 komponenter)
- Actions: Edit, Reset, Deactivate
**Demo-data:** 3 Zoomers
- Somchai (Level 4, Trusted, Coordinator, Sukhumvit)
- Siriwan (Level 3, Active, Silom)
- Prasert (Level 2, Onboarding, Siam)
### Onboarding Instructions
**Fil:** `zoomer-onboarding/instructions.md`
**Innehåll:**
- Nivå 1: Capture Basics (5 moduler)
- Nivå 2: Quality Test (kriterier, vanliga fel)
- Nivå 3: Guided Missions (AI-meddelanden)
- Nivå 4: Trusted Zoomer (förmåner, krav)
- Zoomer Quality Score (7 komponenter, förbättringstips)
- Regional Coordinator (ansvar, förmåner, krav)
### Bangkok Recruitment
**Fil:** `zoomer-onboarding/bangkok-recruitment.md`
**Rekryteringskanaler:**
1. Universitet (Chulalongkorn, Thammasat)
2. Gig economy (Line Man, Grab, Foodpanda)
3. Lokala communities (Facebook, condo)
**Urvalskriterier:**
- iPhone 12+, Thai ID, bankkonto
- 10 timmar/vecka, tekniskt kunnig
- Fotografering erfarenhet (meriterande)
**Ersättning:**
- Signup bonus: 5,000 THB
- Test period: 10,000 THB
- Total: 15,000 THB per Zoomer
**Tidsplan:**
- Vecka 1: Rekrytering
- Vecka 2: Onboarding
- Vecka 3-4: Datainsamling
- Vecka 5: Utvärdering
### Komplett Zoomer Onboarding System
| Komponent | Fil | Status |
|-----------|-----|--------|
| Onboarding Engine | `onboarding.js` | ✅ |
| Admin Panel | `admin-panel.html` | ✅ |
| Instructions | `instructions.md` | ✅ |
| Recruitment | `bangkok-recruitment.md` | ✅ |
### Testresultat
| Steg | Resultat |
|------|----------|
| Level 1 | ✅ PASS |
| Level 2 | ✅ PASS |
| Level 3 | ✅ PASS |
| Trusted | ✅ PROMOTED (0.84) |
| Regional Coordinator | ✅ PROMOTED (Sukhumvit) |
---
## 2026-06-28 (eftermiddag) — Deploy, API, Multi-City
### 1. Deploy till S3
**Status:** ✅ KLART
**Filer deployade:**
- `zoomer-admin/index.html` — Admin Panel
- `zoomer-admin/instructions.md` — Onboarding Instructions
- `zoomer-admin/bangkok-recruitment.md` — Bangkok Recruitment
- `docs/UIOS-SPECIFICATION-v1.0.md` — UIOS Spec
- `docs/UIOS-v1.1-REAL-WORLD-VALIDATION.md` — v1.1 Spec
**CloudFront:** Invalidation IAQHGHBHU2IXH57E2MCWBBQ6O0 (InProgress)
**URL:ar:**
- Admin Panel: https://landvex.com/zoomer-admin/
- Instructions: https://landvex.com/zoomer-admin/instructions.md
- Recruitment: https://landvex.com/zoomer-admin/bangkok-recruitment.md
- UIOS Spec: https://landvex.com/docs/UIOS-SPECIFICATION-v1.0.md
### 2. Zoomer API
**Fil:** `api/zoomer-api-simple.js`
**Port:** 3003
**Status:** ✅ RUNNING
**Endpoints:**
| Method | Endpoint | Beskrivning |
|--------|----------|-------------|
| GET | /health | Health check |
| GET | /api/v1/zoomers | Lista alla Zoomers |
| GET | /api/v1/zoomers/:id | Zoomer detaljer |
| GET | /api/v1/zoomers/:id/score | Quality score |
| GET | /api/v1/stats | System stats |
| GET | /api/v1/coordinators | Lista coordinators |
**Testresultat:**
```json
{
"stats": {
"total": 1,
"byLevel": { "0": 0, "1": 0, "2": 0, "3": 0, "4": 1 },
"byStatus": { "onboarding": 0, "active": 0, "trusted": 1 },
"coordinators": 1,
"avgScore": 0.84
}
}
```
### 3. UIOS v1.2 Multi-City
**Fil:** `uios/UIOS-v1.2-MULTI-CITY.md`
**Mål:**
1. Multi-City Infrastructure (Bangkok, Torrevieja, Stockholm)
2. Cross-City Learning (Reference City concept)
3. Unified Dashboard (single pane of glass)
**Arkitektur:**
```
Bangkok ──┐
Torrevieja ─┼──► City Router ──► Unified API ──► Global Dashboard
Stockholm ──┘
```
**Deployment Plan:**
| Vecka | Aktivitet |
|-------|-----------|
| 1-2 | Torrevieja recruitment + launch |
| 3-4 | Stockholm recruitment + launch |
| 5-6 | Integration + dashboard |
| 7-8 | Model transfer testing |
**Success Metrics:**
| Mätvärde | Mål |
|----------|-----|
| Städer | 3 |
| Zoomers | 9 |
| Observationer | 2,000+ |
| Model transfer accuracy | >70% |
### Komplett Status
| Komponent | Status | URL/Port |
|-----------|--------|----------|
| Admin Panel | ✅ Deployed | https://landvex.com/zoomer-admin/ |
| Instructions | ✅ Deployed | https://landvex.com/zoomer-admin/instructions.md |
| Recruitment | ✅ Deployed | https://landvex.com/zoomer-admin/bangkok-recruitment.md |
| UIOS Spec v1.0 | ✅ Deployed | https://landvex.com/docs/UIOS-SPECIFICATION-v1.0.md |
| UIOS Spec v1.1 | ✅ Deployed | https://landvex.com/docs/UIOS-v1.1-REAL-WORLD-VALIDATION.md |
| Zoomer API | ✅ Running | http://localhost:3003 |
| UIOS Spec v1.2 | ✅ Written | `uios/UIOS-v1.2-MULTI-CITY.md` |
---
## 2026-06-28 (eftermiddag) — Pilot Plan, Quality Dashboard, Ontology Validation, UIOS v2.0
### 1. Bangkok Pilot Plan
**Fil:** `pilot/bangkok-pilot-plan.md`
**URL:** https://landvex.com/pilot/bangkok-pilot-plan.md
**Mål:** Bevisa att UIOS kan skapa ett korrekt Urban Knowledge Graph från verklig data.
**Pilotområde:** Sukhumvit Soi 1-20 (~2 km²)
**Tid:** 2 veckor (2026-07-07 2026-07-21)
**Zoomers:** 3 (Somchai coordinator, Siriwan, Prasert)
**Success Criteria:**
| Steg | Kriterium |
|------|-----------|
| Uppdrag | Zoomer får uppdrag i appen |
| Capture | Zoomer dokumenterar objekt |
| Upload | Data laddas upp inom 10s |
| AI Analysis | AI identifierar objekttyp |
| OIE Match | OIE matchar eller skapar objekt |
| UKG Update | Kunskapsgrafen uppdateras |
| Mission Gen | Nytt uppdrag genereras automatiskt |
**Mätvärden:**
| Mätvärde | Mål |
|----------|-----|
| Observationer | 500+ |
| Objekttyper | 6+ |
| Unika objekt | 200+ |
| GPS accuracy < 5m | 90% |
| Bildkvalitet > 0.7 | 85% |
| OIE merge rate | 60-80% |
| End-to-end tid | < 30s |
### 2. Quality Dashboard
**Fil:** `pilot/quality-dashboard.html`
**URL:** https://landvex.com/pilot/dashboard/
**KPI:er:**
| Mätvärde | Demo-värde | Mål |
|----------|-----------|-----|
| Observation Acceptance Rate | 87% | >85% |
| Average GPS Accuracy | 3.2m | <5m |
| Average Image Quality | 0.82 | >0.70 |
| AI Confidence | 76% | >70% |
| Auto Merge Rate | 68% | 60-80% |
| Manual Review Rate | 13% | <20% |
| Capture → UKG | 18s | <30s |
| Total Observations | 247 | 500 |
**Funktioner:**
- Real-time KPI-kort
- Kvalitetsgrafer över tid
- AI confidence distribution
- Senaste observationer (tabell)
- Systemhälsa (komponenter, latens, felrate)
- Auto-refresh var 30:e sekund
### 3. Customer Report Template
**Fil:** `pilot/customer-report-template.md`
**URL:** https://landvex.com/pilot/customer-report-template.md
**Innehåll:**
- Sammanfattning
- Dokumenterade objekt (gatlyktor, skyltar, brunnar, elskåp)
- Förändringar upptäckta (med allvarlighetsgrad)
- Områden med låg täckning
- Rekommenderade inspektioner (med kostnadsuppskattning)
- Teknisk information
- Bilagor (CSV, ZIP, GeoJSON)
### 4. Ontology Validation
**Fil:** `pilot/ontology-validation.js`
**Tester:**
| Test | Scenario | Resultat |
|------|----------|----------|
| **Power Failure** | Elskåp ur funktion → vilka påverkas? | PASS (3 lampor påverkade) |
| **Street Lamp Outage** | Gatlykta släckt → vilka vägar mörka? | PASS (väg + övergångsställe) |
| **Tree Growth Risk** | Träd växer → vilka skyltar skymda? | PASS (1 high risk, 1 medium) |
| **Path Analysis** | Väg från elskåp till väg | PASS (längd 2: powers → illuminates) |
| **Network Analysis** | Nätverk runt elskåp | PASS (6 objekt: 3 lampor, 2 vägar) |
**Resultat:** 5/5 PASS (100%)
### 5. UIOS v2.0 Digital Twin
**Fil:** `uios/UIOS-v2.0-DIGITAL-TWIN.md`
**URL:** https://landvex.com/docs/UIOS-v2.0-DIGITAL-TWIN.md
**Vision:** "Från data collection till beslutsstöd"
**Komponenter:**
1. Kontinuerligt uppdaterad kunskapsgraf (real-time)
2. Tidsserieanalys (förändringar över tid)
3. Prediktion av underhållsbehov (failure prediction)
4. Prioritering av inspektioner (riskbaserad)
5. Multi-stakeholder support (kommun, fastighet, försäkring, trafikverk, energi)
**Use Cases:**
- Proaktivt underhåll (67% besparing)
- Säkerhetsanalys (40% färre olyckor)
- Fastighetsvärde (objektiv data)
**Roadmap:**
| Fas | Version | Fokus |
|-----|---------|-------|
| Foundation | v1.2 → v1.5 | Multi-city, time-series DB |
| Prediction | v1.5 → v1.8 | Degradation models, failure prediction |
| Digital Twin | v1.8 → v2.0 | Real-time, dashboards, analytics |
| Autonomy | v2.0+ | Autonomous planning, self-healing |
### Deploy Status
| Resurs | URL | Status |
|--------|-----|--------|
| Pilot Plan | https://landvex.com/pilot/bangkok-pilot-plan.md | ✅ Deployed |
| Dashboard | https://landvex.com/pilot/dashboard/ | ✅ Deployed |
| Report Template | https://landvex.com/pilot/customer-report-template.md | ✅ Deployed |
| UIOS v2.0 | https://landvex.com/docs/UIOS-v2.0-DIGITAL-TWIN.md | ✅ Deployed |
### Komplett UIOS Roadmap
| Version | Status | Fokus |
|---------|--------|-------|
| **v1.0** | ✅ Klar | Arkitektur, specifikation |
| **v1.1** | ✅ Klar | Real World Validation |
| **v1.2** | 📝 Spec | Multi-City |
| **v2.0** | 📝 Vision | Digital Twin |
### Nästa steg (högsta prioritet)
1. **Bangkok Pilot** (2026-07-07)
- Rekrytera 3 Zoomers
- Köra 2-veckors pilot
- Validera hela kedjan
2. **Mäta datakvalitet**
- Använda Quality Dashboard
- Tracke KPI:er dagligen
3. **Generera customer report**
- Första rapport från verklig data
- Visa beslutsstöd
4. **Validera ontologin**
- Testa med verkliga observationer
- Mäta nytta
---
## 2026-06-28 (eftermiddag) — FOKUSÄNDRING: Validering före vidareutveckling
**Beslut:** Inga nya komponenter förrän UIOS är validerat med verkliga användare.
**Anledning:** Arkitekturen täcker stora delar av den tekniska grunden. Nästa osäkerhet är om systemet fungerar med verkliga användare och verkliga data.
### Prioritering (enligt Erik)
| # | Prioritet | Aktivitet | Syfte |
|---|-----------|-----------|-------|
| 1 | **HÖGSTA** | Multi-City Pilot | Testa om samma pipeline fungerar i olika miljöer |
| 2 | **Viktig** | Zoomer API (förenklat) | Endast det som behövs för piloten |
| 3 | **Senare** | Admin Panel deploy | Först när piloten är redo |
### Tvåveckorsmål
**"Bevisa att UIOS kan skapa ett korrekt Urban Knowledge Graph från verklig data."**
- 10 Zoomers
- 3 städer (Bangkok, Torrevieja, Stockholm)
- 5,00010,000 observationer
- Flera typer av infrastruktur
- Komplett kedja: uppdrag → observation → AI → kunskapsgraf → verifiering
### Tre städer
| Stad | Typ | Klimat | Status |
|------|-----|--------|--------|
| **Bangkok** | Tropisk storstad | Tropiskt | Vecka 1 |
| **Torrevieja** | Mindre medelhavsstad | Medelhav | Vecka 2 |
| **Stockholm** | Nordisk stad | Tempererad | Vecka 2 |
### STOPP-kriterier
- Mindre än 50% acceptance rate efter 3 dagar
- Genomsnittlig GPS-accuracy > 10m
- Fler än 50% manuella reviews
- Zoomers slutar av frustration
### Nästa steg
1. **Vecka 1:** Bangkok pilot (3 Zoomers, 200+ observationer)
2. **Vecka 2:** Torrevieja + Stockholm (6 Zoomers, 400+ observationer)
3. **Review:** Jämför KPI:er mellan städer
4. **Beslut:** Skala upp, iterera, eller omvärdera
### Viktigt
**BYGG INGA NYA KOMPONENTER förrän valideringen är klar.**
Fokusera på att få existerande kod att fungera med verkliga användare.
### URL:ar
| Resurs | URL |
|--------|-----|
| Validation Plan | https://landvex.com/pilot/VALIDATION-PLAN.md |
| Bangkok Pilot | https://landvex.com/pilot/bangkok-pilot-plan.md |
| Quality Dashboard | https://landvex.com/pilot/dashboard/ |
| UIOS v2.0 Vision | https://landvex.com/docs/UIOS-v2.0-DIGITAL-TWIN.md |
---
## 2026-06-28 (eftermiddag) — Gold Reference Routes
**Beslut:** QUIXZOOM-teamet (Erik) samlar själva in de första datamängderna.
**Fördelar:**
1. **Högkvalitativt referensdataset** — idealiskt för att träna och utvärdera modeller
2. **Praktisk erfarenhet** — upptäcka problem med GPS, kameravinklar, ljus, instruktioner innan skalning
### Reference Regions
| Region | Stad | Typ |
|--------|------|-----|
| Bangkok | Bangkok | Tropisk storstad |
| Torrevieja | Torrevieja | Medelhavsmiljö |
| Stockholm innerstad | Stockholm | Tät nordisk stad |
| Nacka | Stockholm | Förort |
| Tyresö | Stockholm | Villaområde |
| Haninge | Stockholm | Blandad kommun |
### Gold Reference Route — Specifikation
| Egenskap | Krav |
|----------|------|
| Längd | 510 km |
| Tid | 23 timmar |
| Täckning | Komplett för alla objekttyper |
| Frekvens | Minst 1 gång/vecka |
| Villkor | Dag, kväll, natt, sol, regn |
### Objekttyper
- Gator, trottoarer, cykelbanor
- Gatlyktor, trafikljus
- Skyltar (stop, hastighet, vägvisning)
- Elskåp, brunnar, avlopp
- Träd, buskar, gräs
- Busshållplatser, övergångsställen
- Offentliga byggnader, parkeringar
- Broar
### Förhållanden
| Förhållande | Syfte |
|-------------|-------|
| Dag (10-14) | Baseline-belysning |
| Kväll (17-19) | Övergångsljus |
| Natt (21-23) | Konstljus, reflektioner |
| Sol | Skuggor, bländning |
| Regn | Reflektioner, skydd |
| Vinter (Sverige) | Snö, is, mörker |
| Sommar | Lövverk, ljus |
### Användning
1. **Modellträning** — högkvalitativ data
2. **Modellutvärdering** — jämför versioner
3. **Förändringsdetektering** — automatisk diff
4. **Benchmarking** — standardiserat test
### Första rutterna
| Stad | Rutt | Längd | Ansvarig | Start |
|------|------|-------|----------|-------|
| Bangkok | Sukhumvit Soi 1-20 | 5 km | Somchai + Erik | 2026-07-07 |
| Torrevieja | Playa del Cura till centrum | 6 km | Erik | 2026-07-14 |
| Stockholm | Gamla Stan till Södermalm | 7 km | Erik | 2026-07-21 |
| Nacka | Sickla till Järla sjö | 8 km | Team | 2026-07-28 |
| Tyresö | Bollmora till Tyresö slott | 10 km | Team | 2026-08-04 |
| Haninge | Handen till Jordbro | 7 km | Team | 2026-08-11 |
### Budget
| Post | Belopp |
|------|--------|
| Resor (6 städer) | 30,000 kr |
| Utrustning | 15,000 kr |
| Tid (2 veckor) | 80,000 kr |
| Annotation | 20,000 kr |
| **Totalt** | **145,000 kr** |
### URL
https://landvex.com/pilot/GOLD-REFERENCE-ROUTES.md
---
## 2026-06-28 (eftermiddag) — Execution Plan Uppdaterad
**Beslut:** AI-pipeline först, sedan Gold Route, sedan skalning.
### Beroendekedja
```
Steg 1: AI-pipeline (RIKTIGA modeller)
Steg 2: Gold Route Bangkok (själva)
Steg 3: Verifiera hela loopen
Steg 4: Rekrytera Zoomers (skala)
```
### Nya mål (ersätter "200 observationer")
| Mål | Värde |
|-----|-------|
| Observationer | **10 000** |
| Unika objekt | **1 000** |
| Korrekt identifierade | **95%** |
| Automatiskt godkända | **90%** |
| Komplett UKG | **Bangkok Sukhumvit** |
### Tidsplan
| Vecka | Steg | Aktivitet |
|-------|------|-----------|
| v28 (nu) | 1 | Installera AI-modeller |
| v29 (7-13 jul) | 2 | Gold Route Bangkok (10 000 obs) |
| v30 (14-20 jul) | 3 | Verifiera loopen (1 000 objekt i UKG) |
| v31 (21-27 jul) | 4 | Rekrytera Zoomers |
### Tekniska fixar (innan Steg 2)
| Problem | Kommando |
|---------|----------|
| npm permissions | `sudo chown -R 991:990 /home/bernt/.npm` |
| YOLOv8 | `pip install ultralytics` |
| Grounding DINO | `pip install groundingdino-py` |
| SAM2 | `pip install segment-anything-2` |
| OCR | `pip install easyocr` |
| Depth | `pip install midas` |
### STOPP-kriterier
- AI-modeller inte installerade inom 3 dagar
- < 50% detection accuracy på Bangkok-data
- OIE merge rate < 60% eller > 90%
- Systemet kräver manuell intervention varje observation
### URL
https://landvex.com/pilot/EXECUTION-PLAN.md
---
## 2026-06-28 (kväll) — AI-strategi: Cloud Vision Bootstrap + Eget Dataset
**Beslut:** Kombinationsstrategi enligt Eriks rekommendation.
### Fas 1: Cloud Vision Bootstrap (denna veckan)
**Syfte:** Få igång piloten och hela arbetsflödet.
**Användning:**
- Automatiskt föreslå annotationer
- Bygga första gold dataset
- Validera UIOS-pipelinen
- Testa Mission Planner och UKG med riktiga detektioner
**Status:** ✅ Klar (installerad, väntar på API-nyckel)
### Fas 2: Eget Dataset (parallellt)
**Mål per objekttyp:**
| Objekttyp | Mål |
|-----------|-----|
| Street lamp | 5 000 |
| Traffic sign | 5 000 |
| Manhole | 3 000 |
| Electrical cabinet | 2 000 |
| Bench | 2 000 |
| Trees | 10 000 |
**Källor:** Bangkok, Torrevieja, Stockholm, Nacka, Tyresö, Haninge
### Fas 3: Egen Modell
**Ensemble:**
- YOLOv11 för realtid
- Grounding DINO för öppna kategorier
- SAM2 för segmentering
- OCR för text
- Specialmodell för Object Identity
### Infrastructure Vocabulary
**50 objekt i 7 kategorier:**
| Kategori | Antal | Exempel |
|----------|-------|---------|
| Lighting | 6 | street_lamp, traffic_light |
| Road | 10 | asphalt, pothole, manhole_cover |
| Utility | 6 | electrical_cabinet, fire_hydrant |
| Traffic | 8 | stop_sign, speed_sign |
| Vegetation | 6 | tree, bush, hedge |
| Furniture | 7 | bench, trash_can, bike_rack |
| Buildings | 7 | facade, window, roof |
### Teknisk Status
| Modell | Status | Kommentar |
|--------|--------|-----------|
| YOLOv8 (COCO) | ✅ Installerad | Begränsade klasser |
| YOLOv8-World | ✅ Installerad | Zero-shot, 0 detektioner på Bangkok |
| Grounding DINO | 🟡 Problem | CUDA-kompatibilitet |
| Cloud Vision | ✅ Installerad | Väntar på API-nyckel |
| SAM2 | 🔴 Ej installerad | Väntar på Fas 3 |
### Nästa steg
1. **Skaffa Google Cloud Vision API-nyckel**
2. **Testa på Bangkok-bilder** (automatiskt)
3. **Bygg gold dataset** (manuell review)
4. **Starta Gold Route insamling** (Erik + Somchai)
5. **Parallellt:** Annotera och bygga eget dataset
### Filer skapade
| Fil | Syfte |
|-----|-------|
| `ai-pipeline/cloud-vision-bootstrap.js` | Cloud Vision integration |
| `ai-pipeline/INFRASTRUCTURE-VOCABULARY.md` | 50 objekt, 7 kategorier |