180 lines
6.1 KiB
Markdown
180 lines
6.1 KiB
Markdown
|
|
# Master Backend Plan v3.0 — LandveX Operations Platform
|
|||
|
|
|
|||
|
|
## Vision
|
|||
|
|
|
|||
|
|
En unified operations platform som hanterar ALLT utöver kärnprodukten:
|
|||
|
|
- Kunder & avtal
|
|||
|
|
- Fakturering & betalning
|
|||
|
|
- Support & ärenden
|
|||
|
|
- Press & kommunikation
|
|||
|
|
- API-nycklar & åtkomst
|
|||
|
|
- Ekonomi & redovisning
|
|||
|
|
|
|||
|
|
## Arkitektur: "One Gateway, Many Services"
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────────┐
|
|||
|
|
│ LandveX UI │
|
|||
|
|
│ (React/Vite) │
|
|||
|
|
└────────┬────────┘
|
|||
|
|
│
|
|||
|
|
┌──────────────┼──────────────┐
|
|||
|
|
│ │ │
|
|||
|
|
┌─────▼─────┐ ┌─────▼─────┐ ┌─────▼─────┐
|
|||
|
|
│ Public │ │Professional│ │ Enterprise │
|
|||
|
|
│ (gratis) │ │ (betalt) │ │ (avtal) │
|
|||
|
|
└─────┬─────┘ └─────┬─────┘ └─────┬─────┘
|
|||
|
|
│ │ │
|
|||
|
|
└──────────────┼──────────────┘
|
|||
|
|
│
|
|||
|
|
┌────────▼────────┐
|
|||
|
|
│ LandveX Gateway │ ← Auth, routing, rate limits
|
|||
|
|
│ (port 3004) │
|
|||
|
|
└────────┬────────┘
|
|||
|
|
│
|
|||
|
|
┌────────────────────┼────────────────────┐
|
|||
|
|
│ │ │
|
|||
|
|
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
|
|||
|
|
│Intelligence│ │Operations │ │ Billing │
|
|||
|
|
│ Lab │ │ Platform │ │ Engine │
|
|||
|
|
│(3002) │ │(3004) │ │(Rust) │
|
|||
|
|
└───────────┘ └────┬─────┘ └───────────┘
|
|||
|
|
│
|
|||
|
|
┌───────────────────┼───────────────────┐
|
|||
|
|
│ │ │
|
|||
|
|
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
|
|||
|
|
│ CRM │ │ Support │ │ Press │
|
|||
|
|
│(Apollo) │ │(3303) │ │ │
|
|||
|
|
└─────────┘ └─────────┘ └─────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Services (befintliga + nya)
|
|||
|
|
|
|||
|
|
### ✅ Redan igång
|
|||
|
|
|
|||
|
|
| Tjänst | Port | Tech | Status |
|
|||
|
|
|--------|------|------|--------|
|
|||
|
|
| Intelligence Lab | 3002 | Node.js | ✅ MVP-0 |
|
|||
|
|
| Gateway | 3004 | Node.js | ✅ Just startad |
|
|||
|
|
| Apollo CRM | 3001 | Node.js | 🔄 Behöver startas |
|
|||
|
|
| AAMOS Gateway | 8080 | Go | ✅ Kör |
|
|||
|
|
| AAMOS CRM | 3301 | Go | ✅ Kör |
|
|||
|
|
| AAMOS Incidents | 3303 | Go | ✅ Kör |
|
|||
|
|
| AAMOS Ledger | 3250 | Rust | ✅ Kör |
|
|||
|
|
| AMOS Billing | ? | Rust | ✅ Kör |
|
|||
|
|
|
|||
|
|
### 🆕 Nya tjänster att bygga
|
|||
|
|
|
|||
|
|
| Tjänst | Port | Tech | Beskrivning |
|
|||
|
|
|--------|------|------|-------------|
|
|||
|
|
| Operations API | 3005 | Node.js | Government portal, avtal, inställningar |
|
|||
|
|
| Press Engine | 3006 | Node.js | Pressmeddelanden, nyhetsbrev |
|
|||
|
|
| API Key Manager | 3007 | Node.js | API-nycklar, rate limits, access logs |
|
|||
|
|
| Stripe Adapter | 3008 | Node.js | Stripe integration, webhooks |
|
|||
|
|
| PEPPOL Gateway | 3009 | Node.js | Elektronisk faktura till myndigheter |
|
|||
|
|
|
|||
|
|
## Dataflöde: Government Customer
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
1. Myndighet registrerar sig
|
|||
|
|
→ Skapas i Operations API
|
|||
|
|
→ Skapas i Stripe som customer
|
|||
|
|
→ Skapas i AAMOS Ledger som kund
|
|||
|
|
|
|||
|
|
2. Myndighet konfigurerar betalning
|
|||
|
|
→ Sparas i Operations API
|
|||
|
|
→ Uppdaterar Stripe customer
|
|||
|
|
→ Validerar org-nr mot Skatteverket
|
|||
|
|
|
|||
|
|
3. Myndighet beställer uppdrag
|
|||
|
|
→ Skapas i Intelligence Lab
|
|||
|
|
→ Kostnad beräknas
|
|||
|
|
→ Förbrukning uppdateras i Operations API
|
|||
|
|
|
|||
|
|
4. Uppdrag genomförs
|
|||
|
|
→ Status uppdateras i Intelligence Lab
|
|||
|
|
→ Kostnad bokförs i AAMOS Ledger
|
|||
|
|
→ Faktura genereras (Stripe/PEPPOL)
|
|||
|
|
|
|||
|
|
5. Faktura betalas
|
|||
|
|
→ Stripe webhook → Operations API
|
|||
|
|
→ AAMOS Ledger uppdateras
|
|||
|
|
→ Status ändras till "betald"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Teknisk Stack
|
|||
|
|
|
|||
|
|
### Gateway (port 3004)
|
|||
|
|
- Express.js med proxy middleware
|
|||
|
|
- JWT auth med roller
|
|||
|
|
- Rate limiting per API-nyckel
|
|||
|
|
- Request logging och tracing
|
|||
|
|
|
|||
|
|
### Operations API (port 3005)
|
|||
|
|
- Express.js + TypeScript
|
|||
|
|
- PostgreSQL för data
|
|||
|
|
- Integrationer:
|
|||
|
|
- Stripe (betalning)
|
|||
|
|
- AAMOS Ledger (bokföring)
|
|||
|
|
- Skatteverket (org-nr validering)
|
|||
|
|
- PEPPOL (elektronisk faktura)
|
|||
|
|
|
|||
|
|
### Press Engine (port 3006)
|
|||
|
|
- Express.js + TypeScript
|
|||
|
|
- PostgreSQL
|
|||
|
|
- Mailgun/SendGrid för utskick
|
|||
|
|
- RSS-flöde
|
|||
|
|
- Arkiv med sök
|
|||
|
|
|
|||
|
|
### API Key Manager (port 3007)
|
|||
|
|
- Express.js + TypeScript
|
|||
|
|
- Redis för rate limiting
|
|||
|
|
- PostgreSQL för nycklar
|
|||
|
|
- Audit log för alla anrop
|
|||
|
|
|
|||
|
|
## Implementation Plan
|
|||
|
|
|
|||
|
|
### Sprint 1: Gateway + Operations API (2 veckor)
|
|||
|
|
- [ ] Gateway med auth och routing
|
|||
|
|
- [ ] Operations API grund
|
|||
|
|
- [ ] Government customer model
|
|||
|
|
- [ ] Grundläggande CRUD
|
|||
|
|
|
|||
|
|
### Sprint 2: Betalning + Faktura (2 veckor)
|
|||
|
|
- [ ] Stripe integration
|
|||
|
|
- [ ] Fakturagenerering (PDF)
|
|||
|
|
- [ ] Kostnadsöversikt
|
|||
|
|
- [ ] Budgetvarningar
|
|||
|
|
|
|||
|
|
### Sprint 3: PEPPOL + Avancerat (2 veckor)
|
|||
|
|
- [ ] PEPPOL gateway
|
|||
|
|
- [ ] Org-nr validering
|
|||
|
|
- [ ] Attestflöde
|
|||
|
|
- [ ] Användarroller
|
|||
|
|
|
|||
|
|
### Sprint 4: Press + API Keys (2 veckor)
|
|||
|
|
- [ ] Press engine
|
|||
|
|
- [ ] API key manager
|
|||
|
|
- [ ] Dokumentation
|
|||
|
|
- [ ] Monitoring
|
|||
|
|
|
|||
|
|
## Kostnad
|
|||
|
|
|
|||
|
|
| Komponent | Beräknad kostnad |
|
|||
|
|
|-----------|-----------------|
|
|||
|
|
| Utveckling | 4 sprintar × 2 veckor |
|
|||
|
|
| Stripe | 1.5% + 1.80 kr per transaktion |
|
|||
|
|
| PEPPOL | ~0.50 kr per faktura |
|
|||
|
|
| Drift | ECS/Fargate ~$50/mån |
|
|||
|
|
|
|||
|
|
## Nästa steg
|
|||
|
|
|
|||
|
|
1. **Starta Apollo CRM** (port 3001)
|
|||
|
|
2. **Bygg Operations API** (port 3005)
|
|||
|
|
3. **Konfigurera Stripe**
|
|||
|
|
4. **Testa fakturaflöde**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Status:** Plan klar. Väntar på go-ahead för implementation.
|