Files
boc/QUIXZOOM-STRATEGY-2026-06-04.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

161 lines
6.2 KiB
Markdown

# quiXzoom — Launch Strategy 2026-06-04
Skapad av Bernt efter fullständig genomgång av kodbas, DB, nginx, infra.
## Verklighetsläge (ärligt)
| Dimension | Nuläge |
|---|---|
| API-infra (Node + Rust) | ✅ Stabil, fixad, exponerad publikt |
| DB-schema | ✅ Väldesignat, 214 missions, rätt tabeller |
| Zoomer-auth (JWT RS256) | ✅ Funkar, ej enterprise |
| iOS-app | ⚠️ APNs mock, App Store ej submittat |
| Orderer/customer onboarding | ❌ Hårdkodad mock-data |
| Inbetalningar | ❌ Stripe mock (ingen live-nyckel) |
| Utbetalningar | ❌ Swish/Stripe Connect mock |
| KYC/BankID | ❌ Simulerad data |
| LandveX → quiXzoom koppling | ❌ Inte aktiv |
| Skalbarhet | ⚠️ Single EC2, ingen LB |
---
## Strategi — 4 parallella spår
### 🔴 SPÅR 1 — iOS LAUNCH (deadline: 15 juni, 11 dagar)
**Blockers som MÅSTE lösas innan App Store submission:**
1. **APNs Production Certificate**`push-notifications.mjs` är `Mock APNs`. Behövs:
- Apple Developer Account → Certificates → APNs Auth Key (.p8)
- `KEY_ID`, `TEAM_ID`, `BUNDLE_ID` → in i ecosystem/env
- Byt ut `sendMockAPNs()` mot `node-apn` / `@parse/node-apn`
- Deadline: **11 juni** (2 dagar buffer för review)
2. **App Store submission** — deadline **13 juni**
- Finns iOS-app byggd? Mac build server (AWS Mac EC2) — Xcode finns men act_runner ej registrerad
- Johan: tickets AMOS-51/52/53/66/67/68 blockerar CI/CD
- Alternativ: manuell build och upload via Transporter
3. **Push notification live-test** — testa mot riktiga device_tokens
**Vem äger:** Johan (CTO/Sven) + iOS-app-lagret. Bernt kan fixa APNs-integrationen i backend.
---
### 🟠 SPÅR 2 — BETALNINGAR (deadline: soft-launch, ~1 juli)
**Minsta möjliga för att ta riktiga pengar:**
**Fas 2a — Inbetalningar (orderers betalar för missions):**
- Behövs: `STRIPE_SECRET_KEY` (live) + Stripe-konto aktiverat
- Bygga: orderer checkout-flow (välj mission-typ, pris, betala)
- Prissättning finns i `pricing.mjs`
- DB: `orderer_profiles` och `organizations` är tomma → orderer-onboarding
**Fas 2b — Utbetalningar (zoomers får betalt):**
- Swish Business API (kräver Swish-avtal med bank) ELLER
- Stripe Connect (kräver `stripe_account_id` per zoomer, onboarding-flow)
- Rekommendation: **Swish först** (enklare för svenska zoomers, snabbare onboarding)
- DB-schema är redo: `payouts.swish_number`, `profiles.swish_number`
- Behövs: Swish Business API-certifikat + Swish-handelscertifikat
**Vem äger:** Winston/Rufus för banker + avtal. Bernt bygger integrationen när nycklar finns.
---
### 🟡 SPÅR 3 — KYC + ENTERPRISE AUTH (deadline: ~1 juli)
**Minsta möjliga för att lagligt betala ut till zoomers:**
- **BankID** — krävs för utbetalning (skatteidentitet, F-skatt/A-skatt)
- Leverantör: Signicat, BankID On-File, Onfido SE
- `profiles.personal_number_hash` + `identity_verified` finns i DB ✅
- Kostnader: ~1-3 kr/verifiering
- **Orderer-autentisering** — B2B-kunder
- Enklare: e-post + org.nr-verifiering (Bolagsverket API)
- Enterprise: SSO via SAML/OIDC
**Vem äger:** Dennis/Kjell (COO/Legal för avtal). Bernt bygger integrationen.
---
### 🟢 SPÅR 4 — LANDVEX → QUIXZOOM (deadline: ~15 juli)
**Kopplingen som gör quiXzoom självdrivande:**
Flödet som är designat men inte aktiverat:
```
LandveX detekterar anomali
→ auto_event_monitors triggas
→ event_template väljs (reward, radius, instruktioner)
→ mission skapas i quixzoom.missions
→ push till zoomers i närheten
```
Vad som behövs:
1. `event_templates` populeras med reella templates (livboj, brygga, sensor etc)
2. LandveX `engine.mjs` POST till `/api/quixzoom/missions` vid anomali (istället för in-memory)
3. `auto_event_monitors` aktiveras per asset/sensor
4. Push till zoomers via APNs (kräver Spår 1)
**Vem äger:** Bernt kan bygga hela pipeline. LandveX-assets behöver vara live (ej hårdkodade).
---
## Tidsplan
```
JUNI JULI
4 8 11 15 22 29 6 13
[SPÅR 1 — iOS]
──────────────┤APNs fix
│──────────────────App Store
├── LIVE 15/6
[SPÅR 2 — Betalningar]
[Winston/avtal]──────────────────────────────
[Bernt bygger]──────────────────
├── Swish live ~1/7
[SPÅR 3 — KYC]
[Dennis/avtal]──────────────────────────────
[Bernt bygger]──────────────
├── BankID live ~1/7
[SPÅR 4 — LandveX koppling]
[Bernt bygger]──────────────
├── Live ~15/7
```
---
## Uppgiftsfördelning just nu
| Vem | Uppgift | Deadline |
|---|---|---|
| **Johan/Sven** | Registrera act_runner på Mac EC2 | 8 juni |
| **Johan/Sven** | Manuell iOS build + TestFlight | 10 juni |
| **Bernt** | APNs-integration (ersätt mock) | 9 juni |
| **Bernt** | Orderer onboarding-flow i DB | 12 juni |
| **Winston/Rufus** | Stripe-avtal + live-nycklar | 10 juni |
| **Winston/Rufus** | Swish Business-avtal | 15 juni |
| **Dennis/Kjell** | BankID-leverantörsavtal | 15 juni |
| **Erik** | Godkänn App Store-submission | 13 juni |
---
## Nästa agent-tasks (Bernt kör direkt)
- [ ] **TASK-QZ-001** APNs mock → live (`push-notifications.mjs`)
- [ ] **TASK-QZ-002** Geo-filter missions (delvis klar via subagent)
- [ ] **TASK-QZ-003** Orderer registration endpoint (DB-kopplat, ej mock)
- [ ] **TASK-QZ-004** `event_templates` seed-data + LandveX webhook-endpoint
- [ ] **TASK-QZ-005** Stripe onboarding-flow (när nyckel finns)
- [ ] **TASK-QZ-006** Swish-integration (när certifikat finns)
---
## Vad Bernt KAN köra utan att vänta på någon
1. APNs backend-integration (ersätter mock, redo när Johan ger KEY_ID/TEAM_ID)
2. Orderer onboarding-flow (register → org-profil → mission-beställning → RDS)
3. LandveX webhook-endpoint + event_templates seed
4. Missions geo-filter (nästan klar)
5. Stripe checkout-flow (redo att aktivera när Winston ger live-nycklar)