Zum Hauptinhalt springen

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 mit unterschiedlichem Umfang anbieten wollen. Die Namen (z.B. "Basic", "Pro", "Enterprise") sind deine eigenen Paketnamen, die du für deine Kunden vergibst.

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 (Platzhalter, Phase 2)
  • has_api_access — reserviert für eine künftige programmatische API (noch nicht gebaut: keine API-Keys, keine Endpoints)
  • has_white_label — reserviert für White-Label-Optionen (z.B. Footer-Logo entfernen) (Phase 2)
  • has_priority_support — Tickets bekommen "Priority"-Tag in der Admin-Inbox
  • watermark_downloads — Downloads bekommen Watermark (noch nicht implementiert)

Wo gilt es​

Portal: Produkt-Liste​

/dashboard/products filtert anhand von:

  1. excluded_categories (raus)
  2. allowed_categories (nur Whitelist sichtbar)
  3. excluded_compatibilities (raus)
  4. 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 Anbieter 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