Samlings- og brukernoder kan nå ha ai_budget i metadata:
{ "ai_budget": { "monthly_limit_usd": 50.0 } }
Før hvert AI-kall aggregeres inneværende måneds forbruk fra
ai_usage_log og sammenlignes med grensen. Ved overskridelse:
- AI-kallet blokkeres med feilmelding
- En work_item-node opprettes med tag "budget_exceeded"
- Work_item knyttes til samlingen via belongs_to-edge
Endringer:
- migrations/029: requested_by-kolonne i ai_usage_log + indekser
- synops-ai: --collection-id/--user-id flagg, budsjettsjekk i prompt
- maskinrommet/ai_budget.rs: delt budsjettsjekk-modul
- maskinrommet/ai_process.rs: budsjettsjekk før AI gateway-kall
- docs/infra/ai_gateway.md: oppdatert § 6.3 fra "fase 2" til implementert
24 lines
983 B
SQL
24 lines
983 B
SQL
-- 029: AI-budsjett per bruker/samling
|
|
--
|
|
-- Legger til støtte for kostnadstak (ai_budget) i metadata på bruker- og
|
|
-- samlingsnoder. Utvider ai_usage_log med requested_by for bruker-attribusjon,
|
|
-- og legger til indeks for effektiv månedlig aggregering.
|
|
--
|
|
-- Budsjett lagres som JSONB-metadata på noden:
|
|
-- { "ai_budget": { "monthly_limit_usd": 50.0 } }
|
|
--
|
|
-- Ref: docs/infra/ai_gateway.md § 6.3
|
|
|
|
-- Bruker-attribusjon: hvem utløste AI-kallet
|
|
ALTER TABLE ai_usage_log
|
|
ADD COLUMN IF NOT EXISTS requested_by UUID REFERENCES nodes(id) ON DELETE SET NULL;
|
|
|
|
-- Indeks for effektiv månedlig aggregering per samling
|
|
CREATE INDEX IF NOT EXISTS idx_ai_usage_log_collection_month
|
|
ON ai_usage_log (collection_node_id, created_at)
|
|
WHERE collection_node_id IS NOT NULL;
|
|
|
|
-- Indeks for effektiv månedlig aggregering per bruker
|
|
CREATE INDEX IF NOT EXISTS idx_ai_usage_log_requested_by_month
|
|
ON ai_usage_log (requested_by, created_at)
|
|
WHERE requested_by IS NOT NULL;
|