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).
Quota-Ueberschreitung im Test zuverlaessig blockiert -- bestanden (TestStore_EnforceBlocksWhenExceeded, TestQuota_BlocksEnqueueAndTracksActualCompletions)
Vorabwarnung im Test ausgeloest -- bestanden (TestStore_EnforceWarnsBeforeExceeding, Warnung bei 80% vor Ueberschreitung)
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.
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)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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, Metrikai_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)
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