OSVauco/docs/HANDOFF.md

7.0 KiB

HANDOFF — Vauco OS

Sist oppdatert: 2026-06-13 06:46 CEST Skrevet av: Perplexity (stand-in) via GitHub MCP Sprint: CG4-credits — credits-panel levert, IAP-test blokkert


Gjort denne sesjonen (2026-06-13 — morgen)

Commit Task Detalj
f58ec09 CG4-credits static/billing-dashboard.html Credits-panel lagt til: 4 KPI-kort (brukt/gjenstår/burn/runway), animert progress-bar, advarselsbanner, kreditter-per-type liste. Auto-poll hvert 5 min via fetchCredits() i fetchAll().
Eksisterende CG4-credits ml/billing_agent.py get_credits_status(days=90) allerede implementert — 4 BQ-queries, runway-beregning, GOOGLE_CREDIT_TOTAL_USD env-var støtte.
Eksisterende CG4-credits main.py GET /billing/credits rute allerede registrert og koblet til BillingAgent.get_credits_status().

🔴 Blokkert — GET /billing/credits ikke testet i prod

Problem 1: cloud-run-proxy ikke installert på dev-VM

gcloud run services proxy ... → krever cloud-run-proxy component

Fix:

gcloud components install cloud-run-proxy

gcloud run services proxy osvauco-agent \
  --region=us-central1 \
  --project=propane-will-491900-m5 \
  --port=8080
# (kjør i Terminal 1 — ikke bakgrunn)

# Terminal 2:
curl -s "http://localhost:8080/billing/credits?days=90" | python3 -m json.tool

Problem 2: https://opax.vauco.no/billing/credits returnerer tom respons

IAP-token er gyldig, men Cloud Run returnerer HTML-feilside i stedet for JSON. Sannsynlig årsak: user:chris.christiansen@vauco.no mangler roles/run.invoker.

Diagnose:

curl -sv -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
  "https://opax.vauco.no/billing/credits" 2>&1 | head -30

Fix hvis 403:

gcloud run services add-iam-policy-binding osvauco-agent \
  --region=us-central1 \
  --project=propane-will-491900-m5 \
  --member="user:chris.christiansen@vauco.no" \
  --role="roles/run.invoker"

Problem 3: GOOGLE_CREDIT_TOTAL_USD ikke satt

Inntil denne er satt returnerer /billing/credits "credit_runway_days": null.

Fix (enklest — vanlig env-var er nok for et tall):

GCP Console → Cloud Run → osvauco-agent → Edit & Deploy
→ Variables & Secrets → Add Variable
→ GOOGLE_CREDIT_TOTAL_USD = 300

🔴 NESTE OPPGAVE — for Nemotron

Jobb: Verifiser GET /billing/credits end-to-end i prod.

STEG 1 — Installer proxy
  gcloud components install cloud-run-proxy

STEG 2 — Test via proxy (ingen IAP-styr)
  gcloud run services proxy osvauco-agent --region=us-central1 --project=propane-will-491900-m5 --port=8080
  curl -s http://localhost:8080/billing/credits?days=90 | python3 -m json.tool

STEG 3 — Sjekk om kreditter faktisk finnes i BQ
  bq query --use_legacy_sql=false \
    'SELECT credit_type, SUM(amount) FROM `propane-will-491900-m5.billing_export.gcp_billing_export_v1_*`, UNNEST(credits) AS credit_type, amount GROUP BY 1 LIMIT 10'

STEG 4 — Sett GOOGLE_CREDIT_TOTAL_USD i Cloud Run env

STEG 5 — Verifiser runway vises i billing-dashboard.html

Gjort forrige sesjon (2026-06-12 — kveld)

Commit Task Detalj
a773ec2 DOCS PROXY main.py GET /docs/{path} — henter MD-filer fra privat repo via GITHUB_PAT

Gjort 2026-06-12 — formiddag

Commit Task
50490b0 CG5-onboard static/onboard.html
c3357d3 CG5-onboard main.pyGET /onboard + POST /onboard/complete
5270166 CG6 static/costguard-dashboard.html
f7e64fc CG5c POST /notify/sms — Twilio
4a1e23e CG5a+CG5b POST /notify/webhook + POST /notify/email

🔴 Kjente OQ-er

ID Beskrivelse Prioritet
OQ-29 GET /notify/channels mangler Lav
OQ-30 opax.html browser-panel ikke pushet Høy
OQ-31 GOOGLE_CREDIT_TOTAL_USD ikke satt i Cloud Run Høy — blokkerer runway
ML-3a docs/gemma/world.md mangler — blokkerer Emma Blokkert

🏗 Systemstatus

Komponent Status
Cloud Run osvauco-agent Live us-central1
opax.vauco.no Live
main.py Hovudapp — alle ruter her
GET /billing/credits Rute finnes — ⚠️ IKKE testet i prod
ml/billing_agent.py get_credits_status() Implementert
static/billing-dashboard.html Credits-panel live (CG4-credits)
static/costguard-dashboard.html Live — CG6
static/opax.html Live — browser-panel MANGLER
POST /notify/webhook CG5a
POST /notify/email CG5b
POST /notify/sms CG5c (Guard+)
GET /notify/channels 🔴 OQ-29
docs/gemma/world.md Mangler — blokkerer ML-3a
GOOGLE_CREDIT_TOTAL_USD 🔴 Ikke satt — runway vises ikke

📋 Nøkkelinformasjon

Nøkkel Verdi
GCP Project propane-will-491900-m5
Region (LÅST) us-central1
Cloud Run service osvauco-agent
Direct URL https://osvauco-agent-zjbqp3prqq-uc.a.run.app
Public URL https://opax.vauco.no
Hovudapplikasjon main.py (rot i repo)
MCP-server opax-mcp/
Static filer static/
IAP curl gcloud auth print-identity-tokeningen --audiences
LB IP 34.98.77.173
Repo vauco-saas/OSVauco
Eier chris.christiansen@vauco.no
Jason jason.vauger@vauco.no · gemini-2.5-flash
Emma emma.vauger@vauco.no🔮 ML-3a

Env-vars påkrevd

GOOGLE_CREDIT_TOTAL_USD=300     # 🔴 MANGLER — sett i Cloud Run env
TWILIO_ACCOUNT_SID=ACxxxx
TWILIO_AUTH_TOKEN=xxxx
TWILIO_FROM_NUMBER=+47xxxxxxxx
GITHUB_PAT=ghp_xxxx
DOCS_BRANCH=main

⚠️ Regler (uendret)

  • Hovudapp er main.py — ikke agents/core-logic/app.py
  • MCP-server er opax-mcp/ — ikke agents/mcp_server/
  • Absolutte stier i PythonPath(__file__).parent / "..."
  • Ikke migrer fra us-central1
  • IAP curl: ingen --audiences — bare gcloud auth print-identity-token
  • Ikke rør IAP/OAuth uten DEPLOY GODKJENT
  • Ikke opprett repos uten REPO APPROVED
  • Medioteq = joint venture — ikke SaaS-kunde
  • CG7 er ikke definert — ikke start uten direktiv fra Chris

Vauco AS · propane-will-491900-m5 · us-central1 · Sesjon avsluttet 2026-06-13 06:46 CEST