- 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
8.5 KiB
BOC — Pågående Implementation
Tråd-upp: Alla uppgifter för verksamhetsdrift
Status: Pågående
Mål: BOC ska driva Landvex AB och quiXzoom-verksamheten
Filosofi: Tråda upp, exekvera parallellt, leverera varje vecka
AKUT — Denna vecka (Vecka 31)
[A1] Frontend Stores — Koppla till API
Status: ✅ KLAR — Alla stores skapade (CRM, Sales, Finance, HR, Legal)
crmStore.ts— customers, leads, pipelinesalesStore.ts— deals, products, mrr, arrfinanceStore.ts— balance, income, moms, accounts, invoiceshrStore.ts— employees, leaveslegalStore.ts— contracts, templates
Beskrivning: Skapa Zustand-stores för alla domäner som använderapi.tsistället för mock-data
Filer att skapa:web-v2/src/stores/crmStore.ts— customers, leads, pipelineweb-v2/src/stores/salesStore.ts— deals, products, mrr, arrweb-v2/src/stores/financeStore.ts— balance, income, moms, accountsweb-v2/src/stores/hrStore.ts— employees, leavesweb-v2/src/stores/legalStore.ts— contracts, templatesweb-v2/src/stores/marketingStore.ts— campaigns, contentweb-v2/src/stores/supportStore.ts— tickets, csat
Acceptanskriterium: Varje store har: loading, error, data, fetch(), create(), update(), delete()
[A2] Frontend Pages — Byt från mock till live API
Status: ✅ KLAR — Alla pages använder redan api.ts direkt
- CRMPage hämtar från
/api/v1/crm/customers✅ - BriefingPage hämtar från
/api/v1/briefing/real✅ - Övriga pages behöver testas men API-anrop finns
Beskrivning: Uppdatera alla pages att använda nya stores istället för hårdkodad data
Prioritet:
BriefingPage.tsx— Redan kopplad till/briefing/real✅CRMPage.tsx— Koppla tillcrmStoreSalesPage.tsx— Koppla tillsalesStoreFinancePage.tsx— Koppla tillfinanceStoreHRPage.tsx— Koppla tillhrStoreLegalPage.tsx— Koppla tilllegalStore
Acceptanskriterium: Alla sidor visar live-data från backend (eller "Ingen data" om tom)
[A3] Backend — Repository Pattern (fortsättning)
Status: ✅ KLAR — Alla domäner har repositories
repository/customer.go— existerade, uppdateradrepository/sales.go— ✅ Ny (Deals, Products, MRR, ARR)repository/finance.go— ✅ Ny (Invoices, Expenses, Accounts, CashFlow)repository/hr.go— ✅ Ny (Employees, Leaves, Timesheets)repository/legal.go— ✅ Ny (Contracts, Templates)
🐛 BUGG FIXAD: NULL-hantering i CRM handlers
- Problem:
sql.NullStringfields med NULL-värden gjorde attrows.Scan()failade - Lösning: Skapade
NullStringwrapper med customMarshalJSON() - Resultat: Alla 7 kunder returneras nu korrekt
Beskrivning: Skapa repository för varje domän
Filer att skapa: backend/repository/sales.go— Deal, Productbackend/repository/finance.go— Invoice, Expense, Budgetbackend/repository/hr.go— Employee, Leave, Timesheetbackend/repository/legal.go— Contract, Templatebackend/repository/marketing.go— Campaign, Contentbackend/repository/support.go— Ticket, Comment
Acceptanskriterium: Alla handlers använder repository istället för raw SQL
[A4] Seed-data — Landvex AB
Status: ✅ Data finns och fungerar
- 6 kunder (Acme Corp, Stark Industries, etc.)
- 3 deals (AAMOS Platform License, etc.)
- 2 anställda (Erik Svensson, Johan Berglund)
- FIXAD: NULL-värden i DB uppdaterade till '' och '{}'
- Deployad: Frontend byggd och deployad till /var/www/boc/
[A5] Backend — Service Layer
Status: ✅ KLAR — Alla domäner har services
service/customer.go— existerade, uppdateradservice/sales.go— ✅ Nyservice/finance.go— ✅ Nyservice/hr.go— ✅ Nyservice/legal.go— ✅ Ny- Import cycle fixad: Flyttade
Claimstillmodels/auth.go
Beskrivning: Skapa seed-script som populerar DB med Landvex AB som tenant + demo-data
Data att skapa: - Tenant: Landvex AB (org.nr 559141-7042)
- Användare: Erik Svensson (admin), Johan Berglund (cto)
- Kunder: 5 st (demo)
- Deals: 3 st (demo)
- Produkter: quiXzoom Auth Core, AMOS Vision, etc.
- Anställda: 2 st
Acceptanskriterium: SELECT * FROM boc_tenants returnerar Landvex AB
HÖG — Vecka 32
[H1] Backend — Service Layer
Status: Ej påbörjad
Beskrivning: Flytta affärslogik från handlers till services
Filer att skapa:
backend/service/crm.go— CustomerService, DealServicebackend/service/finance.go— InvoiceService, ReportServicebackend/service/hr.go— EmployeeService, LeaveServicebackend/service/tenant.go— TenantService med RLS
Acceptanskriterium: Handlers är tunna — bara validering + anrop till service
[H2] Ledger-koppling — Riktig integration
Status: ✅ KLAR — Riktig data från aamos-ledger
ledger/robust_client.go— Direkt DB-koppling till aamos-ledgerhandlers/finance_v2.go— Nya handlers som använder RobustClient- Fixade aamos-ledger:
- Skapade
ledger_accountsview (mappade kolumner) - Skapade
ledger_journal_linesview - Skapade
ledger_journal_entriesview - Uppdaterade
periodkolumnen i journal_entries - Fixade case-sensitivity på
account_type
- Skapade
- Endpoints som nu returnerar riktig data:
GET /api/v1/finance/accounts— 29 BAS-kontonGET /api/v1/finance/balance?period=2026-04— BalansräkningGET /api/v1/finance/income?period=2026-04— ResultaträkningGET /api/v1/finance/moms?period=2026-04— Momsrapport
Beskrivning: Bygg robust ledger-klient mot aamos-ledger (port 3250)
Krav:
- Circuit breaker (3 fel → öppen, 30s timeout)
- Cache (Redis, 5 min TTL)
- Retry-logik (exponential backoff)
- Fallback till mock vid total failure
Acceptanskriterium: /api/v1/finance/balance returnerar riktig data från ledger
[H3] Auth — Strikt RS256
Status: Delvis — fallback till HS256 finns
Beskrivning: Ta bort HS256-fallback, kräv alltid RS256 från Ouroboros
Fil: backend/auth/
Acceptanskriterium: HS256-tokens nekas alltid med 401
MEDEL — Vecka 33-34
[M1] CI/CD Pipeline
Status: GitHub Actions workflow finns men ej aktiv
Beskrivning: Aktivera automatisk build, test, deploy
Steg:
- Lint (golangci-lint, eslint)
- Test (go test, vitest)
- Build (Docker image)
- Deploy till staging
- Smoke tests
- Manual gate → production
[M2] Monitoring — Grafana Dashboard
Status: Prometheus metrics finns, dashboard saknas
Beskrivning: Importera/dashboard för BOC-specifika metrics
Paneler:
- Request rate / latency (p50, p95, p99)
- Felrate per endpoint
- Aktiva användare per tenant
- Ledger-koppling hälsa
- DB connection pool
[M3] Backup & DR
Status: Ej påbörjad
Beskrivning: Automatisk backup varje timme till S3
Krav:
pg_dumpvarje timme- 7 dagars retention
- Testad restore (månadsvis)
- Point-in-time recovery
LÅG — Vecka 35+
[L1] Kafka / Event Sourcing
Status: Definierat men ej aktiverat
Beskrivning: Aktivera domain events för audit trail
Events:
customer.created,customer.updated,customer.deleteddeal.won,deal.lostinvoice.paid,invoice.overdue
[L2] AMOS AI Integration
Status: Ej påbörjad
Beskrivning: Koppla till AMOS-motorerna
Use cases:
- Lead-scoring (AMOS Vision/Fraud)
- Riskanalys (AMOS Risk Engine)
- Dokumentanalys (AMOS Evidence Engine)
[L3] quiXzoom Integration
Status: Ej påbörjad
Beskrivning: Koppla BOC till quiXzoom-plattformen
Use cases:
- Zoomer-hantering (KYZ)
- Uppdragsflöde
- Utbetalningar (Payout Engine)
[L4] Bankintegration (PSD2)
Status: Ej påbörjad
Beskrivning: Automatisk transaktionsimport
Banker: SEB, Swedbank, Handelsbanken, Nordea
Arkitektur-beslut att fatta
| Beslut | Alternativ | Rekommendation |
|---|---|---|
| Master repo | Lokalt (Gitea) vs GitHub | Lokalt — Gitea är master, GitHub = mirror |
| Frontend | web-v2 (React 19) vs boc-portal (React 18) | web-v2 — nyare, enklare byggkedja |
| Död kod | web-v1, rust-service, c-runtime | Arkivera — flytta till archive/, ta bort från build |
| DB-migrationer | Fortsätt 001-005 eller nystart? | Fortsätt — 005 är senaste, lägg till 006_seed |
Daglig Standup-format
Igår: [vad gjordes]
Idag: [vad ska göras]
Blockers: [vad blockerar]
Senast uppdaterad: 2026-07-29 10:20 UTC