feat(cg3): add costguard landing page
This commit is contained in:
parent
82e9d9f469
commit
351bc8299b
|
|
@ -47,11 +47,81 @@ Medioteq og fremtidige kunder onboardes av deg selv via OPAX innenfra — ikke h
|
|||
|
||||
## AGENT-IDENTITET
|
||||
|
||||
| Identitet | E-post | Rolle |
|
||||
|---|---|---|
|
||||
| Eier / admin | `chris.christiansen@vauco.no` | `billing.admin` + `billing.viewer` |
|
||||
| Agent (OPAX) | `jason.vauger@vauco.no` | `billing.viewer` |
|
||||
| Fremtidig gruppe | `billing@vauco.no` | `billing.viewer` (Fase C) |
|
||||
| Identitet | E-post | Rolle | Formål |
|
||||
|---|---|---|---|
|
||||
| Eier / admin | `chris.christiansen@vauco.no` | `billing.admin` + `billing.viewer` | Full kontroll |
|
||||
| Agent (OPAX) | `jason.vauger@vauco.no` | `billing.viewer` | Hente og rapportere kostnadsdata autonomt |
|
||||
| Fremtidig gruppe | `billing@vauco.no` | `billing.viewer` (Fase C) | Delt innboks for team og kunder |
|
||||
|
||||
**Agent-kapabiliteter med `billing.viewer`:**
|
||||
- Svare på «Hva koster dette prosjektet denne måneden?»
|
||||
- Sende ukentlig kostnadsrapport til chat-appen
|
||||
- Reagere på Pub/Sub budget-alerts (via `10-cost-guard.sh`)
|
||||
- **Ikke:** endre IAM, budsjetter eller koble prosjekter
|
||||
|
||||
---
|
||||
|
||||
## DNS / DOMENE-ARKITEKTUR
|
||||
|
||||
> **Arkitekturavgjørelse — 2026-05-26**
|
||||
|
||||
| Domene | Type | Teknologi | Fase |
|
||||
|---|---|---|---|
|
||||
| `opax.vauco.no` | Intern cockpit (kun Chris) | CNAME → Cloud Run (gratis) | B1 nå |
|
||||
| `costguard.oss.vauco.no` | Standalone app | CNAME → osvauco-agent-357036551735.europe-west1.run.app | CG3 |
|
||||
| `kunde1.vauco.no` / kundedomener | Kunde-instanser | LB + IAP (Terraform) | Fase C |
|
||||
|
||||
**Begrunnelse:**
|
||||
- `opax.vauco.no` er et internt arbeidsverktøy for én bruker — Load Balancer ($18-20/mnd) er unødvendig overhead.
|
||||
- Kundeinstanser provisjoneres via `vauco-bootstrap` Terraform-modul i Fase C. LB + IAP bakes inn i modulen én gang og kjøres automatisk per kunde med `terraform apply -var="customer_id=X"`.
|
||||
- Terraform-modulen (Fase C) skal inkludere: Cloud Run, Cloud Build, IAP, LB, budsjett, SA, Dialogflow CX, ML state store.
|
||||
|
||||
---
|
||||
|
||||
## CLOUD SHELL QUICK-START (kopi-klipp)
|
||||
|
||||
> Bruk Cloud Shell: https://shell.cloud.google.com
|
||||
|
||||
```bash
|
||||
# Steg 1: Klon og sett opp miljø
|
||||
gcloud config set project propane-will-491900-m5
|
||||
git clone https://github.com/chrischristiansen-glitch/OSVauco.git ~/OSVauco
|
||||
cd ~/OSVauco
|
||||
|
||||
# Steg 2: Kopier og rediger .env
|
||||
cp .env.example .env
|
||||
nano .env
|
||||
# Fyll ut: BILLING_ACCOUNT_ID, ALERT_EMAIL, GITHUB_APP_INSTALLATION_ID
|
||||
|
||||
# Steg 3: Installer Python-avhengigheter
|
||||
pip install google-adk google-cloud-aiplatform>=1.111.0 --quiet
|
||||
|
||||
# Steg 4: Kjør i rekkefølge
|
||||
source .env
|
||||
bash infrastructure/00-authcheck.sh
|
||||
bash infrastructure/01-setupenv.sh
|
||||
bash infrastructure/07-rag-setup.sh
|
||||
# *** Kopier RAG_CORPUS_NAME fra output inn i .env ***
|
||||
nano .env && source .env
|
||||
|
||||
bash infrastructure/08-memorybank-setup.sh
|
||||
# *** Kopier MEMORY_ENGINE_NAME fra output inn i .env ***
|
||||
nano .env && source .env
|
||||
|
||||
gcloud run deploy osvauco-agent
|
||||
--source . --region europe-west1
|
||||
--project propane-will-491900-m5
|
||||
--set-secrets RAG_CORPUS=rag-corpus-name:latest
|
||||
--set-env-vars GOOGLE_GENAI_USE_VERTEXAI=1,GOOGLE_CLOUD_PROJECT=propane-will-491900-m5,GOOGLE_CLOUD_LOCATION=global,MEMORY_ENGINE_NAME=$MEMORY_ENGINE_NAME
|
||||
--no-allow-unauthenticated
|
||||
|
||||
bash infrastructure/04-observability-setup.sh
|
||||
bash infrastructure/11-billing-iam-hardening.sh
|
||||
bash scripts/smoke-test.sh
|
||||
|
||||
# Om kvelden (OBLIGATORISK):
|
||||
bash infrastructure/03-teardown.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
47
static/costguard.html
Normal file
47
static/costguard.html
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="no" data-theme="dark">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Vauco OS · CostGuard</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300..700&family=JetBrains+Mono:wght@400;600&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
:root,[data-theme="dark"]{
|
||||
--bg:#0f0e0d;--surface:#161513;--surface-2:#1c1a18;--surface-3:#232120;
|
||||
--border:rgba(255,255,255,0.07);--border-h:rgba(255,255,255,0.14);
|
||||
--text:#e8e6e2;--muted:#7a7874;--faint:#3f3d3a;
|
||||
--primary:#4f98a3;--warn:#fdab43;--warn-bg:rgba(253,171,67,0.1);
|
||||
--err:#dd6974;--err-bg:rgba(221,105,116,0.1);
|
||||
--ok:#6daa45;--ok-bg:rgba(109,170,69,0.1);
|
||||
--font:'Inter',sans-serif;--mono:'JetBrains Mono',monospace;
|
||||
--r:8px;--tr:160ms cubic-bezier(0.16,1,0.3,1);
|
||||
}
|
||||
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
|
||||
html{-webkit-font-smoothing:antialiased}
|
||||
body{font-family:var(--font);background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;min-height:100vh}
|
||||
.main{padding:40px 20px;max-width:800px;margin:0 auto;display:flex;flex-direction:column;gap:24px;text-align:center;}
|
||||
.button{display:inline-block;background:var(--primary);color:var(--bg);font-weight:600;font-size:16px;padding:12px 24px;border-radius:var(--r);text-decoration:none;transition:transform var(--tr);}
|
||||
.button:hover{transform:scale(1.05);}
|
||||
iframe{width:100%;height:600px;border:1px solid var(--border);border-radius:var(--r);background:var(--surface);}
|
||||
footer{padding:10px 20px 16px;font-size:11px;color:var(--faint);text-align:center}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<main class="main">
|
||||
<div>
|
||||
<h1>Vauco OS CostGuard</h1>
|
||||
<p style="color:var(--muted); max-width: 500px; margin: 8px auto 24px;">Få full kontroll på dine GCP-kostnader med sanntids overvåkning og anomali-deteksjon.</p>
|
||||
<a href="/auth/login?client_id=demo" class="button">Koble til GCP</a>
|
||||
</div>
|
||||
|
||||
<iframe src="/static/billing-dashboard.html"></iframe>
|
||||
|
||||
</main>
|
||||
|
||||
<footer>Powered by Vauco OS · Vauco AS · 935 989 779</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Reference in New Issue
Block a user