# BOC Produktionsklarhetsplan > Skapad: 2026-08-06 > Mål: Eliminera ALLT demo/mock/hårdkodat. Systemet ska vara redo för riktig drift. --- ## 🔴 KRITISKT - Blockerar produktion (Vecka 1) ### 1. Autentisering & Säkerhet **Problem:** `authMiddleware := middleware.APIKeyAuth("")` accepterar ALLA tokens. **Åtgärder:** - [ ] Aktivera RS256 JWT-validering mot ouroboros-identity (port 3207) - [ ] Hämta JWKS från `http://localhost:3207/.well-known/jwks.json` - [ ] Ersätt `APIKeyAuth("")` med riktig JWT-middleware - [ ] Ta bort hardcoded user i `/auth/me` - [ ] Ta bort `debug/token` endpoint i produktion **Fil:** `backend/main.go` rad ~188 ### 2. CORS **Problem:** `middleware.CORS` tillåter `*` **Åtgärder:** - [ ] Begränsa CORS till specifika domäner: `boc.landvex.com`, `app.landvex.com` - [ ] Ta bort wildcard i produktion ### 3. Rate Limiting **Problem:** Ingen rate limiting - 20 requests på 1 sekund gick igenom. **Åtgärder:** - [ ] Lägg till `chi/middleware.Throttle` eller Redis-baserad rate limiter - [ ] Konfigurera: 100 req/min per IP, 1000 req/min per användare ### 4. HTTPS **Problem:** Server kör på HTTP port 9096. **Åtgärder:** - [ ] Konfigurera Traefik/Nginx reverse proxy med Let's Encrypt - [ ] Stäng av direkt HTTP-access utanför Docker-nätverket --- ## 🟡 HÖG PRIORITET - Demo/Mock-data (Vecka 2) ### 5. Ledger Integration (Bokföring) **Problem:** Fallback till mock-data när ledger inte svarar. **Åtgärder:** - [ ] Ta bort `handlers/ledger_mock.go` helt - [ ] Ersätt mock-fallback i `handlers/ledger.go` med riktiga DB-anrop - [ ] Implementera: `GetInvoices`, `GetCashflow`, `GetBudget`, `CreateExpense`, `ListExpenses` - [ ] Koppla `aamos-ledger` (port 3250) - seeda med BAS-konton **Filer:** `handlers/ledger.go`, `handlers/ledger_mock.go` ### 6. Mail Integration **Problem:** Returnerar demo-meddelanden när IMAP inte är konfigurerat. **Åtgärder:** - [ ] Ta bort demoMessages från `handlers/mail.go` - [ ] Returnera `{"error": "IMAP not configured"}` istället för demo-data - [ ] Implementera riktig IMAP-anslutning med konfigurerbara credentials **Fil:** `handlers/mail.go` rad ~57-99 ### 7. quiXzoom Integration **Problem:** Hårdkodade exempel-email och bild-URLs. **Åtgärder:** - [ ] Ersätt `anna.l@example.com`, `marcus.b@example.com` etc med riktiga DB-anrop - [ ] Ersätt `https://example.com/img1.jpg` med riktiga bild-URLs från S3/AMOS - [ ] Koppla mot quiXzoom Auth Core API (port 3207 eller separat tjänst) **Fil:** `handlers/quixzoom.go` ### 8. BankID / Signing **Problem:** Mock-token och fejkad QR-kod. **Åtgärder:** - [ ] Implementera riktig BankID-integration (test-produktion) - [ ] Ersätt `mock-token-12345` med riktig auto_start_token - [ ] Generera QR-kod dynamiskt **Fil:** `handlers/signing.go` rad ~129 ### 9. Payroll (Löneberäkning) **Problem:** "Simple Swedish tax calculation (placeholder)" **Åtgärder:** - [ ] Implementera riktig skatteberäkning med Skatteverkets tabeller - [ ] Hantera kommunalskatt, kyrkoavgift, jobbskatteavdrag - [ ] Integrera med Fortnox/Visma löneutbetalning **Fil:** `handlers/payroll.go` rad ~180 --- ## 🟠 MEDEL PRIORITET - Saknade integrationer (Vecka 3-4) ### 10. Visma Integration **Problem:** Mock-data när inte autentiserad. **Åtgärder:** - [ ] Implementera OAuth2-flöde mot Visma - [ ] Spara tokens krypterat i DB - [ ] Implementera voucher-sync **Fil:** `handlers/visma.go` rad ~229 ### 11. Stripe Integration **Problem:** Hårdkodade exempel-kunder. **Åtgärder:** - [ ] Koppla mot riktigt Stripe-konto - [ ] Implementera webhook-hantering - [ ] Hantera payouts och accounts dynamiskt **Fil:** `handlers/stripe.go` ### 12. Frontend - Login **Problem:** Default credentials `demo@aamos.systems` / `demo123` **Åtgärder:** - [ ] Ta bort default värden från `LoginPage.tsx` - [ ] Lägg till "Kom ihåg mig"-funktion **Fil:** `web-v2/src/pages/LoginPage.tsx` rad ~13-14 ### 13. Frontend - Mock Data **Problem:** `AccountDetailModal.tsx` har mock-transactions. **Åtgärder:** - [ ] Ersätt mockTransactions med API-anrop till `/api/v1/journal/accounts/{code}/transactions` **Fil:** `web-v2/src/components/AccountDetailModal.tsx` rad ~33 ### 14. Tenant / Multi-tenancy **Problem:** TODOs för behörighetsfiltrering och session-hantering. **Åtgärder:** - [ ] Implementera tenant-isolering i ALLA queries - [ ] Lägg till audit-log för tenant-byte - [ ] Filtrera data baserat på användarens tenant **Fil:** `handlers/tenant.go` --- ## 🟢 LÅG PRIORITET - Förbättringar (Vecka 5+) ### 15. Support / CSAT **Problem:** CSAT-beräkning är inte implementerad. **Fil:** `handlers/support.go` rad ~221 ### 16. Receipts OCR **Problem:** "TODO: Trigger async OCR processing" **Fil:** `handlers/receipts.go` rad ~92 ### 17. Profile Page **Problem:** "TODO: API call to save profile" **Fil:** `web-v2/src/pages/ProfilePage.tsx` rad ~82 ### 18. Frontend Build Warning **Problem:** Duplicate case clause i `CompliancePage.tsx` **Fil:** `web-v2/src/pages/CompliancePage.tsx` --- ## 📋 Sammanfattning | Kategori | Antal issues | Status | |----------|-------------|--------| | Kritiskt (säkerhet) | 4 | 🔴 Ej påbörjat | | Hög prio (mock/demo) | 5 | 🟡 Identifierat | | Medel prio (integrationer) | 5 | 🟠 Identifierat | | Låg prio (förbättringar) | 4 | 🟢 Identifierat | | **Totalt** | **18** | **0% klart** | --- ## 🚀 Nästa steg 1. **Börja med säkerheten** - Auth, CORS, rate limiting, HTTPS 2. **Sedan ledger** - Bokföring måste fungera för Landvex AB 3. **Sedan mail** - IMAP-integration för riktig kommunikation 4. **Sedan quiXzoom** - Koppla mot riktigt auth-system 5. **Till sist** - BankID, Stripe, Visma, Fortnox --- > **Viktigt:** Ingenting ska vara demo eller hårdkodat. Varje endpoint måste antingen: > 1. Anropa riktig databas/integration, ELLER > 2. Returnera tydligt felmeddelande om integration inte är konfigurerad > > Inga fejkade data. Inga exempel-email. Inga mock-tokens.