Organisationseinheiten (OU)¶
Organisationseinheiten sind das zentrale Routing-Konzept für Kommunikationsvorgänge im Shop. Sie bündeln:
- Zuständigkeit: Welche Kunden, Produktklassen, Quellen?
- Empfänger: Mitglieder, E-Mail-Adressen, API-Requests
- Ereignisse: Für welche Event-Typen ist die OU zuständig?
- Routing-Filter: Mindest-/Maximalbestellwerte
Typ-Kennzeichnung¶
Jede OU hat ein Pflichtfeld type (seit Migration 0023):
| Wert | Konstante | Bedeutung |
|---|---|---|
| 0 | INTERNAL |
Standard-OU für interne Routing-Regeln |
| 1 | ADDITIONAL_EMAIL_RECIPIENT |
Vom Dashboard angelegter Zusatzempfänger |
Benutzer in einer OU auswählen¶
In einer Organisationseinheit werden Benutzer in zwei Feldern über eine Suche hinzugefügt:
- Mitglieder: Personen, die für die OU zuständig sind und die damit verbundenen Berechtigungen erhalten können.
- Kunden: Kunden, auf die der Zuständigkeitsfilter der OU beschränkt ist.
Benutzer hinzufügen¶
- Die gewünschte Organisationseinheit im Django-Admin öffnen.
- Den Bereich Mitglieder beziehungsweise Zuständigkeitsfilter aufklappen.
- In das Feld Members oder Customers klicken und mindestens einen Teil des Namens oder der E-Mail-Adresse eingeben.
- Den passenden Benutzer aus den angezeigten Suchtreffern auswählen.
- Für weitere Benutzer die Suche wiederholen und anschließend die OU speichern.
Die Felder suchen serverseitig. Es wird daher nicht die gesamte Benutzerliste beim Öffnen der OU geladen. Bereits ausgewählte Benutzer bleiben im Feld sichtbar und können dort auch wieder entfernt werden.
Mehrere Benutzer
Eine OU kann mehrere Mitglieder und mehrere Kunden enthalten. Jeder ausgewählte Eintrag wird einzeln hinzugefügt; die Auswahl wird erst mit dem Speichern der OU übernommen.
Unterschiedliche Wirkung der Felder
Mitglieder sind die Empfänger bzw. Bearbeiter einer OU. Kunden sind ein Filter: Die OU ist nur für die dort hinterlegten Kunden zuständig. Werden mehrere Zuständigkeitsfilter gepflegt, müssen alle gesetzten Filter zutreffen.
Versandablauf¶
OrganizationUnit.get_responsible_ous(event, user, order)
→ OrganizationUnit.send_all(event, user, messages)
→ für jede zuständige OU:
→ ou.send(event, user, messages, order)
→ ou.dispatch_api_requests(instance) # optional
Zuständigkeitsprüfung¶
check_responsibility() filtert OUs nach:
- User-Related Events: Benutzer ist Pflicht, Bestellung wird ignoriert
- Order-Related Events: Bestellung ist Pflicht, Benutzer = Besteller
- Custom Events: Keine Filterung nach Benutzer oder Bestellung
Zusätzlich werden customers, product_classes, source_types und
Wertgrenzen (minimum_order_value, maximum_order_value) geprüft
(&-Verknüpfung).
Zusatzempfänger¶
Dashboard-Zusatzempfänger sind OUs vom Typ ADDITIONAL_EMAIL_RECIPIENT.
Sie werden pro Benutzer angelegt und über customers und event_types
gefiltert. Der Versand erfolgt über denselben send_all-Pfad wie für
alle anderen OUs – kein separater Verarbeitungsweg.