diff --git a/docs/HANDOFF.md b/docs/HANDOFF.md index 2d37b9b..ad5b9aa 100644 --- a/docs/HANDOFF.md +++ b/docs/HANDOFF.md @@ -1,20 +1,31 @@ # HANDOFF — Vauco OS -**Sist oppdatert:** 2026-06-12 16:16 CEST +**Sist oppdatert:** 2026-06-12 17:22 CEST **Skrevet av:** Perplexity (stand-in) via GitHub MCP -**Sprint:** Mappestruktur korrigert — main.py er hovudapp, opax-mcp/ er MCP-server +**Sprint:** CG5a · CG5b · CG5c · CG5-onboard · CG6 — alle levert og godkjent --- ## ✅ Gjort denne sesjonen (2026-06-12) -| Task | Detalj | -|------|--------| -| **MASTERPLAN seksjon 10** | Prismodell v2: Starter $499 / Guard $999 / Shield $1.999 / Enterprise $3.500+ | -| **Push-first arkitektur** | Delivery layer: CG5a webhook + CG5b e-post + CG5c SMS | -| **Mappestruktur korrigert** | Verifisert mot GitHub API — main.py er hovudapp, opax-mcp/ er MCP-mappa | -| **MASTERPLAN seksjon 4** | Korrekt repo-layout dokumentert med alle faktiske mapper | -| **Commits** | [`c312f4a`](https://github.com/vauco-saas/OSVauco/commit/c312f4a7274f65eb213477956854977df10d7a7a) + [`7aa7384`](https://github.com/vauco-saas/OSVauco/commit/7aa73842d46b2b65610358c0ff8e456b2189e7f4) | +| Commit | Task | Detalj | +|--------|------|--------| +| [`c312f4a`](https://github.com/vauco-saas/OSVauco/commit/c312f4a7274f65eb213477956854977df10d7a7a) | MASTERPLAN seksjon 10 | Prismodell v2: Starter $499 / Guard $999 / Shield $1.999 / Enterprise $3.500+ | +| [`7aa7384`](https://github.com/vauco-saas/OSVauco/commit/7aa73842d46b2b65610358c0ff8e456b2189e7f4) | MASTERPLAN seksjon 4 | Korrekt repo-layout dokumentert | +| [`50490b0`](https://github.com/vauco-saas/OSVauco/commit/50490b071d5b80252ea32e8db3226064ac9c80c0) | **CG5-onboard** `static/onboard.html` | 4-stegs onboarding-wizard (mørkt CostGuard-tema) | +| [`c3357d3`](https://github.com/vauco-saas/OSVauco/commit/c3357d38aa71f13dd06726800a2c57425d6bd1ac) | **CG5-onboard** `main.py` | `GET /onboard` (IAP-exempt) + `POST /onboard/complete` (Firestore + varsler) | +| [`5270166`](https://github.com/vauco-saas/OSVauco/commit/5270166ce13bdbea9e6009e5d1ce3529001afba6) | **CG6** `static/costguard-dashboard.html` | Klient-dashboard — billing summary, anomalier, modul-donut, delivery-kanaler | +| [`f7e64fc`](https://github.com/vauco-saas/OSVauco/commit/f7e64fcea07ea2b1f0c3c898bf798da49a7e2993) | **CG5c** `main.py` | `POST /notify/sms` — Twilio REST via httpx, Guard+-tier, 402 ved feil tier | + +### Notification-arkitektur (komplett) + +| Endepunkt | Metode | Kanal | Tier | +|-----------|--------|-------|------| +| `POST /notify/webhook` | CG5a | Slack / Teams / Chat / Discord / custom | Alle | +| `POST /notify/email` | CG5b | SendGrid digest | Alle | +| `POST /notify/sms` | CG5c | Twilio SMS — spike-varsler | Guard+ | + +**Merk:** `GET /onboard` er IAP-exempt — tilsiktet for nå, skal vurderes ved hardening. --- @@ -27,16 +38,21 @@ --- +## 🔴 Kjente OQ-er (Open Questions) + +| ID | Beskrivelse | Prioritet | +|----|-------------|-----------| +| **OQ-29** | `GET /notify/channels` mangler — ingen list-endepunkt for å hente konfigurerte delivery-kanaler per kunde | Lav / neste sprint | + +--- + ## 🔴 NOW — Neste oppgaver (prioritert) -| ID | Oppgave | Fil | Byggetid | -|----|---------|-----|----------| -| **CG5a** | `POST /notify/webhook` — Jason poster til Slack/Teams/Chat/Discord | `main.py` | 2–3t | -| **CG4d** | Prisingskalkulator — GCP-spend slider + tier + ROI | `static/opax.html` | 2t | -| **CG5b** | `POST /notify/email` — SendGrid digest | `main.py` | 2t | -| **CG5c** | `POST /notify/sms` — Twilio spikes [Guard+] | `main.py` | 2t | -| **CG5-onboard** | Klient-onboarding + kanal-oppsett | `main.py` + `static/` | 1–2d | -| **CG6** | Klient-dashboard `costguard.oss.vauco.no` | `static/` | 2–3d | +| ID | Oppgave | Status | +|----|---------|--------| +| **CG7** | Scope defineres av Chris — **ikke start uten direktiv** | ⏳ Venter på MASTERPLAN-definisjon | +| **OQ-29** | `GET /notify/channels` | Backlog | +| **ML-3a** | `docs/gemma/world.md` mangler — blokkerer Emma | Blokkert | --- @@ -49,10 +65,13 @@ | `main.py` | ✅ Hovudapp — alle ruter her | | `static/opax.html` | ✅ Live | | `static/jason.html` | ✅ Live | +| `static/onboard.html` | ✅ Live — CG5-onboard | +| `static/costguard-dashboard.html` | ✅ Live — CG6 | | `opax-mcp/` | ✅ MCP-server mappe | -| `POST /notify/webhook` | 🔴 CG5a — ikke bygget | -| `POST /notify/email` | 🔴 CG5b — ikke bygget | -| `POST /notify/sms` | 🔴 CG5c — ikke bygget | +| `POST /notify/webhook` | ✅ CG5a — levert | +| `POST /notify/email` | ✅ CG5b — levert | +| `POST /notify/sms` | ✅ CG5c — levert (Guard+) | +| `GET /notify/channels` | 🔴 OQ-29 — mangler | | `docs/gemma/world.md` | ❌ Mangler — blokkerer ML-3a | --- @@ -70,6 +89,7 @@ | MCP-server | `opax-mcp/` | | Static filer | `static/` | | Jason chat | `https://opax.vauco.no/static/jason.html` | +| Onboarding | `https://opax.vauco.no/onboard` | | LB IP | `34.98.77.173` | | Repo | `vauco-saas/OSVauco` | | Eier | `chris.christiansen@vauco.no` | @@ -78,6 +98,16 @@ --- +## Env-vars påkrevd (CG5c) + +``` +TWILIO_ACCOUNT_SID=ACxxxx +TWILIO_AUTH_TOKEN=xxxx +TWILIO_FROM_NUMBER=+47xxxxxxxx +``` + +--- + ## CostGuard — prismodell v2 (fasit) | Tier | GCP-spend/mnd | Pris | @@ -101,6 +131,7 @@ - **Ikke opprett repos** uten `REPO APPROVED` - **Medioteq = joint venture** — ikke SaaS-kunde - **Prismodell låst** — ikke endre uten `PLAN APPROVED` +- **CG7 er ikke definert** — ikke start uten direktiv fra Chris - **Verifiser alltid mappestruktur** via GitHub API før du bygger --- @@ -117,4 +148,4 @@ --- -*Vauco AS · propane-will-491900-m5 · us-central1 · Sesjon 2026-06-12* +*Vauco AS · propane-will-491900-m5 · us-central1 · Sesjon avsluttet 2026-06-12 17:22 CEST*