7.6 KiB
HANDOFF — Vauco OS
Sist oppdatert: 2026-06-05
Skrevet av: Jason Vauger (via Perplexity) på vegne av Chris Christiansen
Status: Plan for OQ-15 (CostGuard BQ-integrasjon) er klar. Implementering er parkert i påvente av PLAN APPROVED.
🟡 OQ-15: Plan for CostGuard BigQuery-integrasjon (Klar til implementering)
- Analyse fullført: Koden for
/billing/summaryiml/billing_agent.pyer lokalisert. - SQL-spørring designet og verifisert: Følgende SQL er testet mot BigQuery og returnerer korrekte data:
SELECT DATE(usage_start_time) AS usage_date, project.id AS project_id, service.description AS service, SUM(cost) AS daily_cost FROM `propane-will-491900-m5.billing_export.gcp_billing_export_v1_0171F6_057E6B_A260BA` WHERE _PARTITIONTIME >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY) GROUP BY usage_date, project_id, service ORDER BY usage_date DESC, daily_cost DESC LIMIT 100 - Python-utkast forberedt: Følgende funksjon er klar til å erstatte den eksisterende
get_summary-metoden iml/billing_agent.py:def get_summary(self): """ Retrieves the daily billing summary per project and service for the last 30 days. """ query = f""" SELECT DATE(usage_start_time) AS usage_date, project.id AS project_id, service.description AS service, SUM(cost) AS daily_cost FROM `{self.billing_table}` WHERE _PARTITIONTIME >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY) GROUP BY usage_date, project_id, service ORDER BY usage_date DESC, daily_cost DESC LIMIT 100 """ query_job = self.bq_client.query(query) results = query_job.result() summary = [] for row in results: summary.append({ "usage_date": str(row.usage_date), "project_id": row.project_id, "service": row.service, "daily_cost": row.daily_cost }) if not summary: return { "onboarding_status": { "state": "awaiting_data", "message": "Fakturaeksport er aktiv, men inneholder ingen data for de siste 30 dagene ennå." } } return {"summary": summary}
🎯 NESTE OPPGAVE (les denne først)
Etter PLAN APPROVED for OQ-15:
- Erstatt
get_summary-metoden iml/billing_agent.pymed utkastet over. - Commit og deploy endringen til Cloud Run.
- Verifiser
/billing/summary-endepunktet live medcurl.
✅ CostGuard Auth-fix (Fullført i forrige økt)
- Auth-ruter lagt til: /auth/login, /auth/callback, /auth/me, /auth/logout.
- Container-startfeil løst:
NameErrorpå@require_auther fikset. - Konklusjon: Auth-laget for CostGuard er operativt.
🏗 Hva er dette prosjektet?
Se docs/MASTERPLAN.md for full sannhet. Kortversjonen:
Vauco OS (plattform)
└── OPAX (kommandosenter + salgsmodul-bygger, Cloud Run us-central1)
├── CostGuard (Modul #1 — live på costguard.oss.vauco.no)
├── Threadstone (Modul #2 — Q3 2026)
└── [Modul #3+]
OPAX = kommandosenter for ALLE prosjekter (et prosjekt = en klient — samme ting). OPAX bygger, iscenesetter og publiserer prosjekter. OPAX er ikke bundet til noe enkelt prosjekts region.
Branding-konvensjon for prosjekter:
| Subdomene | Type |
|---|---|
<prosjekt>.oss.vauco.no |
Staging / demo |
<prosjekt>.os.vauco.no |
Live produksjon |
(Klient kan videresende eget domene, men kanonisk merkevare-label er alltid *.vauco.no.)
Første betalende produkt: CostGuard (GCP-kostnadsanalyse via AI).
✅ Hva er faktisk ferdig (ikke spør om dette igjen)
| Komponent | Status |
|---|---|
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) |
| CI/CD Cloud Build → Cloud Run | ⚠️ IKKE operativt — ingen trigger, siste builds FAILURE. Deploy MANUELT. |
RAG corpus osvauco-corpus |
✅ Populert, europe-west1 |
| OAuth2 (Google) | ✅ I Secret Manager |
| AI-modell | ✅ gemini-2.5-pro via Vertex AI (us-central1) |
costguard.oss.vauco.no |
✅ Live (Cloudflare Pages) |
📋 Nøkkelinformasjon
| Nøkkel | Verdi |
|---|---|
| GCP Project | propane-will-491900-m5 |
| Region (OPAX, LÅST) | us-central1 |
| Vertex AI endpoint | us-central1 (kjører GOOGLE_CLOUD_LOCATION=global i praksis) |
| Artifact Registry | us-central1-docker.pkg.dev/propane-will-491900-m5/osvauco-repo |
| Cloud Run service | osvauco-agent |
| Cloud Run URL (direkte) | https://osvauco-agent-357036551735.us-central1.run.app |
| Public URL | https://opax.vauco.no |
| LB IP | 34.98.77.173 |
| AI-modell | gemini-2.5-pro |
| Repo | vauco-saas/OSVauco |
| Eier / Operatør | Chris Christiansen — chris.christiansen@vauco.no |
| Agent-konto | jason.vauger@vauco.no |
🩺 Medisinsk prosjekt (Medioteq) — SEPARAT, IKKE OPAX
Det medisinske prosjektet er et eget, fremtidig prosjekt som ikke er opprettet ennå og ikke er prioritert. Det påvirker IKKE OPAX sin region eller arkitektur. Når det opprettes, velges region (EU eller US) der og da, uavhengig av OPAX. Alle kliniske/europe-north1-regler gjelder KUN det prosjektet — ikke OPAX.
⚠️ Vanlige feil — ikke gjør disse
- Ikke opprett nye HANDOFF_YYYYMMDD-filer. Det er kun denne. Overskriv den.
- Ikke re-merge PR #15 — allerede merget.
- Ikke sett opp CI/CD-triggere — deploy manuelt.
- Ikke bytt til Claude før kvote er bekreftet +
MODEL APPROVEDfra Chris. - Ikke migrere fra us-central1 — regionen er låst for OPAX.
- Ikke rør IAP, OAuth, eller Secret Manager uten eksplisitt
DEPLOY GODKJENT. - Ikke oppdater OAuth-klient redirect URIs uten domeneavklaring — se Issue #16.
- Ikke hopp over HITL gates.
📁 Viktige filer å lese (i denne rekkefølgen)
docs/MASTERPLAN.md— autoritativ sannhetdocs/ROADMAP.md— hva som skjer akkurat nådocs/HANDOFF.md— denne filendocs/AGENT_RULEBOOK.md— regler for hvordan agenter oppfører segagents/jason-vauger.md— Jason Vauger agentprofilAGENTS.md— oversikt over alle agenter i ML-laget.gemini/GEMINI.md— locked definitions og boot-protokolldocs/ARCHITECTURE.md— teknisk arkitekturdocs/OSVAUCO_OPAX_SESSION_LOG.md— append-only sesjonshistorikk
⚠️ Vanlige feil — ikke gjør disse
- Ikke opprett nye HANDOFF_YYYYMMDD-filer. Det er kun denne. Overskriv den.
- Ikke gjenopplive
VAUCO_OS_ROADMAP.md. Den er slettet 2026-05-31. BrukROADMAP.md. - Ikke bytt til Claude før kvote er bekreftet av Google Cloud-team +
MODEL APPROVEDfra Chris. - Ikke migrere fra us-central1 — regionen er låst.
- Ikke rør IAP, OAuth, eller Secret Manager uten eksplisitt
DEPLOY GODKJENTfra Chris. - Ikke opprett nye repos. Vurder mappe i
OSVaucoførst. KreverREPO APPROVED. - Ikke hopp over HITL gates — hver fase avsluttes med et godkjenningssignal.
- Ikke oppdater OAuth-klient redirect URIs uten domeneavklaring — se Issue #16.
Vauco AS · propane-will-491900-m5 · us-central1 · Powered by Jason, Crafted by Vauco ·