Paket-Einschränkungen & Feature-Flags
[pakete] [admin] [billing]
Pro Lizenzpaket lässt sich definieren welche Produkte sichtbar sind und welche Funktionen freigeschaltet werden. Granulare Kontrolle über das Angebot.
Für wen
Admins, die mehrere Pakete (Basic / Pro / Enterprise) mit unterschiedlichem Umfang anbieten wollen.
Was ist konfigurierbar
Produkt-Sichtbarkeit (Whitelist / Blacklist)
Kategorien:
allowed_categories— Whitelist: nur diese Kategorien sind sichtbar. Leer = alle.excluded_categories— Blacklist: diese Kategorien sind ausgeschlossen. Gewinnt immer (auch gegen Whitelist).
Kompatibilitäten:
allowed_compatibilities— Whitelist: nur Produkte mit mindestens einem dieser Tags. Produkte ohne Compat-Tags sind immer sichtbar.excluded_compatibilities— Blacklist.
Hard-Limits (Anzahl)
max_downloads_per_month— Monatliche Download-Quote (Reset 1. des Monats UTC). 0 = unbegrenzt.max_printers— Wie viele Drucker pro Kunde. 0 = unbegrenzt.max_active_licenses— Wie viele Kunden gleichzeitig aktiv auf diesem Paket. 0 = unbegrenzt. (Enforcement TBD — siehe Wiki-Hinweis unten)
Feature-Flags
has_crm_access— CRM-Tab im Portal sichtbar (Phase 2 Implementierung)has_api_access— REST/Feed-API-Token kann generiert werdenhas_white_label— Eigene Domain + Footer-Logo entfernbar (Phase 2)has_priority_support— Tickets bekommen "Priority"-Tag in der Admin-Inboxwatermark_downloads— Downloads bekommen Watermark (Phase 2)
Wo gilt es
Portal: Produkt-Liste
/dashboard/products filtert anhand von:
- excluded_categories (raus)
- allowed_categories (nur Whitelist sichtbar)
- excluded_compatibilities (raus)
- allowed_compatibilities (nur wenn Item Compats hat)
Implementierung: apps/portal/app/dashboard/products/page.tsx.
Portal: Feed-Export
Feed-Export wendet die identische Logik an. Was im Portal nicht sichtbar ist, ist auch im Feed nicht.
Admin: Produkt-Auswahl im Paket
Einstellungen → Pakete → Paket bearbeiten → Tab "Einschränkungen" zeigt eine Liste aller Kategorien + Compats des Tenants mit Whitelist/Blacklist-Toggles.
Schritt für Schritt — Paket-Einschränkungen anpassen
1. Paket öffnen
Einstellungen → Pakete → Paket auswählen.
2. Tab "Einschränkungen"
- Erlaubte Kategorien: Multi-Select aller Kategorien deines Katalogs.
- Ausgeschlossene Kategorien: Multi-Select.
- Erlaubte Kompatibilitäten: Multi-Select aller Compat-Tags.
- Ausgeschlossene Kompatibilitäten: Multi-Select.
Leer lassen = keine Einschränkung (= alle freigegeben).
3. Tab "Limits"
- max_downloads_per_month
- max_printers
- max_active_licenses
4. Tab "Features"
- has_crm_access, has_api_access, has_white_label, has_priority_support, watermark_downloads (Toggle pro Flag)
5. Speichern
Wirkt sofort für alle Kunden auf diesem Paket — beim nächsten Portal-Aufruf sehen sie die neue Auswahl.
Häufige Fragen
Was wenn ich ein Produkt NACH Paket-Erstellung in eine ausgeschlossene Kategorie packe? Es verschwindet sofort aus dem Portal aller Kunden auf diesem Paket. Wirkt rückwirkend.
Wie zeige ich Kunden welche Limits sie haben?
Im Account-Tab "Mein Account" gibt es eine Sektion "Paket-Nutzung" mit aktuellem Verbrauch (Downloads-this-month, Drucker-Count). Implementiert in apps/portal/app/dashboard/account/PackageUsageSection.tsx.
Was passiert wenn max_downloads_per_month erreicht ist?
Aktuell: Anzeige der Quote im Portal, aber Download-Trigger wird noch nicht hart blockiert (Enforcement TBD). Drucker-Limit ist hingegen bereits aktiv: /api/portal/printers POST returnt 429 mit { limit, used }.
Kann ich Pakete migrieren? Im Kunden-Detail kannst du das Paket eines Kunden ändern. Die neuen Einschränkungen wirken sofort.
Was bedeutet show_in_join_preview?
Separate Flag (nicht in dieser Kategorie). Steuert ob das Paket auf der Landing-Page als Pricing-Card erscheint oder nur per Einladung verteilt wird.
Verwandt
- Pakete — Pakete generell konfigurieren
- Feed-Export — Einschränkungen wirken auch hier
- Account — Kundensicht der Limits