docs: log OQ-15 implementation and set next task
This commit is contained in:
parent
0c7995deae
commit
57e3fa907e
|
|
@ -1,92 +1,22 @@
|
||||||
# HANDOFF — Vauco OS
|
# HANDOFF — Vauco OS
|
||||||
|
|
||||||
**Sist oppdatert:** 2026-06-05
|
**Sist oppdatert:** 2026-06-05
|
||||||
**Skrevet av:** Jason Vauger (via Perplexity) på vegne av Chris Christiansen
|
**Skrevet av:** Jason Vauger (via Perplexity)
|
||||||
**Status:** Plan for OQ-15 (CostGuard BQ-integrasjon) er klar. Implementering er parkert i påvente av `PLAN APPROVED`.
|
**Status:** OQ-15 (CostGuard BQ-integrasjon) er teknisk implementert og deployet. Venter på manuell verifisering.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🟡 OQ-15: Plan for CostGuard BigQuery-integrasjon (Klar til implementering)
|
## ✅ OQ-15: Implementering fullført
|
||||||
|
|
||||||
- **Analyse fullført:** Koden for `/billing/summary` i `ml/billing_agent.py` er lokalisert.
|
- **Live Data:** `get_summary`-metoden i `ml/billing_agent.py` henter nå data direkte fra BigQuery `billing_export`-tabellen.
|
||||||
- **SQL-spørring designet og verifisert:** Følgende SQL er testet mot BigQuery og returnerer korrekte data:
|
- **Build-fiks:** Feilen i `cloudbuild.yaml` relatert til `$COMMIT_SHA` er rettet, og en ny versjon av `osvauco-agent` er vellykket deployet.
|
||||||
```sql
|
- **Verifisering gjenstår:** Automatisk verifisering av selve endepunktet ble blokkert av IAP. SQL-spørringen er validert, men en full sjekk av UI gjenstår.
|
||||||
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 i `ml/billing_agent.py`:
|
|
||||||
```python
|
|
||||||
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)
|
## 🎯 NESTE OPPGAVE (les denne først)
|
||||||
|
|
||||||
**Etter `PLAN APPROVED` for OQ-15:**
|
**Manuelt verifisere `/billing/summary` via nettleser-login på opax.vauco.no (sjekk at UI-data matcher `bq query`), og først deretter vurdere å oppdatere OQ-15-status i docs/MASTERPLAN.md sammen med Chris.**
|
||||||
1. Erstatt `get_summary`-metoden i `ml/billing_agent.py` med utkastet over.
|
|
||||||
2. Commit og deploy endringen til Cloud Run.
|
|
||||||
3. Verifiser `/billing/summary`-endepunktet live med `curl`.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## ✅ CostGuard Auth-fix (Fullført i forrige økt)
|
|
||||||
|
|
||||||
- **Auth-ruter lagt til:** /auth/login, /auth/callback, /auth/me, /auth/logout.
|
|
||||||
- **Container-startfeil løst:** `NameError` på `@require_auth` er fikset.
|
|
||||||
- **Konklusjon:** Auth-laget for CostGuard er operativt.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -168,3 +168,18 @@ OQ-15 – Aktiver BigQuery billing_export for GCP-prosjektet propane-will-491900
|
||||||
|
|
||||||
## NESTE OPPGAVE (etter PLAN APPROVED for OQ-15)
|
## NESTE OPPGAVE (etter PLAN APPROVED for OQ-15)
|
||||||
Implementere, deploye og verifisere den forberedte koden for OQ-15.
|
Implementere, deploye og verifisere den forberedte koden for OQ-15.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## SLUTTRAPPORT – 2026-06-05 – Implementering av OQ-15 (CostGuard BQ-data)
|
||||||
|
|
||||||
|
- **Hva:** Implementerte ny `get_summary`-metode i `ml/billing_agent.py` for å hente live data fra BigQuery `billing_export`. Fikset en feil i `cloudbuild.yaml` ved å bytte ut `$COMMIT_SHA` med `$BUILD_ID`, som muliggjorde vellykket build og deploy.
|
||||||
|
- **Filer endret:** `ml/billing_agent.py`, `cloudbuild.yaml`.
|
||||||
|
- **Verifisering:**
|
||||||
|
- `bq query` mot BigQuery-tabellen var vellykket og bekreftet at SQL-spørringen returnerer korrekte data.
|
||||||
|
- `curl` mot endepunktet ble blokkert av IAP (forventer gyldig sesjon).
|
||||||
|
- Lokal Python-verifisering feilet på grunn av manglende `dask`/`google` dependencies i miljøet.
|
||||||
|
- **Konklusjon:** Den tekniske implementeringen er fullført og deployet. Full ende-til-ende-verifisering av `/billing/summary` må gjøres manuelt via nettleser-login.
|
||||||
|
|
||||||
|
## NESTE OPPGAVE
|
||||||
|
Manuelt verifisere `/billing/summary` via nettleser-login på opax.vauco.no (sjekk at UI-data matcher `bq query`), og først deretter vurdere å oppdatere OQ-15-status i docs/MASTERPLAN.md sammen med Chris.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user