GOV-04: Kostenkontrolle & Quota (Kopplung Core LIC-03) #227

Merged
patrick merged 1 commits from feature/gov-04-kostenkontrolle-quota-kopplung-core-lic-03 into main 2026-09-27 19:37:35 +02:00
Owner

Verbrauchszaehlung und Obergrenzen je Tenant fuer KI-Inferenz-Nutzung (ENG-05), gekoppelt an Core LIC-03 (Nutzungszaehler & Quotas).

Umsetzung

  • ai/internal/quota: Store mit Check/Enforce/RecordCall, Metrik ai_inference_calls, 80%-Warnschwelle, HTTPReporter meldet Deltas an Cores Resync-Endpunkt (LIC-03-Kopplung, analog dms/mail HTTPUsageReporter).
  • ai/migrations/0007_ai_usage_quota: lokale Zaehler-/Quota-Tabellen (AI ist eigenes Go-Modul, kann Core internal/usage nicht importieren).
  • ai/migrations/0008_inference_jobs_tenant: tenant_slug-Spalte auf inference_jobs.
  • ai/internal/queue: QuotaEnforcer-Interface + Queue.SetQuotaEnforcer (blockt Enqueue vor Jobanlage bei erreichter Quota), UsageRecorder-Interface + Worker.SetUsageRecorder (zaehlt nur tatsaechlich abgeschlossene Auftraege).

Pruefungen (siehe ai/docs/GOV-04-PRUEFPROTOKOLL.md)

  1. Quota-Ueberschreitung im Test zuverlaessig blockiert -- bestanden (TestStore_EnforceBlocksWhenExceeded, TestQuota_BlocksEnqueueAndTracksActualCompletions)
  2. Vorabwarnung im Test ausgeloest -- bestanden (TestStore_EnforceWarnsBeforeExceeding, Warnung bei 80% vor Ueberschreitung)
  3. Verbrauchszaehlung gegen tatsaechliche Aufrufe abgeglichen -- bestanden (Zaehlung erfolgt im Worker erst nach erfolgreichem Complete, Zaehlerstand == Anzahl real ausgefuehrter Jobs)

Alle 14 Tests in ai/internal/quota und ai/internal/queue PASS auf Testhost 192.168.1.204 (Wegwerf-DB, danach entfernt), keine Regression der bestehenden ENG-05/ENG-07-Tests. go build/go vet sauber. Ein vorbestehender, unabhaengiger Timeout in ai/internal/vectorindex (TestSearch_LatencyAtScale) ist nicht Teil dieser Kachel.

Kein Merge, kein Deploy -- nur PR.

🤖 Generated with Claude Code

Verbrauchszaehlung und Obergrenzen je Tenant fuer KI-Inferenz-Nutzung (ENG-05), gekoppelt an Core LIC-03 (Nutzungszaehler & Quotas). ## Umsetzung - `ai/internal/quota`: Store mit Check/Enforce/RecordCall, Metrik `ai_inference_calls`, 80%-Warnschwelle, HTTPReporter meldet Deltas an Cores Resync-Endpunkt (LIC-03-Kopplung, analog dms/mail HTTPUsageReporter). - `ai/migrations/0007_ai_usage_quota`: lokale Zaehler-/Quota-Tabellen (AI ist eigenes Go-Modul, kann Core internal/usage nicht importieren). - `ai/migrations/0008_inference_jobs_tenant`: tenant_slug-Spalte auf inference_jobs. - `ai/internal/queue`: QuotaEnforcer-Interface + Queue.SetQuotaEnforcer (blockt Enqueue vor Jobanlage bei erreichter Quota), UsageRecorder-Interface + Worker.SetUsageRecorder (zaehlt nur tatsaechlich abgeschlossene Auftraege). ## Pruefungen (siehe ai/docs/GOV-04-PRUEFPROTOKOLL.md) 1. Quota-Ueberschreitung im Test zuverlaessig blockiert -- bestanden (TestStore_EnforceBlocksWhenExceeded, TestQuota_BlocksEnqueueAndTracksActualCompletions) 2. Vorabwarnung im Test ausgeloest -- bestanden (TestStore_EnforceWarnsBeforeExceeding, Warnung bei 80% vor Ueberschreitung) 3. Verbrauchszaehlung gegen tatsaechliche Aufrufe abgeglichen -- bestanden (Zaehlung erfolgt im Worker erst nach erfolgreichem Complete, Zaehlerstand == Anzahl real ausgefuehrter Jobs) Alle 14 Tests in ai/internal/quota und ai/internal/queue PASS auf Testhost 192.168.1.204 (Wegwerf-DB, danach entfernt), keine Regression der bestehenden ENG-05/ENG-07-Tests. go build/go vet sauber. Ein vorbestehender, unabhaengiger Timeout in ai/internal/vectorindex (TestSearch_LatencyAtScale) ist nicht Teil dieser Kachel. Kein Merge, kein Deploy -- nur PR. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
patrick added 1 commit 2026-09-27 11:55:36 +02:00
GOV-04: kostenkontrolle & quota (kopplung core lic-03)
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (pull_request) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Canceled after 0s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Canceled after 0s
CI / Web (dms-browser) (push) Canceled after 0s
CI / Web (pdf-viewer) (push) Canceled after 0s
CI / Web (shl) (push) Canceled after 0s
Supply-Chain-Scan (Go) / govulncheck (push) Canceled after 0s
AI-Pflichttest-Gate / pflichttest-gate (pull_request) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (pull_request) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (pull_request) Canceled after 0s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (pull_request) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (pull_request) Canceled after 0s
CI / Web (dms-browser) (pull_request) Canceled after 0s
CI / Web (pdf-viewer) (pull_request) Canceled after 0s
CI / Web (shl) (pull_request) Canceled after 0s
Core-Schnittstellen-Vertragstests / contract-tests (pull_request) Canceled after 0s
Supply-Chain-Scan (Go) / govulncheck (pull_request) Canceled after 0s
Supply-Chain-Scan (npm) / npm-audit (pull_request) Canceled after 0s
Core-Pflichttest-Gate / pflichttest-gate (pull_request) Canceled after 0s
RBAC-Rollenhierarchie-Pflichtgate / rbac-policy-invariant (pull_request) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (pull_request) Canceled after 0s
dc99d46992
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
patrick merged commit 008290005b into main 2026-09-27 19:37:35 +02:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: scripte/nexarch#227