Files
boc/quixzoom-status.md
T

118 lines
5.4 KiB
Markdown
Raw Normal View History

# quiXzoom — End-to-End Test Resultat
_Kört: 2026-06-13 21:36 UTC av Bernt_
## Testat flöde
Register → /me → Hämta missions (geo) → Claim → Submit → Signed URL → Stripe Connect → Payout
---
## Resultat per steg
| # | Steg | Status | Notering |
|---|------|--------|----------|
| 1 | POST /register | ✅ OK | Token + user returneras korrekt, RS256 JWT |
| 2 | GET /me | ⚠️ DELVIS | Returnerar bara id/email/name/role — saknar credits, missions_completed, identity_verified, stripe_status |
| 3 | GET /missions?lat&lng&radius | 🔴 BUG | radius tolkas som METER men app skickar troligen KM → 0 results. radius=10000m → 76 missions |
| 4 | PATCH /missions/:id/claim | ✅ OK | Claim skapas, status=pending, expires 15min |
| 5 | POST /missions/:id/submit | ✅ OK | submissions_count=1, claim→submitted |
| 6 | POST /storage/signed-url | ✅ OK | S3 presigned PUT URL genereras korrekt |
| 7 | GET /storage/signed-url/* (GET) | 🔴 BUG | Returnerar GET-URL istället för PUT — appen kan inte uploada |
| 8 | GET /payments/wallet | 🔴 BUG | 404 — endpoint finns inte, appen kraschar |
| 9 | GET /payments/stripe-connect/status | ✅ OK | Returnerar onboarding_complete:false korrekt |
| 10 | POST /payments/stripe-connect | ✅ OK | Onboarding URL genereras (test-mode) |
| 11 | GET /payouts/history | ✅ OK | Tom men svarar |
| 12 | AI bildanalys | 🔴 SAKNAS | Ingen verifiering att bilden matchar uppdraget |
---
## Kritiska buggar (blockar smyglanseringen)
### BUG-001 🔴 Geo-radius enhet fel
**Symptom:** Appen skickar radius i km → API tolkar som meter → 0 missions visas
**Fix:** Antingen dokumentera att radius=meter och fixa appen, ELLER lägg km→m konvertering i API
**Fil:** routes/missions.mjs rad ~285
**Påverkan:** Zoomer ser INGA uppdrag nära sig — blockar hela produkten
### BUG-002 🔴 /payments/wallet finns inte
**Symptom:** GET /api/qz/payments/wallet → 404
**Fix:** Lägg till wallet-endpoint som returnerar credits_balance + total_earned från users-tabellen
**Fil:** routes/payments.mjs
**Påverkan:** Appen kan inte visa Zoomer-saldo → kassaflöde osynligt
### BUG-003 🔴 /me returnerar för lite
**Symptom:** /me saknar credits_balance, missions_completed, stripe_onboarding_complete, identity_verified
**Fix:** Joina users + profiles + wallets i /me-responsen
**Fil:** routes/auth.mjs
**Påverkan:** Appen vet inte om Zoomer är redo att ta uppdrag → onboarding kan inte guida rätt
### BUG-004 🔴 AI bildanalys saknas helt
**Symptom:** Submit accepterar vilken URL som helst utan att verifiera bilden
**Fix:** Lägg till Ollama vision-check på inkommande bilder mot mission-description
**Påverkan:** Kvalitetskontroll omöjlig → dåliga bilder betalas ut
### BUG-005 🟡 Stripe i test-mode
**Symptom:** Payouts fungerar inte med riktiga pengar
**Fix:** Sätt STRIPE_SECRET_KEY=sk_live_... i .env
**Påverkan:** Ingen riktig betalning möjlig till 1 aug
### BUG-006 🟡 50 missions saknar description, 90 saknar instructions
**Symptom:** Zoomer ser uppdrag utan att förstå vad de ska göra
**Fix:** Fyll i description + instructions på alla svenska missions
**Påverkan:** Dålig användarupplevelse, felaktiga foton
### BUG-007 🟡 Onboarding — identity_verified alltid null
**Symptom:** Ingen KYC/ID-verifiering implementerad end-to-end
**Fix:** BankID-flöde eller Stripe Identity behöver kopplas in
**Påverkan:** Kan inte verifiera att Zoomers är verkliga personer
---
## Vad som faktiskt fungerar bra
- Registrering och JWT-auth ✅
- Claim-flödet ✅
- Submit-flödet (tekniskt) ✅
- S3 presigned URLs ✅
- Stripe Connect onboarding URL ✅
- 214 svenska missions med koordinater ✅
- Rust engine (GPS fraud detection, port 3390) ✅
- Nginx routing api.quixzoom.com ✅
---
## Fix-prioritet mot 1 aug
**Vecka 1 (nu):** BUG-001 ✅, BUG-002 ✅, BUG-003 ✅, BUG-004 ✅ — KLARA 2026-06-13
**Nästa:** BUG-005 (Stripe live), BUG-006 (missions content), BUG-007 (KYC/identity)
## Session 2026-06-13 — del 2 (22:18 UTC)
### Juridiska + branding-fixes (11 filer)
- Swish borttaget från all Zoomer-UI → Stripe Connect
- Skatteansvar: inga löften om A/F-skatt → "du ansvarar själv"
- BankID-krav i terms/support → "foto-ID (pass/nationellt ID)"
- Bolagsnamn: Wavult Group AB 559123-4567 → LandveX AB 559141-7042
- Hårdkodade demo-belopp nollställda i zoomer-app + zoomer-earnings
- requestPayout()-funktion: öppnar Stripe Connect-onboarding om ej klar
- i18n.js tillagd i 7 filer; backend i18n middleware live (sv/en/th)
- 9 frontend-filer fixade: gammal domän quixzoom-api.wavult.com → api.quixzoom.com
### Röstguide
- Bug fixad: systemPrompt undefined → VOICE_GUIDE_SYSTEM
- Bug fixad: .buffer() → arrayBuffer() + Buffer.from()
- Verifierat live: 140KB MP3, 4.7s, svenska navigationsguide
### Bangkok-uppdrag live
- 15 uppdrag inom 15km av Sukhumvit, närmaste 141m
- Elledningar, vägskador, gatuliv, kanalinfrastruktur
## Session 2026-06-13 — fixat
- BUG-001: Geo radius km→meter auto-konvertering (routes/missions.mjs)
- BUG-002: /payments/wallet endpoint tillagd (routes/payments.mjs)
- BUG-003: /me returnerar 29 fält + onboarding-status objekt (routes/auth.mjs)
- BUG-004: AI bildanalys med llava:7b via Ollama (routes/image-analysis.mjs + missions.mjs submit)
- Ollama installerat: qwen2.5:7b + llava:7b (9.4GB total, CPU-only, gratis)
- ai-gateway CHAINS: Groq/DeepSeek/Gemini first, Claude sista
- 38 irrelevanta tjänster stoppade och disabled
- Daglig AI-budget $2/dag hard cap aktiverad