Implement premium features and GDPR compliance in bot and WebUI

- Added new models for premium tier configurations and assignments, enabling feature limits for free and premium users.
- Introduced GDPR deletion logging and commands for user data management.
- Enhanced logging configuration with retention days for audit logs.
- Updated bot commands and job processing to include new premium and GDPR functionalities.
- Improved localization with new keys for premium features and GDPR commands in both English and German.
- Added UI components for managing premium settings and logging retention in the WebUI.
This commit is contained in:
smueller
2026-07-22 16:59:23 +02:00
parent 4852f16f79
commit 08af99ed52
42 changed files with 1546 additions and 30 deletions

View File

@@ -42,6 +42,16 @@ docker compose run --rm bot pnpm prisma:migrate
pnpm prisma:generate
```
## Premium & DSGVO
- `PremiumTierConfig` (FREE/PREMIUM Limits + Feature-Flags)
- `GuildPremiumAssignment` / `UserPremiumAssignment`
- `GdprDeletionLog` (Protokoll der `/gdpr delete`-Läufe)
- `GuildSettings.snipeEnabled` (Default `false`)
- `LoggingConfig.retentionDays` (Default `90`, `0` = unbegrenzt)
Migration: `20260722200000_premium_gdpr`
## Backup (automatisch)
- Job: BullMQ `dailyPgDump`

View File

@@ -13,32 +13,37 @@
- BullMQ WebUI↔Bot, Presence-/Wartungsmodus-Anbindung
- Manuell bestätigt (User-Freigabe)
## Phase 8 Landing, Status, Rechtsseiten (Status: implementiert, manuelle Tests offen)
## Phase 8 Landing, Status, Rechtsseiten (Status: abgeschlossen, manuell bestätigt)
### Abgeschlossen
- Landing `/`, Status `/status`, Rechtsseiten, Public APIs, Core-Commands, `docs/verification.md`
- Manuell bestätigt (User-Freigabe)
## Post-Phase Premium + DSGVO (Status: implementiert, manuelle Tests offen)
### Abgeschlossen (Code)
- Landing `/` (Features, Invite, Support, Live-Stats, Login/Dashboard)
- Status `/status` (Shards/Latenz/Uptime aus Redis `bot:status`, Changelog/Incidents)
- Rechtsseiten-Gerüst `/impressum`, `/privacy`, `/terms` (DE+EN i18n; Impressum aus Env)
- Public APIs `GET /api/public/stats`, `GET /api/public/status`
- Bot schreibt `bot:status` (Presence-Job + Ready); Core-Commands `/help`, `/info`, `/invite`, `/support`
- `docs/verification.md` (Privileged Intents)
- Env: `SUPPORT_SERVER_URL`, `LEGAL_OPERATOR_*` (WebUI), `WEBUI_URL`/`SUPPORT_SERVER_URL` (Bot)
- Premium: `PremiumTierConfig`, Guild-/User-Zuweisung, Owner-UI `/owner/premium`
- Limits enforced (Tags/Feeds/Backups) in Bot + WebUI
- DSGVO: `/privacy`, `/gdpr delete confirm:true` (Löschung/Anonymisierung + `GdprDeletionLog`)
- Log-Retention: `LoggingConfig.retentionDays` + täglicher Job `retention`/`purgeExpiredLogs`
- Snipe standardmäßig aus (`GuildSettings.snipeEnabled`, Toggle in Allgemeine Einstellungen)
- Migration `20260722200000_premium_gdpr`
### Manuell testen
- [ ] Landing unter `WEBUI_URL` (nicht localhost): Stats, Invite, Login
- [ ] `/status` zeigt Shards nach Bot-Start (sonst „degraded“ bis Redis-Status da ist)
- [ ] Impressum: mit/ohne `LEGAL_OPERATOR_*` in `.env`
- [ ] Privacy/Terms in DE und EN (Locale-Cookie)
- [ ] Discord: `/help`, `/info`, `/invite`, `/support`
- [ ] Support-Link nur sichtbar, wenn `SUPPORT_SERVER_URL` gesetzt
- [ ] Owner `/owner/premium`: Limits speichern, Guild PREMIUM zuweisen
- [ ] Free-Limit: mehr Tags/Feeds/Backups als Free-Cap → Fehler
- [ ] `/privacy` und `/gdpr delete confirm:true`
- [ ] Logging-Retention im Dashboard setzen
- [ ] Snipe: default aus; nach Aktivierung in Einstellungen nutzbar
### Bewusst offen (SPEC, nicht Phase 8)
### Bewusst offen
- Musik- und KI-Modul (nur auf Zuruf)
- Premium-Zahlungsanbindung (manuelle Zuweisung bleibt Owner-Panel)
- Premium-Zahlungsanbindung
## Nächster geplanter Schritt
- Nach manueller Freigabe Phase 8: auf Zuruf Musik/KI oder andere SPEC-Restpunkte.
- Nach manueller Freigabe: Musik/KI auf Zuruf.