Files
boc/quixzoom-token-system/TEST_REPORT.md
T

215 lines
5.1 KiB
Markdown
Raw Normal View History

# 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