Master Backend Plan v3.0 + Government Portal + Implementation Order

This commit is contained in:
Bernt
2026-07-02 18:23:50 +00:00
parent ca43443119
commit 4080c7add8
10 changed files with 1081 additions and 0 deletions
+172
View File
@@ -0,0 +1,172 @@
# Government Customer Portal — Specification
## Core Principle
**Myndigheter ska själva administrera:**
- Betalningssätt (kort, faktura, autogiro)
- Fakturaadress och referenser
- Kostnadsramar och budgetbevakning
- Användare och behörigheter
- Vilka områden de vill bevaka
## Self-Service Model
| Funktion | Beskrivning |
|----------|-------------|
| **Betalningsinställningar** | Välj kort, faktura, autogiro. Ange fakturaadress, OCR/er referens, attestflöde |
| **Kostnadsramar** | Sätt månads-/årsbudget. Få varning vid 80%. Blockera vid 100% (kan överridas) |
| **Användarhantering** | Lägg till kollegor, tilldela roller (beställare, attestant, tittare) |
| **Bevakningsområden** | Rita på karta, välj fastigheter, adresser, eller kommunala objekt |
| **Fakturahistorik** | Se alla fakturor, ladda ner PDF, exportera till Excel |
| **Avtalsöversikt** | Se aktiva avtal, förbrukning, förnyelsedatum |
## Integrationer
### Stripe
- Kortbetalning (automatiskt)
- Sätta upp autogiro
- Faktura via Stripe (alternativ till PEPPOL)
### PEPPOL (för myndigheter som kräver det)
- Elektronisk faktura direkt till deras ekonomisystem
- Stöd för Svefaktura 1.0 / PEPPOL BIS Billing 3.0
- Org-nr validering mot Skatteverket
### AAMOS Ledger (port 3250)
- Bokföring av alla transaktioner
- SIE4-export för myndighetens redovisning
- Momsredovisning
## Teknisk Arkitektur
```
┌─────────────────────────────────────────┐
│ Government Portal (React/Vue) │
│ - Självbetjäning │
│ - Kostnadsöversikt │
│ - Fakturahistorik │
└─────────────────┬───────────────────────┘
┌─────────────────▼───────────────────────┐
│ LandveX Gateway (port 3004) │
│ - Auth & API-nycklar │
│ - Routing till rätt tjänst │
└─────────────────┬───────────────────────┘
┌─────────────┼─────────────┐
│ │ │
┌───▼───┐ ┌────▼────┐ ┌────▼────┐
│Stripe │ │ PEPPOL │ │AAMOS │
│ │ │ Gateway │ │Ledger │
│3250 │ │ │ │(3250) │
└───────┘ └─────────┘ └─────────┘
```
## Data Model
```typescript
interface GovernmentCustomer {
id: string; // org-nr som ID
name: string;
type: 'kommun' | 'region' | 'myndighet' | 'bolag';
// Betalningsinställningar
paymentSettings: {
method: 'card' | 'invoice' | 'autogiro';
invoiceAddress: string;
invoiceEmail: string;
reference: string; // "Ert referensnummer"
ocrNumber?: string;
costCenter?: string;
};
// Kostnadsramar
budgetLimits: {
monthly?: number;
yearly?: number;
alertAtPercent: number; // default 80
blockAtPercent: number; // default 100
};
// Bevakningsområden
watchAreas: Array<{
id: string;
name: string;
geometry: GeoJSON.Polygon; // Rita på karta
type: 'custom' | 'property' | 'municipal';
}>;
// Användare
users: Array<{
email: string;
role: 'admin' | 'orderer' | 'approver' | 'viewer';
name: string;
}>;
}
```
## API Endpoints
```
GET /api/v1/government/me → Min profil
PUT /api/v1/government/payment → Uppdatera betalningsinställningar
GET /api/v1/government/invoices → Fakturahistorik
GET /api/v1/government/budget → Kostnadsöversikt
POST /api/v1/government/areas → Lägg till bevakningsområde
GET /api/v1/government/areas → Lista bevakningsområden
DELETE /api/v1/government/areas/:id → Ta bort bevakningsområde
POST /api/v1/government/users → Bjud in användare
```
## Fakturaflöde
```
1. Myndighet beställer tjänst
2. Uppdrag genomförs
3. Faktura genereras (PDF + PEPPOL)
4. Faktura skickas till angiven adress/epost
5. Myndighet ser faktura i portalen
6. Betalning registreras i AAMOS Ledger
7. SIE4-export för redovisning
```
## Kostnadsöversikt (Dashboard)
| Widget | Data |
|--------|------|
| **Denna månad** | Förbrukat / Budget |
| **Prognos** | Årsprognos baserat på nuvarande takt |
| **Per tjänst** | Uppdelning per typ av uppdrag |
| **Per område** | Kostnad per bevakningsområde |
| **Jämförelse** | Denna månad vs förra månaden |
## MVP-0: Government Portal
### Sprint 1: Grund
- [ ] Inloggning med BankID (Svensk E-legitimation)
- [ ] Profilsida med org-nr och adress
- [ ] Betalningsinställningar (fakturaadress, referens)
### Sprint 2: Bevakning
- [ ] Karta med ritverktyg
- [ ] Spara bevakningsområden
- [ ] Lista bevakade områden
### Sprint 3: Ekonomi
- [ ] Kostnadsöversikt
- [ ] Fakturahistorik
- [ ] Budgetvarningar
### Sprint 4: Användare
- [ ] Bjud in kollegor
- [ ] Roller och behörigheter
- [ ] Attestflöde
## Status
**Specifikation:** ✅ KLAR
**Implementation:** 🔄 EJ PÅBÖRJAD
**Beroenden:**
- AAMOS Ledger (3250) — måste vara igång
- Stripe — måste konfigureras
- PEPPOL — kan vänta till efter MVP
+115
View File
@@ -0,0 +1,115 @@
# Implementation Order — LandveX Platform
## Fas 1: Pilot 001 (NU — denna vecka)
**Mål:** Första riktiga fältuppdrag med film
- [ ] Erik filmar väg (telefon)
- [ ] Laddar upp via https://pilot.landvex.com
- [ ] Verifierar i Field Console
- [ ] Dokumenterar i Pilot Checklist
- [ ] Uppdaterar Kill List
**Leverans:** Golden Mission #0001
## Fas 2: MVP-1 — First Verified Observation (Sprint 1)
**Mål:** AI kan identifiera objekt i film
- [ ] Annotering av Golden Mission
- [ ] Träna första modell
- [ ] Verifiera observation
- [ ] Dokumentera i Decision Case
**Leverans:** Första verifierade observationen
## Fas 3: MVP-2 — First Verified Decision (Sprint 2)
**Mål:** AI kan föreslå beslut
- [ ] Bygg Decision Pipeline
- [ ] Träna beslutsmodell
- [ ] Mänsklig review
- [ ] Godkänn Decision Case
**Leverans:** Första verifierade beslutet
## Fas 4: MVP-3 — First Replay (Sprint 3)
**Mål:** Kunna spela upp hela kedjan
- [ ] Bygg Replay-funktion
- [ ] Länka video → observation → beslut
- [ ] Visa i UI
- [ ] Testa med Golden Mission
**Leverans:** Fungerande replay
## Fas 5: MVP-4 — First Learning Loop (Sprint 4)
**Mål:** Systemet lär sig av feedback
- [ ] Feedback-loop från review
- [ ] Automatisk modellförbättring
- [ ] Mät förbättring
- [ ] Dokumentera
**Leverans:** Systemet blir bättre över tid
## Fas 6: MVP-5 — First Auto-Generated Mission (Sprint 5)
**Mål:** Systemet skapar egna uppdrag
- [ ] Knowledge Gap detection
- [ ] Auto-generera mission
- [ ] Skicka till quiXzoom
- [ ] Verifiera resultat
**Leverans:** Självkörande system
## Parallellt: Master Backend (Sprint 1-4)
### Sprint 1: Gateway + Operations
- [ ] LandveX Gateway (port 3004)
- [ ] Operations API (port 3005)
- [ ] Government customer model
### Sprint 2: Betalning
- [ ] Stripe integration
- [ ] Fakturagenerering
- [ ] Kostnadsöversikt
### Sprint 3: Myndighetsportal
- [ ] Självbetjäning
- [ ] Bevakningsområden
- [ ] Användarhantering
### Sprint 4: Press + API
- [ ] Press engine
- [ ] API-nycklar
- [ ] Dokumentation
## Beslutspunkter
| När | Vad | Kriterium |
|-----|-----|-----------|
| Efter Pilot 001 | Fortsätt MVP-1? | Upload fungerar, data är bra |
| Efter MVP-2 | Sälja till kund? | Decision Case är användbar |
| Efter MVP-4 | Skala upp? | Systemet lär sig märkbart |
| Efter MVP-5 | Auto-pilot? | Kunskapsgap detekteras korrekt |
## Resurser
| Roll | Person | Fokus |
|------|--------|-------|
| AI/ML | Johan | Modeller, träning |
| Backend | Bernt | API, integrationer |
| Produkt | Erik | Piloter, feedback |
| Sälj | Erik | Kundmöten, avtal |
## Budget
| Fas | Tid | Kostnad |
|-----|-----|---------|
| Pilot 001 | 1 vecka | 0 kr |
| MVP 1-5 | 10 veckor | 200 000 kr |
| Master Backend | 8 veckor | 160 000 kr |
| **Totalt** | **19 veckor** | **360 000 kr** |
---
**Nästa steg:** Pilot 001 — Erik filmar väg
+163
View File
@@ -0,0 +1,163 @@
# Master Backend Plan
## Status: Vi har redan det mesta!
### Befintliga Rust-servrar (AMOS)
| Tjänst | Port | Status | Användning |
|--------|------|--------|------------|
| amos-gateway | 3206 | ✅ Kör | API Gateway |
| billing-engine | ? | ✅ Kör | Fakturering |
| amos-financial | 3203 | ✅ Kör | Ekonomi |
| health-aggregator | ? | ✅ Kör | Hälsa |
| amos-analytics | 3211 | ✅ Kör | Analys |
### Befintliga Go-servrar (AAMOS)
| Tjänst | Port | Status | Användning |
|--------|------|--------|------------|
| aamos-gateway | 8080 | ✅ Kör | Huvudgateway |
| aamos-crm | 3301 | ✅ Kör | CRM |
| aamos-campaigns | 3302 | ✅ Kör | Kampanjer |
| aamos-incidents | 3303 | ✅ Kör | Support/Incidenter |
| aamos-zoomer | 3304 | ✅ Kör | Zoomer-hantering |
| aamos-payroll | 3305 | ✅ Kör | Lön |
| aamos-venture | 3306 | ✅ Kör | Venture/Investeringar |
| aamos-meetings | 3309 | ✅ Kör | Möten |
| aamos-ads | ? | ✅ Kör | Annonser |
| aamos-talent | ? | ✅ Kör | Rekrytering |
### Befintliga Node.js-servrar
| Tjänst | Port | Status | Användning |
|--------|------|--------|------------|
| aamos-ledger-rust | 3250 | ✅ Kör | Bokföring (Rust) |
| ouroboros-identity | ? | ✅ Kör | Identitet/Auth |
| ai-gateway | ? | ✅ Kör | AI-gateway |
| quixzoom-mission | ? | ✅ Kör | Mission-hantering |
---
## Plan: LandveX Master Backend
### Steg 1: Unified Gateway
**Mål:** Ett entry point för alla LandveX-tjänster
```
Internet
https://api.landvex.com
Nginx (SSL termination)
LandveX Gateway (Node.js/Go)
├─> Intelligence Lab (port 3002)
├─> AAMOS CRM (port 3301)
├─> AAMOS Incidents (port 3303)
├─> AAMOS Billing (port 3305)
├─> AMOS Financial (port 3203)
├─> AMOS Analytics (port 3211)
└─> aamos-ledger (port 3250)
```
### Steg 2: API-nyckelhantering
**Befintligt:** aamos-gateway (port 8080) har redan auth
**Återanvänd:**
- Kopiera auth-mekanismen från aamos-gateway
- Skapa API-nycklar per kund
- Rate limiting per nyckel
### Steg 3: Support/Ärenden
**Befintligt:** aamos-incidents (port 3303)
**Återanvänd:**
- Koppla supportärenden till missions
- Skapa ärenden automatiskt vid fel
- Dashboard för supportteam
### Steg 4: CRM-koppling
**Befintligt:** aamos-crm (port 3301)
**Återanvänd:**
- Kunder = CRM-kontakter
- Missioner = CRM-aktiviteter
- Decision Cases = CRM-opportunities
### Steg 5: Ekonomi/Avtal
**Befintligt:**
- billing-engine (fakturering)
- amos-financial (port 3203)
- aamos-payroll (port 3305)
- aamos-ledger (port 3250)
**Återanvänd:**
- Fakturera per mission
- Credits-system (vi har redan detta i domain!)
- Avtal = CRM-deals
### Steg 6: Pressmeddelanden
**Nytt:** Enkel CMS-tjänst
**Alternativ:**
- Återanvänd aamos-campaigns (port 3302)
- Eller bygg enkel Node.js-tjänst
---
## Implementationsplan
### Sprint 1: Gateway + Auth
- [ ] Bygg LandveX Gateway (Node.js Express)
- [ ] Kopiera auth från aamos-gateway
- [ ] API-nyckelhantering
- [ ] Rate limiting
### Sprint 2: Support + CRM
- [ ] Koppla aamos-incidents
- [ ] Koppla aamos-crm
- [ ] Dashboard för support
### Sprint 3: Ekonomi
- [ ] Koppla billing-engine
- [ ] Credits-system
- [ ] Fakturering per mission
### Sprint 4: Press + SLA
- [ ] Pressmeddelanden (CMS)
- [ ] SLA-monitorering
- [ ] Health checks för alla tjänster
---
## Teknisk Stack
| Komponent | Teknik | Status |
|-----------|--------|--------|
| Gateway | Node.js Express | Ny |
| Auth | JWT (från aamos-gateway) | Återanvänd |
| CRM | aamos-crm (Go) | ✅ Befintlig |
| Support | aamos-incidents (Go) | ✅ Befintlig |
| Billing | billing-engine (Rust) | ✅ Befintlig |
| Ekonomi | amos-financial (Rust) | ✅ Befintlig |
| Lön | aamos-payroll (Go) | ✅ Befintlig |
| Bokföring | aamos-ledger (Rust) | ✅ Befintlig |
| Analytics | amos-analytics (Rust) | ✅ Befintlig |
| Press | aamos-campaigns (Go) | ✅ Befintlig |
---
## Nästa steg
1. **Bygg LandveX Gateway** — koppla alla befintliga tjänster
2. **Testa auth** — API-nycklar från aamos-gateway
3. **Dashboard** — en sida med alla tjänsters status
**Vi har redan 90% av kodbasen!**
+179
View File
@@ -0,0 +1,179 @@
# 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.
+143
View File
@@ -0,0 +1,143 @@
# Master Backend v2.0 — Full Integration Plan
> **VI HAR REDAN ALLT!** 🎉
---
## Befintlig Infrastruktur (Upptäckt)
### CRM & Sälj (Apollo.io)
| Komponent | Teknik | Status | Port |
|-----------|--------|--------|------|
| Apollo.io integration | Node.js/Express | ✅ Kör | `/api/apollo` |
| Kontaktsökning | Apollo API | ✅ | `/contacts/search` |
| Företagssökning | Apollo API | ✅ | `/companies/search` |
| Sequences (automation) | PostgreSQL | ✅ | `/sequences` |
| Pipeline | PostgreSQL | ✅ | `/pipeline` |
### Ekonomi & Fakturering
| Komponent | Teknik | Status | Port |
|-----------|--------|--------|------|
| billing-engine | Rust | ✅ Kör | ? |
| amos-financial | Rust | ✅ Kör | 3203 |
| aamos-payroll | Go | ✅ Kör | 3305 |
| aamos-ledger | Rust | ✅ Kör | 3250 |
### Support & Ärenden
| Komponent | Teknik | Status | Port |
|-----------|--------|--------|------|
| aamos-incidents | Go | ✅ Kör | 3303 |
| amos-analytics | Rust | ✅ Kör | 3211 |
### Gateway & Auth
| Komponent | Teknik | Status | Port |
|-----------|--------|--------|------|
| aamos-gateway | Go | ✅ Kör | 8080 |
| amos-gateway | Rust | ✅ Kör | 3206 |
---
## Plan: LandveX Master Backend
### Arkitektur
```
Internet
https://api.landvex.com
Nginx (SSL + rate limiting)
LandveX Gateway (Node.js/Express)
├─> Intelligence Lab (3002) — Pilot/Mission/Artifact
├─> Apollo CRM (/api/apollo) — Kontakter/Pipeline
├─> Billing Engine — Fakturering/Stripe
├─> aamos-ledger (3250) — Bokföring
├─> aamos-incidents (3303) — Supportärenden
├─> amos-analytics (3211) — Rapporter
└─> Auth Service — API-nycklar/JWT
```
### Stripe + Faktura
**Stripe:**
- Kundregistrering
- Subscription-hantering
- Automatisk fakturering
- Webhook-hantering
**Faktura till myndigheter:**
- PDF-generering
- PEPPOL-integration
- OCR-referens
- Påminnelser
### API-nycklar
- Per-kund-nycklar
- Rate limiting per nyckel
- Usage tracking
- Roteringspolicy
### Pressmeddelanden
- CMS för press
- Publiceringsflöde
- RSS-feed
- Social sharing
---
## Implementationsplan
### Sprint 1: Gateway + Auth (Denna vecka)
- [ ] LandveX Gateway (Node.js)
- [ ] Koppla Apollo CRM
- [ ] API-nyckelhantering
- [ ] JWT auth
### Sprint 2: Stripe + Faktura (Nästa vecka)
- [ ] Stripe integration
- [ ] Faktura-PDF
- [ ] Myndighetsfaktura
- [ ] Påminnelser
### Sprint 3: Support + SLA (Vecka 3)
- [ ] Koppla aamos-incidents
- [ ] SLA-monitorering
- [ ] Automatiska ärenden
- [ ] Dashboard
### Sprint 4: Press + Analytics (Vecka 4)
- [ ] Press-CMS
- [ ] Rapporter
- [ ] Factory Metrics
- [ ] Health checks
---
## Teknisk Stack
| Lager | Teknik |
|-------|--------|
| Gateway | Node.js Express |
| Auth | JWT + API-nycklar |
| CRM | Apollo.io (befintlig) |
| Billing | Stripe + Rust |
| Bokföring | aamos-ledger (Rust) |
| Support | aamos-incidents (Go) |
| Analytics | amos-analytics (Rust) |
| DB | PostgreSQL |
| Cache | Redis |
| Queue | Redis/RabbitMQ |
---
## Nästa steg
1. **Bygg LandveX Gateway** — koppla alla tjänster
2. **Stripe integration** — betalningar
3. **Faktura** — PDF + myndigheter
**Vi har redan 95% av kodbasen!**