dorfteich/packages/shared/i18n/de/quotas.json
Claude Opus 4.8 6d3db7db38
All checks were successful
CD / Build and push images (push) Successful in 3m17s
CI / Lint, typecheck, test (push) Successful in 2m34s
CI / Auth e2e pack (push) Successful in 3m27s
CI / Build container images (push) Has been skipped
CD / Deploy to Test (push) Successful in 8s
CD / Smoke tests against Test (push) Successful in 1m14s
CD / Promote to Int (push) Successful in 11s
Add Site-Admin quota override management UI (#58)
Site Admins tune quotas per user and per pond on the three-level ladder
(pond override → user override → instance default, data-model.md §Quotas).

- api `admin/`: a `QuotaAdminService` + Site-Admin-gated endpoints under
  `/admin/quotas` — look up a user (username/e-mail) or pond (slug), list every
  quota's override / instance default / effective value (resolved through the
  existing QuotaService, the single consumption path, so a change takes effect
  immediately) plus current usage, and set/clear a per-subject override. Every
  change is audit-logged. A pond's effective values resolve on its own override
  then its owner's, matching the consumption checks.
- web: the Admin area gains a 'Quotas' surface — the instance defaults move
  into a proper number-input form (was raw settings, #19), and a per-subject
  panel looks a user/pond up, shows the ladder with usage, flags subjects over
  their effective limit, and sets/clears overrides. New `quotas` i18n
  namespace (de+en).
- tests: `quota-admin.e2e.db.test.ts` (override → effective changes at once and
  QuotaService sees it; clear → falls back to the default; lookup; Site-Admin
  gating); a browser `admin-quotas` pack proving an override raised in the UI
  immediately lets a user create another shared pond (issue #22 consumption).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EwZ4jR4KFAPvpjWevfUGX1
2026-07-10 00:14:28 +02:00

38 lines
1.1 KiB
JSON

{
"title": "Kontingente",
"defaults": {
"title": "Instanz-Standardwerte",
"editors_per_pond": "Bearbeiter pro Teich",
"readers_per_pond": "Leser pro Teich",
"additional_ponds": "Zusätzliche geteilte Teiche pro Person",
"storage_bytes": "Speicher pro Teich (Bytes)",
"max_file_bytes": "Max. Upload-Größe (Bytes)",
"save": "Standardwerte speichern",
"saved": "Standardwerte gespeichert."
},
"overrides": {
"title": "Overrides pro Person / Teich",
"type": "Subjekt",
"user": "Person",
"pond": "Teich",
"query": "Benutzername, E-Mail oder Teich-Slug",
"find": "Suchen",
"notFound": "Kein passendes Subjekt.",
"key": "Kontingent",
"default": "Standard",
"override": "Override",
"effective": "Effektiv",
"usage": "Nutzung",
"set": "Setzen",
"clear": "Löschen",
"overQuota": "über Kontingent"
},
"keys": {
"editors_per_pond": "Bearbeiter pro Teich",
"readers_per_pond": "Leser pro Teich",
"additional_ponds": "Zusätzliche geteilte Teiche",
"storage_bytes": "Speicher (Bytes)",
"max_file_bytes": "Max. Upload (Bytes)"
}
}