Files
boc/intelligence/2026-06-14-quixzoom-clean-architecture.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

166 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# quiXzoom — Ren målarkitektur
# 2026-06-14 · Bernt
## PRINCIP
En server. En process per ansvar. Systemctl för allt. nginx som enda ingångspunkt.
Inget K8s. Inget Kong. Inget MSK. Inga PM2-processer i produktion.
---
## MÅLBILD — server-2 (r8g.4xlarge, eu-north-1b)
```
INTERNET
┌─────────────────────────────────────────────────────┐
│ nginx (port 80 + 443, TLS-terminering) │
│ │
│ quixzoom.com ──────────────► redirect www │
│ www.quixzoom.com ───────────► /opt/amos/public/ │
│ quixzoom/ (statisk) │
│ api.quixzoom.com/api/qz/ ───► :3209 (quixzoom-api) │
│ api.quixzoom.com/api/qz/ :3390 (qz-engine) │
│ engine/ │
│ api.quixzoom.com/health ────► :3209/health │
│ │
│ amos.aamos.systems ─────────► :3100 (amos-core) │
│ bernt.aamos.systems ────────► :18789 (openclaw) │
│ [övriga interna domäner] │
└─────────────────────────────────────────────────────┘
│ │ │ │
▼ ▼ ▼ ▼
:3209 :3390 :3392 :3100
quixzoom- qz-engine billing- amos-core
api (Rust) engine (AI-hjärna)
(Node.js) (Rust)
:6432 (pgbouncer)
platform-identity-core.rds (Postgres)
[mål: migrera till lokal Postgres på server-2]
```
---
## TJÄNSTER SOM SKA VARA AKTIVA (systemctl enabled)
| Tjänst | Port | Ansvar |
|--------|------|--------|
| nginx | 80/443 | TLS, routing, statiska filer |
| amos-core | 3100 | AI-hjärna, intern plattform |
| aamos-quixzoom-engine | 3390 | Optisk analys, Rust |
| **quixzoom-api** | 3209 | Missions, auth, payments, zoomers — **ska bli systemctl** |
| aamos-billing-engine | 3392 | Stripe/betalningar, Rust |
| aamos-ledger | 3250 | Bokföring (LandveX) |
| ouroboros-identity | 3207 | Auth/JWT |
| pgbouncer | 6432 | DB connection pooling |
| nats-server | 4222 | Intern eventbuss |
| openclaw-gateway | 18789 | Bernt AI-agent |
| amos-watchdog | — | Vaktar amos-core |
**Allt annat: disabled och stoppat.**
---
## AKTUELLT LÄGE vs MÅLBILD
### ✅ Redan rätt
- nginx, amos-core, qz-engine, billing-engine, ledger, identity, pgbouncer, nats, openclaw
### 🔴 Måste åtgärdas
**1. quixzoom-api kör via PM2 — ska vara systemctl**
- 90 kraschar beror troligen på att PM2 och systemd-arv kolliderar (PORT-variabel-konflikt syns i koden)
- Flytta till: `/etc/systemd/system/quixzoom-api.service`
**2. qz-webhook kör via PM2 från /home/bernt/qz-ci/**
- Flytta till: `/etc/systemd/system/qz-webhook.service`
- Flytta kod till: `/opt/amos/data/qz-webhook/`
**3. nginx api.quixzoom.com pekar på port 7060/7050 som inte finns**
- Ta bort /api/missions/ och /api/regulatory/ locations tills tjänsterna finns
- Annars 502 på varje anrop dit
**4. www.quixzoom.com index = zoomer-start.html som inte finns**
- Bestäm rätt entry-point och lägg dit filen
**5. Credentials i klartext i index.mjs**
- AWS_ACCESS_KEY_ID hårdkodat i källkod — kritiskt säkerhetsproblem
- Flytta till .env eller AWS instance profile
---
## AWS — VAD SOM KAN STÄNGAS NED (noll quiXzoom-beroende)
### Stäng omedelbart (inga aktiva kunder, inga konsekvenser):
| Resurs | Besparing/mån | Åtgärd |
|--------|--------------|--------|
| server-3-redundancy (r6g.xlarge) | ~140 USD | `aws ec2 stop-instances` |
| 2× graviton-worker (r6g.2xlarge) | ~560 USD | `aws ec2 stop-instances` |
| EKS karpenter-noder (2× r7g.4xlarge) | ~400-600 USD | Scale EKS nodepool till 0 |
| 4× orphaned Elastic IPs | ~18 USD | `aws ec2 release-address` |
### Kräver Johan-koordination:
| Resurs | Besparing/mån | Blocker |
|--------|--------------|---------|
| EKS cluster "wavult" (control plane) | ~72 USD | Vad kör Johan via K8s? |
| MSK Kafka | ~113 USD | Vad använder MSK? |
| RDS platform-identity-core Multi-AZ→single | ~50 USD | Planerat nedtid |
| server-1 (r8g.4xlarge) | ~600 USD | Vad kör kyc-mrz? |
**Total omedelbar besparing: ~1 100-1 300 USD/mån**
**Total med koordination: ~1 900-2 000 USD/mån**
---
## REGEL: JOHANS OCH SVENS ARBETE
Hårdlåst från 2026-06-14. Override kräver Eriks explicita godkännande.
- Allt arbete sker på **server-2** (befintlig)
- **Inga nya AWS-resurser** av något slag
- **Inga K8s-deployments** — quiXzoom kör systemctl direkt
- **Ingen ny RDS** — sikta på lokal Postgres
- **Ingen ny ElastiCache** — Redis kör lokalt på server-2 (:6379)
- **Inga nya Load Balancers** — nginx på server-2 är ingångspunkten
- Deploy-flöde: git push → qz-webhook (port 9100) → deploy.sh → systemctl restart
- CI: ci-runner (t3.medium) är OK för byggen, ingenting mer
---
## DEPLOY-FLÖDE (mål — enkelt och reproducerbart)
```
Johan pushar kod till Gitea
qz-webhook (:9100) tar emot webhook
/home/bernt/qz-ci/deploy.sh
• git pull
• npm ci (om node)
• cargo build --release (om rust)
• systemctl restart quixzoom-api
nginx serverar trafik → ny kod live
```
Ingen Docker. Ingen K8s. Ingen pipeline-overhead.
---
## NÄSTA STEG (prioriterat)
1. **Flytta quixzoom-api till systemctl** — löser 90-kraschar-problemet
2. **Ta bort /api/missions/ och /api/regulatory/ från nginx** tills de finns
3. **Fixa www.quixzoom.com index-fil**
4. **Stoppa server-3, graviton-workers** — omedelbar besparing
5. **Rensa orphaned Elastic IPs**
6. **Säkerhetsproblem: credentials ur index.mjs** — separat åtgärd