# quiXzoom Token System — Testrapport ## Flöde som testas ``` Zoomer registrering → ID-verifiering → Wallet → Mission → Genomför → AI-analys → Godkänn → Token reward → Payout ``` ## Komponenter ### 1. Databas (PostgreSQL + PostGIS) - **Schema:** `schema.sql` - **Tabeller:** - `zoomers` — Zoomer-profiler - `zoomer_wallets` — Konton och Stripe Connect - `token_transactions` — Oföränderlig ledger - `mission_pricing` — Prissättning per mission-typ - `payout_schedules` — Veckovis utbetalningsschema - `payout_executions` — Utförda utbetalningar - `customer_topups` — Kundköp av tokens ### 2. API Server (Node.js + Express) - **Fil:** `api/server.js` - **Endpoints:** - `POST /api/v1/wallets` — Skapa wallet - `GET /api/v1/wallets/:zoomer_id` — Hämta saldo - `POST /api/v1/transactions/mission-reward` — Token reward - `GET /api/v1/transactions/:zoomer_id` — Transaktionshistorik - `GET /api/v1/pricing/:mission_type` — Hämta pris - `POST /api/v1/payouts/execute` — Utför payout - `POST /api/v1/topups` — Kund top-up - `POST /api/v1/webhooks/stripe` — Stripe webhooks ### 3. Payout Cron - **Fil:** `cron/payout-cron.js` - **Kör:** Varje måndag 09:00 UTC - **Funktion:** Hämtar alla zoomers med saldo ≥ minimum och utför Stripe Transfer ## Test-flöde ### Steg 1: Zoomer registrering ```bash curl -X POST http://localhost:8080/api/v1/wallets \ -H "Content-Type: application/json" \ -d '{ "zoomer_id": "550e8400-e29b-41d4-a716-446655440000", "stripe_connect_account_id": "acct_test_xxx" }' ``` ### Steg 2: ID-verifiering - Zoomer laddar upp ID-dokument - System verifierar identitet - Status ändras till `active` ### Steg 3: Skapa mission ```bash curl -X POST http://localhost:8080/api/v1/pricing \ -H "Content-Type: application/json" \ -d '{ "mission_type": "verify", "base_price_usd": 2.50, "country_code": "SE", "city": "Stockholm" }' ``` ### Steg 4: Ta uppdrag - Zoomer öppnar app - Väljer tillgängligt uppdrag - System tilldelar mission ### Steg 5: Genomför uppdrag - Zoomer fotograferar objekt - GPS, sensorer, video sparas - Submission skickas till server ### Steg 6: AI-analys ``` AI analyserar: - Objektdetektion - Kvalitetsbedömning - GPS-validering - Liveness-check ``` ### Steg 7: Godkännande - AI godkänner (confidence ≥ 85%) - Status: `validated` ### Steg 8: Token reward ```bash curl -X POST http://localhost:8080/api/v1/transactions/mission-reward \ -H "Content-Type: application/json" \ -d '{ "zoomer_id": "550e8400-e29b-41d4-a716-446655440000", "mission_id": "550e8400-e29b-41d4-a716-446655440002", "observation_id": "550e8400-e29b-41d4-a716-446655440003", "amount_qz_token": 2.5, "description": "Mission reward for verify street_lamp_001" }' ``` **Resultat:** - Transaktion skapas i ledger - Wallet-balans uppdateras - Zoomer ser tokens på konto ### Steg 9: Kontrollera saldo ```bash curl http://localhost:8080/api/v1/wallets/550e8400-e29b-41d4-a716-446655440000 ``` **Förväntat svar:** ```json { "success": true, "wallet": { "zoomer_id": "550e8400-e29b-41d4-a716-446655440000", "balance_qz_token": 2.5, "balance_pending_qz_token": 0, "total_balance": 2.5, "stripe_connect_status": "active", "payout_schedule": "weekly_monday" } } ``` ### Steg 10: Payout (måndag) ```bash curl -X POST http://localhost:8080/api/v1/payouts/execute \ -H "Content-Type: application/json" \ -d '{ "zoomer_id": "550e8400-e29b-41d4-a716-446655440000" }' ``` **Resultat:** - Stripe Transfer skapas - Tokens "bränns" från wallet - USD överförs till Zoomers bankkonto ## Kör testet ```bash # 1. Starta systemet cd quixzoom-token-system docker-compose up -d # 2. Vänta på att databasen startar sleep 10 # 3. Kör flödestest node test/flow-test.js # 4. Kontrollera resultat curl http://localhost:8080/api/v1/wallets/550e8400-e29b-41d4-a716-446655440000 ``` ## Förväntat resultat ``` 🚀 Startar quiXzoom Token-flödestest 📱 STEG 1: Skapa Zoomer-konto ✅ Zoomer skapad: 550e8400-e29b-41d4-a716-446655440000 🆔 STEG 2: ID-verifiering ✅ ID verifierad 💰 STEG 3: Skapa wallet ✅ Wallet skapad: [wallet-id] 📋 STEG 4: Skapa mission ✅ Mission skapad: 550e8400-e29b-41d4-a716-446655440002 🎯 STEG 5: Ta uppdrag ✅ Uppdrag tilldelat 📸 STEG 6: Genomför uppdrag ✅ Uppdrag genomfört: [observation-id] 🤖 STEG 7: AI-analys ✅ AI-analys klar: 95% confidence ✅ STEG 8: Godkänn uppdrag ✅ Uppdrag godkänt: approved 💎 STEG 9: Token reward ✅ Reward skapad: 2.5 QZ TOKEN 💳 STEG 10: Kontrollera saldo ✅ Saldo: 2.5 QZ TOKEN ($2.50) 💸 STEG 11: Simulera payout ✅ Payout: 2.5 QZ TOKEN ($2.50) 🎉 ALLA STEG KLARA! ``` ## Säkerhet - **Oföränderlig ledger:** Transaktioner kan inte ändras eller tas bort - **Ed25519-signering:** Varje transaktion signeras digitalt - **Stripe Connect:** Säkra utbetalningar via Stripe - **Audit trail:** Full spårbarhet för alla transaktioner ## Nästa steg 1. [ ] Integrera med quiXzoom-app 2. [ ] Implementera riktig AI-analys 3. [ ] Stripe Connect onboarding 4. [ ] Produktionsdeployment 5. [ ] Övervakning och alerting