feat: integrate Grafana dashboards into BOC DashboardPage
- Add Infrastructure Health section with CPU/Memory/Disk panels - Add Service Status section with PM2/Docker panels - Create GrafanaPanel component for iframe embedding - Build passes successfully
This commit is contained in:
@@ -0,0 +1,315 @@
|
||||
# BOC Funktionalitetsaudit
|
||||
## Business Operations Center — Verksamhetsgranskning
|
||||
|
||||
> **Datum:** 2026-07-29
|
||||
> **Auditor:** Bernt
|
||||
> **System:** boc.aamos.systems (port 9094)
|
||||
> **Status:** Aktiv drift, Torvalds-sprint klar, Uber-härdning pågår
|
||||
|
||||
---
|
||||
|
||||
## Sammanfattning
|
||||
|
||||
BOC är ett ambitiöst verksamhetssystem med **106 API-endpoints** fördelade över **12 domäner**. Systemet är tekniskt körbart men har **kritiska arkitektoniska brister** som blockerar verksamhetsdrift på riktigt. Frontend och backend är **delvis kopplade** men databasen är **tom** — inga riktiga affärsprocesser kan drivas.
|
||||
|
||||
**Verdict:** BOC är en **funktionell prototyp**, inte ett produktionsklart verksamhetssystem.
|
||||
|
||||
---
|
||||
|
||||
## 1. Nuvarande Funktionalitet (Per Modul)
|
||||
|
||||
### 1.1 CRM (Kundrelationer)
|
||||
| Feature | Status | Kommentar |
|
||||
|---------|--------|-----------|
|
||||
| Kundregister | ✅ API finns | CRUD komplett, men 0 kunder i DB |
|
||||
| Kontaktpersoner | ✅ API finns | Kopplade till kund |
|
||||
| Interaktionslogg | ✅ API finns | Samtal, mail, möten, anteckningar |
|
||||
| Pipeline / Leads | ✅ API finns | Status: lead → prospect → customer |
|
||||
| Tilldelning | ✅ API finns | Användare kan tilldelas kund |
|
||||
| **Gap:** Automatisk lead-import | ❌ Saknas | Ingen koppling till quiXzoom/AMOS |
|
||||
| **Gap:** Lead-scoring | ❌ Saknas | Ingen AI-baserad prioritering |
|
||||
|
||||
### 1.2 Sales (Försäljning)
|
||||
| Feature | Status | Kommentar |
|
||||
|---------|--------|-----------|
|
||||
| Deals / Affärer | ✅ API finns | Värde, sannolikhet, förväntat avslut |
|
||||
| Offert → Order | ✅ API finns | 002-migration har quotes + orders |
|
||||
| Produkter | ✅ API finns | Pris, beskrivning |
|
||||
| MRR/ARR | ✅ API finns | Beräknat från deals |
|
||||
| **Gap:** Fakturering | ⚠️ Delvis | Invoices finns men ej kopplade till ledger |
|
||||
| **Gap:** Betalningspåminnelser | ❌ Saknas | |
|
||||
| **Gap:** Återkommande intäkter | ❌ Saknas | Subscription-plans finns i schema men ej aktivt |
|
||||
|
||||
### 1.3 Finance (Ekonomi)
|
||||
| Feature | Status | Kommentar |
|
||||
|---------|--------|-----------|
|
||||
| Balansräkning | ✅ API finns | Proxy till ledger (mock-fallback) |
|
||||
| Resultaträkning | ✅ API finns | Proxy till ledger |
|
||||
| Momsrapport | ✅ API finns | Proxy till ledger |
|
||||
| Kontoplan | ✅ API finns | BAS-konton från ledger |
|
||||
| Utgifter | ✅ API finns | Create + List |
|
||||
| Budget | ✅ API finns | Enkel budget vs utfall |
|
||||
| Kassaflöde | ✅ API finns | |
|
||||
| **Gap:** Riktig ledger-koppling | ❌ **KRITISKT** | All finance är mock eller proxy |
|
||||
| **Gap:** Bankintegration (PSD2) | ❌ Saknas | Ingen automatisk transaktionsimport |
|
||||
| **Gap:** SIE4 export | ❌ Saknas | Migration har import_sie4.sql men ej export |
|
||||
| **Gap:** Periodisering | ❌ Saknas | |
|
||||
|
||||
### 1.4 HR (Personal)
|
||||
| Feature | Status | Kommentar |
|
||||
|---------|--------|-----------|
|
||||
| Anställdaregister | ✅ API finns | CRUD komplett |
|
||||
| Frånvaro / Ledighet | ✅ API finns | Ansökan, godkännande |
|
||||
| Tidrapport | ✅ API finns | Timmar per projekt |
|
||||
| **Gap:** Löneutbetalning | ❌ Saknas | Ingen koppling till payroll-system |
|
||||
| **Gap:** Kompetensmatris | ⚠️ Delvis | API finns men ej komplett |
|
||||
| **Gap:** Prestandagranskning | ⚠️ Delvis | API finns men ej komplett |
|
||||
|
||||
### 1.5 Legal (Avtal)
|
||||
| Feature | Status | Kommentar |
|
||||
|---------|--------|-----------|
|
||||
| Avtalsregister | ✅ API finns | CRUD + mallar |
|
||||
| Påminnelser | ✅ API finns | Förnyelse-datum |
|
||||
| Produkt-koppling | ✅ API finns | Avtal kopplade till produkter |
|
||||
| **Gap:** E-signering | ❌ Saknas | Ingen integration med BankID/Adobe Sign |
|
||||
| **Gap:** GDPR-radering | ❌ Saknas | Ingen automatisk datarensning |
|
||||
|
||||
### 1.6 Marketing (Marknadsföring)
|
||||
| Feature | Status | Kommentar |
|
||||
|---------|--------|-----------|
|
||||
| Kampanjer | ✅ API finns | Enkel kampanjhantering |
|
||||
| Innehåll | ✅ API finns | Content-kalender |
|
||||
| **Gap:** Email-automation | ❌ Saknas | Ingen koppling till Resend/Mailchimp |
|
||||
| **Gap:** Social media | ❌ Saknas | |
|
||||
| **Gap:** ROI-tracking | ❌ Saknas | |
|
||||
|
||||
### 1.7 Support (Kundtjänst)
|
||||
| Feature | Status | Kommentar |
|
||||
|---------|--------|-----------|
|
||||
| Ärenden (Tickets) | ✅ API finns | CRUD + kommentarer |
|
||||
| CSAT | ✅ API finns | Kundnöjdhet |
|
||||
| **Gap:** SLA-tracking | ❌ Saknas | Ingen övervakning av responstider |
|
||||
| **Gap:** Kunskapsbas | ❌ Saknas | |
|
||||
| **Gap:** Chat-integration | ❌ Saknas | |
|
||||
|
||||
### 1.8 Automation (Automatisering)
|
||||
| Feature | Status | Kommentar |
|
||||
|---------|--------|-----------|
|
||||
| Workflows | ✅ API finns | Definierade men ej aktiva |
|
||||
| Schemalagda jobb | ✅ API finns | Cron-liknande |
|
||||
| **Gap:** Verklig automation | ❌ Saknas | Workflows triggar inga actions |
|
||||
|
||||
### 1.9 Analytics (Analys)
|
||||
| Feature | Status | Kommentar |
|
||||
|---------|--------|-----------|
|
||||
| Dashboard | ✅ API finns | KPI:er |
|
||||
| Aktiva användare | ✅ API finns | |
|
||||
| Intäktsanalys | ✅ API finns | |
|
||||
| **Gap:** Prediktion | ❌ Saknas | Ingen AMOS AI-koppling |
|
||||
| **Gap:** Custom rapporter | ❌ Saknas | |
|
||||
|
||||
### 1.10 Briefing (Daglig översikt)
|
||||
| Feature | Status | Kommentar |
|
||||
|---------|--------|-----------|
|
||||
| Daglig briefing | ✅ API finns | Prioriteringar, rekommendationer |
|
||||
| "Real briefing" | ✅ API finns | Live-data från systemet |
|
||||
| Larm | ✅ API finns | |
|
||||
| Arbetsplan | ✅ API finns | |
|
||||
|
||||
### 1.11 Journal (Bokföring)
|
||||
| Feature | Status | Kommentar |
|
||||
|---------|--------|-----------|
|
||||
| Verifikationslista | ✅ API finns | Journal entries |
|
||||
| Kontodrill-down | ✅ API finns | Transaktioner per konto |
|
||||
| **Gap:** Riktig bokföring | ❌ **KRITISKT** | Allt är mock-data |
|
||||
|
||||
### 1.12 Tenant / Multi-tenancy
|
||||
| Feature | Status | Kommentar |
|
||||
|---------|--------|-----------|
|
||||
| Tenant-hantering | ✅ API finns | CRUD + hierarki |
|
||||
| Tenant-switch | ✅ API finns | |
|
||||
| **Gap:** RLS (Row Level Security) | ⚠️ Delvis | Schema har tenant_id men RLS ej aktiverat |
|
||||
|
||||
---
|
||||
|
||||
## 2. Teknisk Skuld (Blockerare)
|
||||
|
||||
### 🔴 KRITISKT — Måste åtgärdas innan produktion
|
||||
|
||||
| # | Problem | Impact | Åtgärd |
|
||||
|---|---------|--------|--------|
|
||||
| 1 | **Ingen riktig data** — DB är tom | Systemet kan inte driva verksamhet | Seed-data + migrera från befintliga system |
|
||||
| 2 | **Ledger = mock/proxy** | All ekonomi är fejk | Bygg riktig ledger-klient med circuit breaker |
|
||||
| 3 | **Monolit-arkitektur** — 15K rader i main.go | Ounderhållbart, ingen testbarhet | Clean Architecture (plan finns) |
|
||||
| 4 | **Ingen service layer** — Affärslogik i handlers | Duplicerad kod, ingen transaktionssäkerhet | Domain-driven services |
|
||||
| 5 | **Repository pattern — bara Customer** | Alla andra moduler använder raw SQL i handlers | Implementera för alla domäner |
|
||||
| 6 | **Frontend/backend osynk** — web-v2 ej kopplad till API | Statisk data, ingen verklig drift | API-repository pattern i React |
|
||||
| 7 | **0% test coverage** (förutom CRM) | Regressioner garanterade | Enhet + integrationstester |
|
||||
|
||||
### 🟡 HÖG — Bör åtgärdas inom 30 dagar
|
||||
|
||||
| # | Problem | Impact | Åtgärd |
|
||||
|---|---------|--------|--------|
|
||||
| 8 | **Auth — fallback till HS256** | Säkerhetsrisk | Strikt RS256, neka HS256 |
|
||||
| 9 | **Ingen CI/CD** | Manuella fel | GitHub Actions (plan finns) |
|
||||
| 10 | **Ingen backup-strategi** | Dataförlust-risk | Automatisk pg_dump + S3 |
|
||||
| 11 | **Rust-service + C-runtime — inaktiva** | Död kod | Aktivera eller ta bort |
|
||||
| 12 | **web-v1 (Next.js) + web-v2 (Vite)** — två frontends | Förvirring, dubbel arbete | Välj en, arkivera andra |
|
||||
|
||||
### 🟢 MEDEL — Bör åtgärdas inom 90 dagar
|
||||
|
||||
| # | Problem | Impact | Åtgärd |
|
||||
|---|---------|--------|--------|
|
||||
| 13 | **Ingen Kafka/event sourcing** | Audit trail saknas | Aktivera EVENT_CATALOG |
|
||||
| 14 | **Grafana dashboard ej importerad** | Blind drift | Importera dashboard |
|
||||
| 15 | **Ingen rate limiting per tenant** | Resursöverbrukning | Tenant-baserade quotas |
|
||||
| 16 | **Ingen dataretention-policy** | GDPR-risk | Automatisk radering |
|
||||
|
||||
---
|
||||
|
||||
## 3. Verksamhetsgaps — Vad Behövs för att Driva Landvex
|
||||
|
||||
### 3.1 Landvex AB (Svenskt bolag)
|
||||
| Process | BOC-stöd | Gap |
|
||||
|---------|----------|-----|
|
||||
| Bokföring (BAS-konton, SIE4) | ⚠️ Mock | **KRITISKT:** Koppla till aamos-ledger |
|
||||
| Momsredovisning | ⚠️ Mock | **KRITISKT:** Riktig momsberäkning |
|
||||
| Löner | ❌ Saknas | Integration med lönesystem |
|
||||
| Fakturering | ⚠️ Delvis | Koppla till ledger + påminnelser |
|
||||
| Leverantörsfakturor | ✅ API finns | Men ej kopplad till betalning |
|
||||
| Årsredovisning | ❌ Saknas | Export till SIE4 + PDF |
|
||||
|
||||
### 3.2 quiXzoom (Plattform)
|
||||
| Process | BOC-stöd | Gap |
|
||||
|---------|----------|-----|
|
||||
| Zoomer-hantering | ❌ Saknas | quiXzoom-integration |
|
||||
| Uppdragsflöde | ❌ Saknas | Mission-API koppling |
|
||||
| Utbetalningar | ❌ Saknas | Payout Engine integration |
|
||||
| KYZ-verifiering | ❌ Saknas | Identity-koppling |
|
||||
|
||||
### 3.3 AMOS (AI-plattform)
|
||||
| Process | BOC-stöd | Gap |
|
||||
|---------|----------|-----|
|
||||
| Lead-scoring | ❌ Saknas | AMOS Vision/Fraud |
|
||||
| Riskanalys | ❌ Saknas | AMOS Risk Engine |
|
||||
| Dokumentanalys | ❌ Saknas | AMOS Evidence Engine |
|
||||
|
||||
---
|
||||
|
||||
## 4. Frontend-granskning
|
||||
|
||||
### web-v2 (Aktiv — React 19 + Vite)
|
||||
| Sida | Status | Koppling till API |
|
||||
|------|--------|-------------------|
|
||||
| Login | ✅ | Mock-auth (ej RS256) |
|
||||
| Briefing | ✅ | `/api/v1/briefing/real` — fungerar |
|
||||
| Dashboard | ⚠️ | Statisk data |
|
||||
| CRM | ⚠️ | Mock-data (ej kopplad till `/api/v1/crm/customers`) |
|
||||
| Sales | ⚠️ | Mock-data |
|
||||
| Finance | ⚠️ | Mock-data |
|
||||
| HR | ⚠️ | Mock-data |
|
||||
| Legal | ⚠️ | Mock-data |
|
||||
| Marketing | ⚠️ | Mock-data |
|
||||
| Support | ⚠️ | Mock-data |
|
||||
| Automation | ⚠️ | Mock-data |
|
||||
| Profile | ⚠️ | Mock-data |
|
||||
|
||||
**Problem:** Frontend använder `useMockStore` — byt till `useApiStore` för live-data.
|
||||
|
||||
### web-v1 (Next.js — Arkiverad?)
|
||||
- Deployad till `/var/www/boc/` (nginx root)
|
||||
- Innehåller dashboard, login, osv.
|
||||
- **Troligen föråldrad** — bör tas bort
|
||||
|
||||
---
|
||||
|
||||
## 5. Rekommendationer — Prioritering
|
||||
|
||||
### Fas 0: Stoppa Blödningen (Denna vecka)
|
||||
1. **Bestäm master-repo:** Lokalt vs GitHub (`wolfoftyreso-debug/-landvex-boc`)
|
||||
2. **Välj frontend:** `web-v2` (React 19) eller `boc-portal` (React 18, mer komplett)
|
||||
3. **Rensa död kod:** Ta bort web-v1, Rust-service (om inaktiv), C-runtime
|
||||
4. **Seed-data:** Ladda in Landvex AB som tenant + demo-data
|
||||
|
||||
### Fas 1: Foundation (Vecka 1-2)
|
||||
1. **Clean Architecture** — Refactor enligt BOC_IMPLEMENTATION_PLAN.md
|
||||
2. **Repository pattern** — Alla domäner
|
||||
3. **Service layer** — Transaktionssäkerhet
|
||||
4. **Tester >80%** — Enhet + integration
|
||||
|
||||
### Fas 2: Koppla Ekonomin (Vecka 3-4)
|
||||
1. **Riktig ledger-klient** — Circuit breaker, cache, retry
|
||||
2. **BAS-konton** — Från aamos-ledger (port 3250)
|
||||
3. **SIE4 import/export** — För årsredovisning
|
||||
4. **Bankintegration** — PSD2/Open Banking
|
||||
|
||||
### Fas 3: Koppla Frontend (Vecka 5)
|
||||
1. **API-repository pattern** — React → Backend
|
||||
2. **Auth-flöde** — RS256 via Ouroboros
|
||||
3. **Real-time** — WebSocket för updates
|
||||
|
||||
### Fas 4: Integrationer (Vecka 6-8)
|
||||
1. **quiXzoom** — Zoomer-hantering, uppdrag
|
||||
2. **AMOS AI** — Lead-scoring, riskanalys
|
||||
3. **Email/SMS** — Resend/Twilio
|
||||
4. **Fortnox/Visma** — För kunder som kräver det
|
||||
|
||||
### Fas 5: Produktion (Vecka 9-10)
|
||||
1. **CI/CD** — GitHub Actions
|
||||
2. **Monitoring** — Grafana dashboard
|
||||
3. **Backup/DR** — Automatisk + testad restore
|
||||
4. **Security audit** — gosec, trivy
|
||||
|
||||
---
|
||||
|
||||
## 6. Risker
|
||||
|
||||
| Risk | Sannolikhet | Impact | Mitigering |
|
||||
|------|------------|--------|------------|
|
||||
| Ledger-API ändras | Medium | High | Circuit breaker, versionering |
|
||||
| Team tappar fokus | High | Medium | Fasindelning, veckoleveranser |
|
||||
| Dataförlust vid migration | Low | Critical | Backup innan varje steg |
|
||||
| Frontend/backend osynk | Medium | Medium | OpenAPI-kontrakt |
|
||||
| Performance vid skalning | Medium | High | CQRS, read replicas |
|
||||
|
||||
---
|
||||
|
||||
## 7. Mätetal (KPI:er för BOC)
|
||||
|
||||
| Mått | Nuvarande | Mål |
|
||||
|------|-----------|-----|
|
||||
| API-endpoints | 106 | 150+ (färdiga integrationer) |
|
||||
| Test coverage | ~5% | >80% |
|
||||
| Frontend-API koppling | ~10% | 100% |
|
||||
| Riktig data i DB | 0% | 100% |
|
||||
| Ledger-integration | Mock | Riktig |
|
||||
| CI/CD | Manuell | Automatisk |
|
||||
| Uptime | 99% | 99.9% |
|
||||
|
||||
---
|
||||
|
||||
## Bilaga: Filstruktur
|
||||
|
||||
```
|
||||
boc/
|
||||
├── backend/ # Go-monolit (15K rader)
|
||||
│ ├── handlers/ # 34 handlers (6664 rader)
|
||||
│ ├── models/ # 1 fil (2891 rader) — för tunn
|
||||
│ ├── repository/ # 1 fil (customer.go) — för få
|
||||
│ ├── service/ # 1 fil (customer.go) — för få
|
||||
│ └── main.go # 14K rader — för tjock
|
||||
├── web-v2/ # React 19 + Vite (aktiv utveckling)
|
||||
│ ├── src/pages/ # 12 sidor
|
||||
│ └── src/components/# UI-komponenter
|
||||
├── web-v1-backup/ # Next.js (föråldrad)
|
||||
├── web/ # Deployad till /var/www/boc (föråldrad)
|
||||
├── rust-service/ # Inaktiv
|
||||
├── c-runtime/ # Inaktiv
|
||||
├── db/ # 5 migrationer (69 tabeller)
|
||||
└── docs/ # Planer och specar
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*Audit genomförd: 2026-07-29 10:15 UTC*
|
||||
*Nästa steg: Beslut om Fas 0 (master-repo, frontend-val, rensning)*
|
||||
Reference in New Issue
Block a user