feat(customers): add dashboard and customer management
This commit is contained in:
parent
694b7bd09a
commit
92cb8d1286
28 changed files with 2521 additions and 13 deletions
|
|
@ -158,6 +158,20 @@ Hermes
|
|||
|
||||
Athena ist die einzige API-Oberflaeche fuer den Browser.
|
||||
|
||||
## Dashboard
|
||||
|
||||
Das Dashboard liegt in Athena unter `/dashboard` und bezieht seine Daten ueber die BFF-Route `GET /api/dashboard/summary`.
|
||||
|
||||
Hermes stellt dafuer `GET /dashboard/summary` bereit. Der Endpunkt ist mit `dashboard.read` geschuetzt und liefert nur Datenbloecke, fuer die der aktuelle Benutzer weitere Berechtigungen besitzt.
|
||||
|
||||
Beispiele:
|
||||
|
||||
- Kundenstatistiken nur mit `customers.read`
|
||||
- Benutzerstatistiken nur mit `users.read`
|
||||
- Rollenstatus nur mit `roles.read`
|
||||
|
||||
Nicht vorhandene Module wie Aufgaben, Tickets oder Projekte werden nicht mit Fake-Daten gefuellt. Stattdessen liefert das Dashboard leere Widgets mit klarer Meldung.
|
||||
|
||||
## RBAC: Rollen und Berechtigungen
|
||||
|
||||
Olympus verwendet ein serverseitiges RBAC-System als Grundlage fuer alle CRM-Module.
|
||||
|
|
@ -309,6 +323,57 @@ Der aktuell angemeldete Benutzer darf sich nicht selbst loeschen. Hermes verhind
|
|||
|
||||
Benutzer besitzen eine primaere RBAC-Rolle ueber `role_id`. Die Rolle bestimmt die serverseitigen Berechtigungen.
|
||||
|
||||
## Kundenmodul
|
||||
|
||||
Das Kundenmodul ist das zweite Enterprise-Modul und folgt den gleichen Grundsaetzen wie die Benutzerverwaltung:
|
||||
|
||||
- Hermes stellt REST-Endpunkte bereit.
|
||||
- Athena proxyt diese Endpunkte ueber `/api/customers`.
|
||||
- Der Browser spricht nicht direkt mit Hermes.
|
||||
- Berechtigungen werden serverseitig in Hermes geprueft.
|
||||
- Die UI nutzt Permissions nur fuer Sichtbarkeit und Bedienkomfort.
|
||||
|
||||
Hermes-Endpunkte:
|
||||
|
||||
- `GET /customers`
|
||||
- `GET /customers/{id}`
|
||||
- `POST /customers`
|
||||
- `PUT /customers/{id}`
|
||||
- `DELETE /customers/{id}`
|
||||
- `GET /customers/{id}/contacts`
|
||||
- `POST /customers/{id}/contacts`
|
||||
- `PUT /customers/{id}/contacts/{contact_id}`
|
||||
- `DELETE /customers/{id}/contacts/{contact_id}`
|
||||
|
||||
Athena-BFF-Routen:
|
||||
|
||||
- `GET /api/customers`
|
||||
- `POST /api/customers`
|
||||
- `GET /api/customers/[id]`
|
||||
- `PUT /api/customers/[id]`
|
||||
- `DELETE /api/customers/[id]`
|
||||
- `GET /api/customers/[id]/contacts`
|
||||
- `POST /api/customers/[id]/contacts`
|
||||
- `PUT /api/customers/[id]/contacts/[contactId]`
|
||||
- `DELETE /api/customers/[id]/contacts/[contactId]`
|
||||
|
||||
Tabellen:
|
||||
|
||||
- `customers`
|
||||
- `customer_addresses`
|
||||
- `customer_contacts`
|
||||
|
||||
Kunden-Permissions:
|
||||
|
||||
- `customers.read`
|
||||
- `customers.create`
|
||||
- `customers.update`
|
||||
- `customers.delete`
|
||||
|
||||
Kontakte und Adressen gehoeren fachlich zum Kunden und werden aktuell ueber `customers.read` beziehungsweise `customers.update` gesteuert.
|
||||
|
||||
Ein Kunden-Delete entfernt aktuell den Kunden inklusive Adressen und Ansprechpartnern. Fuer spaetere Projekte oder Tickets ist ein fachlicher Loeschschutz vorzubereiten, sobald diese Module existieren.
|
||||
|
||||
## Verzeichnisstruktur
|
||||
|
||||
```text
|
||||
|
|
@ -328,6 +393,7 @@ backend/hermes
|
|||
frontend/athena
|
||||
app/
|
||||
api/
|
||||
customers/
|
||||
roles/
|
||||
users/
|
||||
components/
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue