docs: park OQ-15 and document draft for BQ integration
This commit is contained in:
parent
2795627caf
commit
29f3e0dbf4
|
|
@ -2,27 +2,91 @@
|
|||
|
||||
**Sist oppdatert:** 2026-06-05
|
||||
**Skrevet av:** Jason Vauger (via Perplexity) på vegne av Chris Christiansen
|
||||
**Status:** CostGuard auth-fix er fullført og deployet. Klar for neste fase.
|
||||
|
||||
> **Regel:** Dette er **den eneste** HANDOFF-filen. Overskrives hver sesjon. Tidligere handoffs er flyttet til `docs/archive/handoffs/`.
|
||||
**Status:** Plan for OQ-15 (CostGuard BQ-integrasjon) er klar. Implementering er parkert i påvente av `PLAN APPROVED`.
|
||||
|
||||
---
|
||||
|
||||
## ✅ CostGuard Auth-fix (Ferdig)
|
||||
## 🟡 OQ-15: Plan for CostGuard BigQuery-integrasjon (Klar til implementering)
|
||||
|
||||
- **Auth-ruter lagt til:** /auth/login, /auth/callback, /auth/me, /auth/logout for å håndtere Google OAuth.
|
||||
- **Container-startfeil løst:** `NameError` på `@require_auth` er fikset ved å flytte sjekken inn i `/auth/me`-ruten.
|
||||
- **OAuth redirect URI** for `opax.vauco.no/auth/callback` er registrert og verifisert.
|
||||
- **Verifisering:**
|
||||
- `/billing/summary` svarer 200 med JSON.
|
||||
- Dashboardet på `/static/billing-dashboard.html` laster og viser 0 kr, som forventet.
|
||||
- **Konklusjon:** Auth-laget for CostGuard er nå operativt.
|
||||
- **Analyse fullført:** Koden for `/billing/summary` i `ml/billing_agent.py` er lokalisert.
|
||||
- **SQL-spørring designet og verifisert:** Følgende SQL er testet mot BigQuery og returnerer korrekte data:
|
||||
```sql
|
||||
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)
|
||||
|
||||
**OQ-15 – Aktiver og verifiser BigQuery billing_export for prosjektet, slik at CostGuard får ekte historiske kostdata.**
|
||||
**Etter `PLAN APPROVED` for OQ-15:**
|
||||
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.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -133,4 +197,4 @@ Det medisinske prosjektet er et **eget, fremtidig prosjekt** som **ikke er oppre
|
|||
|
||||
---
|
||||
|
||||
*Vauco AS · propane-will-491900-m5 · `us-central1` · Powered by Jason, Crafted by Vauco ·*
|
||||
*Vauco AS · propane-will-491900-m5 · `us-central1` · Powered by Jason, Crafted by Vauco ·*
|
||||
|
|
|
|||
|
|
@ -156,3 +156,15 @@ Fase B ferdigstilling + Phase 4 (LB + SSL migrering)
|
|||
|
||||
## NESTE OPPGAVE
|
||||
OQ-15 – Aktiver BigQuery billing_export for GCP-prosjektet propane-will-491900-m5 og koble det inn i CostGuard-endepunktene.
|
||||
|
||||
---
|
||||
|
||||
## SLUTTRAPPORT – 2026-06-05 – Plan for OQ-15 (CostGuard BQ-integrasjon)
|
||||
|
||||
- **Hva:** Analyserte CostGuard-endepunktene for å integrere fakturadata. Designet og verifiserte en SQL-spørring mot BigQuery. Forberedte et komplett utkast til en ny `get_summary`-metode i `ml/billing_agent.py`.
|
||||
- **Filer analysert:** `main.py`, `ml/billing_agent.py`.
|
||||
- **Verifisering:** `bq query` på den nye SQL-spørringen var vellykket.
|
||||
- **Parkert status:** Implementering av koden er satt på vent i henhold til instruks, i påvente av `PLAN APPROVED`.
|
||||
|
||||
## NESTE OPPGAVE (etter PLAN APPROVED for OQ-15)
|
||||
Implementere, deploye og verifisere den forberedte koden for OQ-15.
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user