05ed037fe8
- DNS: pilot.landvex.com -> 16.170.83.169 - TLS: Let's Encrypt certificate (expires 2026-09-30) - Nginx: reverse proxy with SSL termination - API: https://pilot.landvex.com/api/v1/missions - UI: https://pilot.landvex.com/ - Upload: POST /api/v1/missions/import (multipart/form-data) Verified: ✅ https://pilot.landvex.com/health ✅ https://pilot.landvex.com/version ✅ https://pilot.landvex.com/api/v1/missions (list) ✅ https://pilot.landvex.com/api/v1/missions/:id (get) ✅ POST /api/v1/missions/import (video upload) ✅ UI loads with title 'LandveX Intelligence Lab' Next: Pilot 001 — Break the system!
330 lines
9.2 KiB
Markdown
330 lines
9.2 KiB
Markdown
|
|
## 2026-06-29 (natt) — AI-arkitektur: Cloud Vision + Eget Dataset + Ensemble
|
|
|
|
**Beslut:** Kombinationsstrategi enligt Eriks rekommendation.
|
|
|
|
### Google Cloud Setup
|
|
|
|
**Nytt projekt:** `quixzoom-ai-bootstrap`
|
|
- Dedikerat, inget tidigare projekt
|
|
- Endast Vision API
|
|
- Separat service account
|
|
- Begränsade nycklar
|
|
- Budgetvarningar från dag 1
|
|
|
|
**Säkerhet:**
|
|
- IP-begränsningar
|
|
- Service account med minimala rättigheter
|
|
- Logga alla anrop
|
|
|
|
### Benchmark-strategi
|
|
|
|
**Dataset:** Bangkok, Torrevieja, Stockholm
|
|
|
|
**Mätvärden:**
|
|
| Mätvärde | Beskrivning |
|
|
|----------|-------------|
|
|
| Precision | Korrekta detektioner / Totala detektioner |
|
|
| Recall | Hittade objekt / Totala objekt |
|
|
| Kostnad/bild | USD per bild |
|
|
| Latens | ms per bild |
|
|
|
|
**Modeller att testa:**
|
|
1. Cloud Vision
|
|
2. YOLOv8
|
|
3. Grounding DINO (när fixad)
|
|
4. Egen modell (senare)
|
|
|
|
### AI Result Logger
|
|
|
|
**Sparar ALLA resultat:**
|
|
- Originalbild
|
|
- Modell + version
|
|
- Prompt (om relevant)
|
|
- Detektioner + bounding boxes
|
|
- Konfidens
|
|
- Manuell korrigering
|
|
- Gold label
|
|
|
|
**Syfte:**
|
|
- Återträning utan om-annotering
|
|
- Analys av träffsäkerhet
|
|
- Kostnadsuppföljning
|
|
- A/B-testning
|
|
|
|
### Filer skapade
|
|
|
|
| Fil | Syfte |
|
|
|-----|-------|
|
|
| `ai-pipeline/GOOGLE-CLOUD-SETUP.md` | Instruktioner för GC-projekt |
|
|
| `ai-pipeline/ai-benchmark-suite.js` | Benchmark-verktyg |
|
|
| `ai-pipeline/ai-result-logger.js` | Logga alla AI-resultat |
|
|
| `ai-pipeline/AI-ARCHITECTURE.md` | Övergripande arkitektur |
|
|
|
|
### Nästa steg
|
|
|
|
1. Skapa Google Cloud-projekt
|
|
2. Skaffa API-nyckel
|
|
3. Kör benchmark på Bangkok
|
|
4. Bygg gold dataset
|
|
5. Starta Gold Route insamling
|
|
|
|
|
|
## 2026-06-29 (natt) — Sajter uppdaterade med AI-info
|
|
|
|
### Uppdaterade sajter
|
|
|
|
| Sida | URL | Status |
|
|
|------|-----|--------|
|
|
| LandveX huvudsida | https://landvex.com/ | ✅ Uppdaterad |
|
|
| LandveX AI | https://landvex.com/landvex-ai.html | ✅ Ny |
|
|
| QUIXZOOM AI | https://landvex.com/quixzoom-ai.html | ✅ Ny |
|
|
| Pilot docs | https://landvex.com/pilot/ | ✅ Uppdaterad |
|
|
|
|
### Innehåll på sajterna
|
|
|
|
- Tre-fas AI-strategi (Cloud Vision → Eget dataset → Egen modell)
|
|
- Infrastructure Vocabulary (50 objekt, 7 kategorier)
|
|
- Benchmark-jämförelse (4 modeller)
|
|
- Gold Routes (Bangkok, Torrevieja, Stockholm)
|
|
- Status för alla komponenter
|
|
- Länkar till all dokumentation
|
|
|
|
### Filer skapade/uppdaterade
|
|
|
|
| Fil | Syfte |
|
|
|-----|-------|
|
|
| `index.html` | Huvudsida med AI-info |
|
|
| `landvex-ai.html` | LandveX AI-sida |
|
|
| `quixzoom-ai.html` | QUIXZOOM AI-sida |
|
|
|
|
### Nästa steg
|
|
|
|
1. Erik skapar Google Cloud-projekt + API-nyckel
|
|
2. Ladda upp nyckel till server
|
|
3. Kör benchmark på Bangkok-bilder
|
|
4. Uppdatera sajter med benchmark-resultat
|
|
|
|
|
|
|
|
## 2026-06-29 (morgon) — aamos-ledger Rust + LandveX AB UI
|
|
|
|
### Status: LandveX AB fullt importerat i aamos-ledger
|
|
|
|
**Konton:** 23 st (alla BAS-konton från SIE4-filen)
|
|
- Tillgångar: 1221, 1227, 1930
|
|
- Eget kapital: 2090
|
|
- Skulder: 2510, 2611, 2990
|
|
- Intäkter: 3000, 3010, 3020, 3900
|
|
- Kostnader: 5420, 5460, 5612, 5614, 5810, 5820, 5900, 6071, 6540, 6550, 7630, 8910
|
|
|
|
**Verifikat:** 23 st (inklusive IB20260101)
|
|
- Ingående balans per 2026-01-01
|
|
- 22 verifikat från 2026-02-04 till 2026-04-30
|
|
|
|
**Trial balance:** Balanserad (D=K)
|
|
|
|
### Nytt iOS-native UI skapat
|
|
|
|
**URL:** https://bernt.wavult.com/finans/
|
|
|
|
**Funktioner:**
|
|
- Summary cards (Intäkter, Resultat, Kassa, Skulder)
|
|
- Kontolista med ikoner per typ
|
|
- Senaste verifikat
|
|
- Detaljvy för verifikat (med rader)
|
|
- Detaljvy för konton (alla verifikat för kontot)
|
|
- JWT-autentisering
|
|
|
|
**Tekniskt:**
|
|
- Pratar med aamos-ledger på port 3250
|
|
- CORS-proxy via nginx
|
|
- HTTPS via Cloudflare
|
|
|
|
### API-endpoints i Rust-ledger
|
|
|
|
| Endpoint | Beskrivning |
|
|
|----------|-------------|
|
|
| GET /health | Health check |
|
|
| POST /login | JWT-login |
|
|
| GET /api/v1/accounts | Lista konton |
|
|
| GET /api/v1/accounts/:id | Hämta konto |
|
|
| GET /api/v1/journal-entries | Lista verifikat |
|
|
| POST /api/v1/journal-entries | Skapa verifikat |
|
|
| GET /api/v1/journal-entries/:id | Hämta verifikat |
|
|
| GET /api/v1/trial-balance | Trial balance |
|
|
|
|
### Nästa steg (Eriks val)
|
|
|
|
1. Starkare autentisering (inte admin/password)
|
|
2. Fler vyer (balansräkning, resultaträkning)
|
|
3. SIE4-export
|
|
4. Nya verifikat (formulär)
|
|
5. Egen subdomän (finans.landvex.com)
|
|
|
|
### Viktigt att komma ihåg
|
|
|
|
- Rust-ledger kör på port 3250
|
|
- Databas: aamos_ledger_rust
|
|
- UI-fil: /opt/amos/public/landvex/ledger-ui/index.html
|
|
- Nginx-config: /etc/nginx/conf.d/landvex.conf
|
|
- Inloggning: admin / password (MÅSTE bytas!)
|
|
|
|
|
|
## 2026-06-29 (eftermiddag) — KYC Apple Native UX + Security Deploy
|
|
|
|
### AVS Master Prompt Review
|
|
|
|
**Genomförd:** Fullständig KYC/Identity Verification Review
|
|
**Modeller:** kimi-k2.6 (primär), claude-sonnet-4-6 (ej tillgänglig)
|
|
**Omfattning:** 7 deliverables
|
|
|
|
### Deliverables färdiga
|
|
|
|
| # | Deliverable | Status |
|
|
|---|-------------|--------|
|
|
| 1 | Current System Documentation | ✅ |
|
|
| 2 | Current UX Review | ✅ |
|
|
| 3 | Current Technical Review | ✅ |
|
|
| 4 | Gap Analysis | ✅ |
|
|
| 5 | Prioritized Roadmap | ✅ |
|
|
| 6 | Apple Native Redesign Proposal | ✅ |
|
|
| 7 | Implementation Plan | ✅ |
|
|
|
|
### Implementerade förbättringar
|
|
|
|
**Quick Wins:**
|
|
- Haptic feedback (expo-haptics)
|
|
- Human-friendly error-meddelanden
|
|
- Safe-area för iPhone
|
|
- Touch targets (min 44px)
|
|
|
|
**UX Improvements:**
|
|
- Spring animations (Framer Motion)
|
|
- iOS systemfärger
|
|
- Oval face guidance (Apple Face ID-style)
|
|
- 3-2-1 countdown före capture
|
|
|
|
**Technical Improvements:**
|
|
- Presigned S3 URLs för direkt upload
|
|
- Quality scoring (blur/brightness/contrast)
|
|
- Edge face detection (TensorFlow.js)
|
|
- Audit logger (GDPR-kompatibel)
|
|
|
|
**Security Fixes:**
|
|
- CSRF-token skydd
|
|
- Cookie-baserad JWT (httpOnly, secure, SameSite)
|
|
- AuthCookie utility (ersätter localStorage)
|
|
|
|
### Redteam Audit
|
|
|
|
| Risk | Antal | Status |
|
|
|------|-------|--------|
|
|
| Kritisk | 2 | Fixade |
|
|
| Hög | 4 | Dokumenterade |
|
|
| Medel | 3 | Dokumenterade |
|
|
| Låg | 2 | Dokumenterade |
|
|
|
|
**Tester:**
|
|
- SQL Injection: Blockerad ✅
|
|
- XSS: Blockerad ✅
|
|
- CSRF: 403 Forbidden ✅
|
|
- Rate limiting: Kräver implementering ⚠️
|
|
|
|
### Deploy Status
|
|
|
|
**Branch:** `feature/kyc-apple-native-ux-2026-06-29` → `master`
|
|
**Tag:** `v1.1.0-kyc-apple-native`
|
|
**Commits:** 11 st
|
|
|
|
**Produktion:**
|
|
- S3: `s3://quixzoom-app-prod/`
|
|
- CloudFront: Invalidated
|
|
- Web: `https://app.quixzoom.com`
|
|
|
|
**quiXzoom App:**
|
|
- `src/config.ts`: KYC v1.1.0 config
|
|
- `src/haptics.ts`: expo-haptics support
|
|
- `App.tsx`: Native bridge, camera access
|
|
|
|
### Monitoring
|
|
|
|
- CloudWatch Dashboard: `quixzoom-kyc-metrics`
|
|
- Alert: `kyc-completion-rate-low` (<70%)
|
|
- Metrics tracking: completion rate, step duration, errors, device/OS
|
|
|
|
### Filer skapade
|
|
|
|
| Fil | Syfte |
|
|
|-----|-------|
|
|
| `docs/kyc-audit-2026-06-29/ux-review.md` | Fullständig UX-analys (305 rader) |
|
|
| `docs/kyc-audit-2026-06-29/implementation-plan.md` | Trackbar roadmap |
|
|
| `docs/kyc-audit-2026-06-29/redteam-audit.md` | Säkerhetsgranskning (144 rader) |
|
|
| `RELEASE-v1.1.0.md` | Release notes |
|
|
| `docs/nfc-roadmap.md` | NFC ePassport plan |
|
|
| `src/lib/haptics.ts` | Haptics utility |
|
|
| `src/lib/auth-cookie.ts` | Cookie-baserad auth |
|
|
| `src/lib/csrf.ts` | CSRF-skydd |
|
|
| `src/lib/s3-upload.ts` | Presigned S3 URLs |
|
|
| `src/lib/quality-scorer.ts` | Bildkvalitetsbedömning |
|
|
| `src/lib/edge-face-detection.ts` | Lokal AI |
|
|
| `src/lib/audit-logger.ts` | GDPR-kompatibel loggning |
|
|
| `src/lib/kyc-analytics.ts` | Metrics tracking |
|
|
|
|
### Nästa steg
|
|
|
|
1. Bygga och distribuera quiXzoom app (Android/iOS)
|
|
2. A/B-testa gammal vs ny KYC
|
|
3. Övervaka metrics (completion rate, tid)
|
|
4. Fortsätta med Architecture (NFC ePassport, edge AI)
|
|
5. Implementera rate limiting
|
|
|
|
### Reality Contradiction Score (RCS)
|
|
|
|
**Idé från Erik:** AI identifierar motsägelser, inte bara objekt.
|
|
|
|
**Exempel:**
|
|
- Lyxhotell + öppna avloppsdiken
|
|
- Skyskrapor + provisoriska skoltransporter
|
|
- Smart City-sensorer + synliga elprovisorier
|
|
|
|
**Landvex-analyslager:**
|
|
- Reality Gap Index (RGI) — skillnad mellan plan och verklighet
|
|
- Reality Contradiction Score (RCS) — grad av kontrast
|
|
- Implementation Gap Score (IGS) — hur väl system fungerar
|
|
- Urban Adaptation Score (UAS) — informella lösningar
|
|
|
|
**Sparat i MEMORY.md som Landvex-indikator.**
|
|
|
|
### Viktigt att komma ihåg
|
|
|
|
- KYC v1.1.0 är i produktion
|
|
- Alla säkerhetsfixar är deployade
|
|
- Appen är uppdaterad med native features
|
|
- CloudFront cache är invalidad
|
|
- Monitoring är aktiv
|
|
- Rate limiting kräver fortfarande implementering
|
|
|
|
|
|
## 2026-06-29 (kväll) — quiXzoom App Crash (White Screen)
|
|
|
|
**Problem:** Appen kraschar till vitskärm direkt vid öppning.
|
|
|
|
**Orsak:** `App.tsx` hade problem med `INJECTED_JS` som injicerade `CONFIG.JWT_TOKEN` direkt i JavaScript utan null-checks. När token var tom sträng kraschade WebView.
|
|
|
|
**Fix deployad via AWS SSM:**
|
|
- Null-safe fallbacks (`CONFIG.JWT_TOKEN || ''`, `CONFIG.DEVICE_ID || 'unknown'`)
|
|
- Förenklad injected JS (tog bort problematisk `fetch` override)
|
|
- Error state handling i React component
|
|
- Tog bort oanvända imports (`BackHandler`, `ScrollView`)
|
|
|
|
**Status:** Fix deployad, väntar på verifiering från Erik.
|
|
|
|
**Om fortfarande vitskärm:**
|
|
1. Stäng appen helt och öppna igen
|
|
2. Logga ut och in igen (JWT-token)
|
|
3. Vänta 2-5 minuter på CloudFront cache
|
|
4. Om fortfarande problem: kolla `logcat` för felmeddelanden
|
|
|
|
**Viktigt:** Appen laddar `https://app.quixzoom.com` via WebView, inte `index.html` landing page.
|