chore: resolve HANDOFF.md conflict
This commit is contained in:
parent
d2a4eaf4bc
commit
963d0aadf1
|
|
@ -2,77 +2,15 @@
|
|||
|
||||
**Sist oppdatert:** 2026-06-09
|
||||
**Skrevet av:** Jason Vauger (via Perplexity)
|
||||
**Status:** CG3e fullført og deployet. CG4 Recommendations & Anomaly Engine planlagt.
|
||||
|
||||
---
|
||||
|
||||
## ✅ CG3e — LLM Token Usage Logger (fullført 2026-06-09)
|
||||
|
||||
- **`agents/token_logger.py`** — BigQuery-logger for LLM-kall. Skriver til `costguard_dataset.llm_token_usage` med felt: `timestamp`, `agent_name`, `model_name`, `input_tokens`, `output_tokens`, `total_tokens`, `total_cost_usd`.
|
||||
- **`/billing/tokens/summary`** — nytt endpoint i `app.py`. Henter aggregert tokenbruk per agent/modell siste 30 dager fra BigQuery.
|
||||
- **`static/billing-dashboard.html`** — nytt "⚡ Tokenbruk per agent"-kort som fetcher `/billing/tokens/summary` og viser tabell med agent, modell, tokens og kost i USD.
|
||||
- **Cloud Run revisjon `osvauco-agent-00298-6kk`** — deployet og live med alle CG3e-endringer.
|
||||
- **Commit:** `d2cf63a` (token usage card) på toppen av `33482ae` (token logger + endpoint).
|
||||
|
||||
---
|
||||
|
||||
## 🗺 CG4 — Recommendations & Anomaly Engine (NESTE)
|
||||
|
||||
### Mål
|
||||
En FinOps-lignende modul i CostGuard (inspirert av GCP FinOps Hub / Utilization Insights) som:
|
||||
- Viser anbefalinger om hvordan man kan redusere GCP-kostnader
|
||||
- Varsler om unormale kostnadsøkninger (anomalier)
|
||||
- Viser estimert besparelse per måned i NOK
|
||||
|
||||
### Backend — to endpoints
|
||||
|
||||
**`/billing/recommendations`** (NY)
|
||||
Logikk (kjøres mot BigQuery-data):
|
||||
1. **Sløsing:** Tjenester med `total_cost > 0` men `0` aktivitet siste 7 dager → "Vurder å skru av [tjeneste]"
|
||||
2. **Anomali:** Tjeneste der siste 3-dagers snitt er `>= 2x` 30d-snittet → "Unormal spik på [tjeneste]"
|
||||
3. **Budsjettoverskridelse:** Prognose > budsjett → "Du er på vei til å overskride budsjettet denne måneden"
|
||||
|
||||
Response-format:
|
||||
```json
|
||||
{
|
||||
"recommendations": [
|
||||
{
|
||||
"type": "anomaly" | "waste" | "budget",
|
||||
"severity": "high" | "medium" | "low",
|
||||
"service": "Cloud Build",
|
||||
"message": "Unormal kostnadsøkning på Cloud Build — 3x over normalt",
|
||||
"estimated_savings_nok": 42.50
|
||||
}
|
||||
],
|
||||
"total_estimated_savings_nok": 42.50
|
||||
}
|
||||
```
|
||||
|
||||
**`/billing/anomalies`** (UTVIDES)
|
||||
- Legg til `ratio`, `message` og `severity` i eksisterende response.
|
||||
|
||||
### Frontend — nytt "Anbefalinger"-kort
|
||||
|
||||
Plassering: mellom `.bottom-row` og token-usage-kortet i `billing-dashboard.html`.
|
||||
|
||||
Design (lik GCP FinOps Hub):
|
||||
- Header: "💡 Anbefalinger" + "Estimert besparelse: kr X,XX/mnd"
|
||||
- Liste med ikoner: 🔴 høy / 🟡 medium / 💚 lav
|
||||
- Hver rad: ikon + melding + tjeneste-tag + besparelse
|
||||
- Tom state: "✅ Ingen anbefalinger — forbruket ser normalt ut"
|
||||
|
||||
### Implementasjonsrekkefølge for Jason
|
||||
1. Lag `agents/recommendations_engine.py` med de tre analyselogikkene
|
||||
2. Legg til `/billing/recommendations`-ruten i `app.py`
|
||||
3. Oppdater `/billing/anomalies` med `ratio` + `severity` + `message`
|
||||
4. Legg til frontend-kortet i `billing-dashboard.html`
|
||||
5. Commit + deploy
|
||||
**Status:** CostGuard OAuth-flyt er verifisert, vauco.no er tonet ned og anonymisert, og Threadstone er satt i lukket pilot med kun @vauco.no-innlogging.
|
||||
|
||||
---
|
||||
|
||||
## ✅ OQ-15 / CG3 — Status per 2026-06-09
|
||||
|
||||
- **CG3a — CostGuard-landing / static-cards:** `static/costguard.html` er opprettet i OSVauco, designet i Vauco-stil med Google OAuth-knapp + embed av `/static/billing-dashboard.html`.
|
||||
- **CG3a — CostGuard-landing / static-cards:** `static/costguard.html` er opprettet og live.
|
||||
- **CG3b/c — DNS & Verifisering:** `costguard.oss.vauco.no` er bekreftet å peke mot `osvauco-agent` load balancer og serverer innhold korrekt.
|
||||
- **CG3d — OAuth-flyt:** Manuell test bekrefter at Google-innlogging fra `costguard.oss.vauco.no` fungerer uten feil.
|
||||
- **CG3 — CostGuard billing-dashboard (GCP-only):** `static/billing-dashboard.html` er ryddet opp slik at:
|
||||
- GCP er eneste provider i UI (AWS-UI er parkert til senere).
|
||||
- Demo-data brukes kun hvis kjerne-endepunktene (`/billing/summary`, `/billing/live`, `/billing/anomalies`) feiler.
|
||||
|
|
@ -81,7 +19,7 @@ Design (lik GCP FinOps Hub):
|
|||
- Anomali-visning er flyttet til en enkel topplinje-badge (grønn/gul/rød) i stedet for eget kort.
|
||||
|
||||
**Neste steg på CostGuard-siden:**
|
||||
- CG3b / CI1 — koble `static/costguard.html` og `static/billing-dashboard.html` inn i en mer komplett "CostGuard-opplevelse" (inkl. AWS når det er modent), og deretter ta CNAME `costguard.oss.vauco.no` → Cloud Run `osvauco-agent` når Chris sier klart.
|
||||
- **CG3e — Tokenmeter for agenter:** Implementere logging og visning av LLM-tokenbruk i CostGuard-dashboardet.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -138,7 +76,7 @@ Første betalende produkt: **CostGuard** (GCP-kostnadsanalyse via AI).
|
|||
|
||||
| Komponent | Status |
|
||||
|---|---|
|
||||
| Cloud Run `osvauco-agent` | ✅ Live, `us-central1`, revisjon `00298-6kk` |
|
||||
| Cloud Run `osvauco-agent` | ✅ Live, `us-central1` |
|
||||
| `opax.vauco.no` (LB + SSL) | ✅ Live, IP `34.98.77.173` |
|
||||
| IAP (`@vauco.no` only) | ✅ Aktivert |
|
||||
| PR #15 IAP /health-fix | ✅ Merget til main (commit 7a09871) |
|
||||
|
|
@ -148,9 +86,7 @@ Første betalende produkt: **CostGuard** (GCP-kostnadsanalyse via AI).
|
|||
| AI-modell | ✅ `gemini-2.5-pro` via Vertex AI (us-central1) |
|
||||
| `costguard.oss.vauco.no` | ✅ Live (Cloudflare Pages) |
|
||||
| `static/costguard.html` | ✅ Første versjon live via `osvauco-agent` |
|
||||
| `static/billing-dashboard.html` | ✅ GCP-only, CG3e token-kort lagt til |
|
||||
| `agents/token_logger.py` | ✅ BigQuery LLM-logger ferdig |
|
||||
| `/billing/tokens/summary` | ✅ Endpoint live |
|
||||
| `static/billing-dashboard.html` | ✅ Første versjon GCP-only, layout strammet inn, AWS-UI parkert |
|
||||
| `vauco.no` | ✅ Oppdatert, anonymisert og deployet via `gs://vauco-site-public` |
|
||||
| `threadstone.vauco.no` | ✅ Landingsside live, satt i lukket pilot m/ @vauco.no-gating |
|
||||
|
||||
|
|
|
|||
|
|
@ -10,19 +10,17 @@
|
|||
|
||||
## NOW — Aktiv akkurat nå
|
||||
|
||||
- [ ] **K1 — Repo-konsolidering** (denne sesjonen)
|
||||
- Slå sammen MASTERPLAN-er, fjern duplikater, fjern merge-markører i session log
|
||||
- HITL gate: `MERGE APPROVED` på PR `chore/consolidate-2026-05-31`
|
||||
- [x] **K2 — AGENT_RULEBOOK retting**
|
||||
- Region → `us-central1`, modell → `gemini-2.5-pro`, MCP_SERVICE → `osvauco-agent`
|
||||
- Done når: AGENT_RULEBOOK matcher MASTERPLAN §6 og §9
|
||||
- [ ] **K3 — Fiks nattlig GDrive backup**
|
||||
- Workflow `backup-gdrive-nightly.yml` har failet hver natt siden 2026-05-25
|
||||
- Diagnostiser: SA-key gyldig? Folder-ID korrekt? `RCLONE_GDRIVE_SA_JSON` secret intakt?
|
||||
- [x] **F8 — End-to-end test via opax.vauco.no**
|
||||
- Cloud Run `/health` ✅, IAP blokk ✅
|
||||
- browser-login → chat → svar ✅
|
||||
- HITL gate: `FASE8 APPROVED` ✅
|
||||
- [ ] **CG3e — Tokenmeter for agenter (LLM-bruk i CostGuard)**
|
||||
- Logg LLM-bruk (tokens, modell, agent) til egen BigQuery-tabell
|
||||
- Nytt endpoint `/billing/tokens/summary` som aggregerer kost per agent/modell
|
||||
- Nytt kort på `static/billing-dashboard.html` for "Tokenbruk per agent" (MVP)
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -36,15 +34,28 @@
|
|||
- [x] **V1d** — Erstatt "Under construction" — V1 LIVE på https://vauco.no (GCS+LB, SSL ACTIVE) · 2026-06-05
|
||||
- [ ] **V1e** — Sett opp SPF + DKIM + DMARC TXT-records på `vauco.no`
|
||||
|
||||
### CostGuard Strategi & Arkitektur
|
||||
> Dette er de overordnede prinsippene for CostGuard-modulen.
|
||||
|
||||
- **Dobbelt formål:** CostGuard er én felles kostnadsmotor som tjener to formål:
|
||||
- **"Min kost" (Egenbruk):** Intern overvåkning av Vauco sine egne GCP- og AI-kostnader, inkludert anomalideteksjon og tokenmeter.
|
||||
- **"Salgsmodus":** Den samme motoren og dataene brukes til å bygge innsikt, argumentasjon og tilbud i dialog med potensielle kunder.
|
||||
|
||||
- **Modellstrategi (prinsipp, ingen bytte nå):**
|
||||
- **Pro-modell (`gemini-2.5-pro`):** Brukes til "high-touch" oppgaver der kvalitet er kritisk: kundedemoer, komplekse analyser, generering av pitch-tekst og viktige forklaringer.
|
||||
- **Flash-modell (fremtidig):** En rimeligere og raskere modell skal på sikt brukes for alt som kjører kontinuerlig: periodiske rapporter, varsler, grunnleggende anomalideteksjon og andre bakgrunnsoppgaver.
|
||||
- **Modell-agnostisk Arkitektur:** Backend-API-et for CostGuard skal ha et `analysis_engine`-lag som kan rute kall til riktig modell (Pro eller Flash) basert på type oppgave og viktighet.
|
||||
- **Eksplisitt modell-lås:** Ingen endring av produksjonsmodell skjer før Chris gir en eksplisitt `MODEL APPROVED`, i henhold til `AGENT_RULEBOOK.md`.
|
||||
|
||||
- **Data & Logging:**
|
||||
- **Hierarkisk koststruktur:** CostGuard skal unngå flate kostnadsetiketter (som "Compute Engine") og heller presentere kostnader i en hierarkisk struktur der totalsummer ruller opp fra underkomponenter (f.eks. agenter, nettsteder, spesifikke tjenester).
|
||||
- **Token-logging:** All AI-bruk skal logges til en `llm_token_usage`-tabell (med input/output/total tokens + estimert kostnad). Dette er kritisk for å senere kunne sammenligne kost/nytte-effekten av Pro vs. Flash-modeller.
|
||||
|
||||
### CostGuard frontend wiring
|
||||
- [ ] **CG3a** — Bygg `static/costguard.html` (OAuth-knapp + billing embed)
|
||||
- [ ] **CG3b** — Sett CNAME `costguard.oss.vauco.no` → Cloud Run i Proisp
|
||||
- [ ] **CG3c** — Verifiser `/static/costguard.html` tilgjengelig via Cloud Run
|
||||
- [ ] **CG3d** — Test OAuth-flow fra landingssiden
|
||||
- [ ] **CG3e** — Tokenmeter for agenter (LLM-bruk i CostGuard)
|
||||
- Logg LLM-bruk (tokens, modell, agent) til egen BigQuery-tabell
|
||||
- Nytt endpoint `/billing/tokens/summary` som aggregerer kost per agent/modell
|
||||
- Nytt kort på `static/billing-dashboard.html` for "Tokenbruk per agent" (MVP)
|
||||
- [x] **CG3a** — Bygg `static/costguard.html` (OAuth-knapp + billing embed)
|
||||
- [x] **CG3b** — Sett CNAME `costguard.oss.vauco.no` → Cloud Run i Proisp
|
||||
- [x] **CG3c** — Verifiser `/static/costguard.html` tilgjengelig via Cloud Run
|
||||
- [x] **CG3d** — Test OAuth-flow fra landingssiden
|
||||
- [ ] **OQ-21** — Bygg `app.threadstone.vauco.no` eller fjern CNAME
|
||||
|
||||
---
|
||||
|
|
@ -116,6 +127,8 @@
|
|||
- [x] **Repo-konsolidering trinn 1** — `vauco-os`, `vauco-gemini-tui-bridge`, `command-hub` arkivert · 2026-05-27
|
||||
- [x] **Terraform bootstrap-modul** — `infrastructure/terraform/modules/{vauco-bootstrap,vauco-platform}` opprettet · 2026-05-26
|
||||
- [x] **OPAX operator hub** — `static/opax.html` deployet · 2026-05-31
|
||||
- [x] **K1 — Repo-konsolidering** · 2026-06-09
|
||||
- [x] **K3 — Fiks nattlig GDrive backup** · 2026-06-09
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user