295 lines
7.8 KiB
Markdown
295 lines
7.8 KiB
Markdown
|
|
# AAMOS System Knowledge Graph
|
||
|
|
|
||
|
|
> Levande modell av systemet. Inte dokumentation — verklighet.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Aktörer (Actors)
|
||
|
|
|
||
|
|
```
|
||
|
|
┌─────────┐ ┌──────────┐ ┌─────────────┐
|
||
|
|
│ Zoomer │ │ Customer │ │ Admin/Landvex│
|
||
|
|
└────┬────┘ └────┬─────┘ └──────┬──────┘
|
||
|
|
│ │ │
|
||
|
|
└───────────────┴──────────────────┘
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
┌─────────────┐
|
||
|
|
│ quiXzoom │
|
||
|
|
│ App │
|
||
|
|
│ React/Vite │
|
||
|
|
└──────┬──────┘
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
┌─────────────┐
|
||
|
|
│ nginx/ │
|
||
|
|
│ API Gateway│
|
||
|
|
└──────┬──────┘
|
||
|
|
│
|
||
|
|
┌───────────┼───────────┐
|
||
|
|
│ │ │
|
||
|
|
▼ ▼ ▼
|
||
|
|
┌────────┐ ┌────────┐ ┌────────┐
|
||
|
|
│ Auth │ │Mission │ │ Wallet │
|
||
|
|
│Rust/ │ │Node.js │ │Node.js │
|
||
|
|
│axum │ │ │ │ │
|
||
|
|
└───┬────┘ └───┬────┘ └───┬────┘
|
||
|
|
│ │ │
|
||
|
|
└──────────┼──────────┘
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
┌─────────────┐
|
||
|
|
│ PostgreSQL │
|
||
|
|
│ (RDS) │
|
||
|
|
└─────────────┘
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Affärsflöden (Business Flows)
|
||
|
|
|
||
|
|
### 1. Zoomer Onboarding
|
||
|
|
```
|
||
|
|
Zoomer ──► App ──► Auth.register ──► DB.users
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
E-postverifiering
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
KYC-start ──► App ──► Identity.session ──► DB.sessions
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
Passfoto + Selfie ──► KYC.upload ──► S3
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
KYC.verify ──► AI-granskning
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
Godkänd ──► DB.users (kyc_status=verified)
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
Kan ta missions
|
||
|
|
```
|
||
|
|
|
||
|
|
### 2. Mission Flow
|
||
|
|
```
|
||
|
|
Customer ──► App ──► Mission.create ──► DB.missions
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
Zoomer ──► App ──► Mission.list ◄─────────────┘
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
Claim ──► DB.claims (status=active)
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
Fotografera ──► App ──► Submission.create ──► S3 (bilder)
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
AI-granskning ──► Mission.review
|
||
|
|
│
|
||
|
|
├─► Godkänd ──► DB.submissions (approved)
|
||
|
|
│ │
|
||
|
|
│ ▼
|
||
|
|
│ Payout.request ──► Stripe Connect
|
||
|
|
│ │
|
||
|
|
│ ▼
|
||
|
|
│ Zoomer får pengar
|
||
|
|
│
|
||
|
|
└─► Avslag ──► DB.submissions (rejected)
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
Zoomer kan försöka igen
|
||
|
|
```
|
||
|
|
|
||
|
|
### 3. Betalningsflöde (Customer)
|
||
|
|
```
|
||
|
|
Customer ──► App ──► Wallet.deposit ──► Stripe
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
DB.wallets (credits += amount)
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
Customer kan skapa missions
|
||
|
|
```
|
||
|
|
|
||
|
|
### 4. Lösenordsåterställning (NYTT)
|
||
|
|
```
|
||
|
|
Zoomer ──► App ──► Auth.forgot-password
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
API Gateway ──► Lambda (quixzoom-forgot-password)
|
||
|
|
│
|
||
|
|
├─► DB.password_reset_tokens (skapa token)
|
||
|
|
│
|
||
|
|
└─► SES (skicka e-post)
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
Zoomer får mejl med länk
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
Klickar länk ──► App ──► ResetPassword.tsx
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
Ange nytt lösenord ──► Lambda.verify ──► Lambda.reset
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
DB.users (uppdatera password_hash)
|
||
|
|
DB.password_reset_tokens (markera used)
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Beroenden (Dependencies)
|
||
|
|
|
||
|
|
### Kritiska vägar
|
||
|
|
|
||
|
|
**Om Stripe ligger nere:**
|
||
|
|
- ❌ Payout fungerar inte → Zoomers får inte betalt
|
||
|
|
- ❌ Wallet.deposit fungerar inte → Kunder kan inte köpa credits
|
||
|
|
- ✅ Mission-granskning fungerar fortfarande
|
||
|
|
- ✅ KYC fungerar fortfarande
|
||
|
|
|
||
|
|
**Om PostgreSQL ligger nere:**
|
||
|
|
- ❌ ALLT slutar fungera
|
||
|
|
- ❌ Auth, Mission, Wallet, KYC — alla döda
|
||
|
|
- ⚠️ Ingen dokumenterad backup-strategi
|
||
|
|
- ⚠️ Ingen dokumenterad disaster recovery
|
||
|
|
|
||
|
|
**Om S3 ligger nere:**
|
||
|
|
- ❌ Bilduppladdning fungerar inte
|
||
|
|
- ❌ Frontend kan inte ladda assets
|
||
|
|
- ✅ API:er fungerar fortfarande
|
||
|
|
- ✅ Auth fungerar fortfarande
|
||
|
|
|
||
|
|
**Om CloudFront ligger nere:**
|
||
|
|
- ⚠️ App laddar långsamt (direkt från S3)
|
||
|
|
- ✅ Fungerar fortfarande
|
||
|
|
|
||
|
|
**Om SES ligger nere:**
|
||
|
|
- ❌ Lösenordsåterställning fungerar inte
|
||
|
|
- ✅ Allt annat fungerar
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Dataflöden (Data Flows)
|
||
|
|
|
||
|
|
### Tabell: missions
|
||
|
|
Används av:
|
||
|
|
- Mission Service (CRUD)
|
||
|
|
- App (visa på karta)
|
||
|
|
- Customer (skapa)
|
||
|
|
- Zoomer (claima)
|
||
|
|
|
||
|
|
### Tabell: users
|
||
|
|
Används av:
|
||
|
|
- Auth Service (autentisering)
|
||
|
|
- KYC Service (verifiering)
|
||
|
|
- Wallet Service (transaktioner)
|
||
|
|
- App (profil)
|
||
|
|
|
||
|
|
### Tabell: claims
|
||
|
|
Används av:
|
||
|
|
- Mission Service (aktiva claims)
|
||
|
|
- Zoomer (min status)
|
||
|
|
- App (UI-state)
|
||
|
|
|
||
|
|
### Tabell: submissions
|
||
|
|
Används av:
|
||
|
|
- Mission Service (granskning)
|
||
|
|
- AI-granskning (bilder)
|
||
|
|
- Payout Service (betalning)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Teknisk skuld (Technical Debt) — Graf-baserad vy
|
||
|
|
|
||
|
|
```
|
||
|
|
Manuell deployment ──► Risk för mänskliga fel
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
Inga automatiska tester ──► Regressioner upptäcks sent
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
Ingen CI/CD ──► Lång ledtid från kod till produktion
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
Ingen autoscaling ──► Kan inte hantera plötslig load
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
Bristfällig observerbarhet ──► Svårt att diagnostisera
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
Ingen centraliserad loggning ──► Tidskrävande felsökning
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Agentens roll i systemet
|
||
|
|
|
||
|
|
```
|
||
|
|
Bernt (AI-agent)
|
||
|
|
│
|
||
|
|
├─► Utvecklar ──► quixzoom.com (frontend)
|
||
|
|
│
|
||
|
|
├─► Administrerar ──► ouroboros-identity (auth)
|
||
|
|
│
|
||
|
|
├─► Deployar ──► S3 + CloudFront
|
||
|
|
│
|
||
|
|
├─► Underhåller ──► PostgreSQL (RDS)
|
||
|
|
│
|
||
|
|
└─► Konfigurerar ──► AWS-resurser
|
||
|
|
```
|
||
|
|
|
||
|
|
**Begränsningar:**
|
||
|
|
- Ingen realtidskontroll av systemet
|
||
|
|
- Begränsad kontext — kan inte se allt samtidigt
|
||
|
|
- Ingen automatisk upptäckt av nya komponenter
|
||
|
|
- Manuellt minne — måste explicit spara information
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Förändringspåverkan (Change Impact)
|
||
|
|
|
||
|
|
### "Vad påverkas om jag ändrar..."
|
||
|
|
|
||
|
|
**Wallet-modulen?**
|
||
|
|
- Direkt: Wallet Service, DB.wallets, DB.transactions
|
||
|
|
- Indirekt: Payout Service, App (Wallet-sida), Zoomer (utbetalningar)
|
||
|
|
- Tester som behövs: Wallet-transaktioner, Payout-integration
|
||
|
|
|
||
|
|
**KYC-flödet?**
|
||
|
|
- Direkt: KYC Service, Identity Service, DB.sessions
|
||
|
|
- Indirekt: Auth Service, App (VerifyIdentity.tsx), Zoomer (onboarding)
|
||
|
|
- Tester som behövs: KYC-verifiering, Session-hantering
|
||
|
|
|
||
|
|
**Mission-API:et?**
|
||
|
|
- Direkt: Mission Service, DB.missions, DB.claims
|
||
|
|
- Indirekt: App (karta, lista), Zoomer (claim), Customer (skapa)
|
||
|
|
- Tester som behövs: Mission-CRUD, Claim-livscykel
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Saknade länkar (Missing Links)
|
||
|
|
|
||
|
|
1. **Ingen koppling mellan KYC och Wallet**
|
||
|
|
- Zoomer kan ha verifierad KYC men ingen wallet
|
||
|
|
- Borde: KYC godkänd → auto-skapa wallet
|
||
|
|
|
||
|
|
2. **Ingen koppling mellan Submission och Notification**
|
||
|
|
- Zoomer får inte veta när submission granskats
|
||
|
|
- Borde: Submission godkänd/avslagen → push-notis
|
||
|
|
|
||
|
|
3. **Ingen koppling mellan Customer och Analytics**
|
||
|
|
- Customer ser inte mission-statistik
|
||
|
|
- Borde: Dashboard med mission-performance
|
||
|
|
|
||
|
|
4. **Ingen koppling mellan Agent och Monitoring**
|
||
|
|
- Bernt vet inte om systemet är nere
|
||
|
|
- Borde: Agent får alerts, kan reagera automatiskt
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
*Denna graf är levande — uppdateras när systemet förändras.*
|
||
|
|
*Genererad av Bernt (AI-agent) *
|
||
|
|
*Senast uppdaterad: 2026-06-30*
|