7.0 KiB
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.py — GET /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-token — ingen --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— ikkeagents/core-logic/app.py - MCP-server er
opax-mcp/— ikkeagents/mcp_server/ - Absolutte stier i Python —
Path(__file__).parent / "..." - Ikke migrer fra us-central1
- IAP curl: ingen
--audiences— baregcloud 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