Files
boc/memory/2026-06-28.md
T

1715 lines
51 KiB
Markdown
Raw Normal View History

# 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 |