58ca4e68db
- Go backend API with full CRUD for all modules (CRM, Sales, Finance, HR, Legal, Marketing, Support, Purchase, Inventory, Projects, Automation, Analytics) - Rust analytics service with parallel report generation - C runtime with POSIX shared memory IPC - PostgreSQL schema with 30+ tables, full migrations - Redis cache, sessions, pub/sub - Kafka event streaming with Zookeeper - WebSocket hub for real-time updates - Automation engine with cron jobs, workflows, event triggers - JWT authentication, multi-tenant from start - Docker Compose with all services - Nginx reverse proxy with rate limiting - Integration tests passing - Feature gap analysis against Fortnox/Odoo/Visma Refs: BOC-001
5.1 KiB
5.1 KiB
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-profilerzoomer_wallets— Konton och Stripe Connecttoken_transactions— Oföränderlig ledgermission_pricing— Prissättning per mission-typpayout_schedules— Veckovis utbetalningsschemapayout_executions— Utförda utbetalningarcustomer_topups— Kundköp av tokens
2. API Server (Node.js + Express)
- Fil:
api/server.js - Endpoints:
POST /api/v1/wallets— Skapa walletGET /api/v1/wallets/:zoomer_id— Hämta saldoPOST /api/v1/transactions/mission-reward— Token rewardGET /api/v1/transactions/:zoomer_id— TransaktionshistorikGET /api/v1/pricing/:mission_type— Hämta prisPOST /api/v1/payouts/execute— Utför payoutPOST /api/v1/topups— Kund top-upPOST /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
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
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
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
curl http://localhost:8080/api/v1/wallets/550e8400-e29b-41d4-a716-446655440000
Förväntat svar:
{
"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)
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
# 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
- Integrera med quiXzoom-app
- Implementera riktig AI-analys
- Stripe Connect onboarding
- Produktionsdeployment
- Övervakning och alerting