Projekt-Anfragen (ProjectRequests)
Zweck
ProjectRequest modelliert eingehende Anfragen von Mandanten (/clients) oder eigenen Mitarbeitern (/employees). Pro Anfrage wird über eine Checklist ein strukturierter Fragebogen erfasst, der typischerweise vom Anfragenden selbst ausgefuellt wird. Pro Anfrage werden Status, zustaendiger Mitarbeiter (employeeId) und eine Anfrage-Nummer (über NumberCircle) gepflegt.
Sub-Route /project-requests/:id/form liefert das Checklist-Formular zur Bearbeitung.
Voraussetzungen
Berechtigungen (CASL)
| Action | Subject | Wirkung | Keycloak-Rolle |
|---|---|---|---|
view | FE_ProjectRequest, ProjectRequest | Liste/Detail aufrufbar | — |
create/update/delete | ProjectRequest | Pflegen | APP_SPEAMCORE_CREATE/UPDATE/DELETE_PROJECT_REQUEST |
view | Checklist | Checklist-Auswahl | APP_SPEAMCORE_VIEW_CHECKLIST |
view | Employee | Bearbeiter-Auswahl | APP_SPEAMCORE_VIEW_EMPLOYEE |
view | NumberCircleAssignment | Anfrage-Nummer | APP_SPEAMCORE_VIEW_NUMBER_CIRCLE_ASSIGNMENT |
Schritt-für-Schritt-Anleitung
Anfrage anlegen
- Projekt-Anfragen (
/project-requests) → + Neu. namesetzen.- Beim Speichern wird die
projectRequestNoüber den NumberCircle vergeben. - Status (
projectRequestStatusSelect) wird nach Anlage editierbar. employeeId(Bearbeiter) zuordnen.
Anfrage-Formular ausfuellen
/project-requests/:id/form zeigt das Checklist-Formular zum Beantworten — typischerweise vom Anfragenden selbst.

Toolbar (Detail-Seite)
Schlanke Toolbar oben rechts:
| Icon | Aktion (aria-label) | CASL | Wirkung |
|---|---|---|---|
| ← | Zurückgehen | — | Zurück zur Liste. |
| 🏠 | Zur Startseite gehen | — | Springt auf das Dashboard / /. |
| ⏮/◀/▶/⏭ | Pagination | — | Navigation durch die gefilterte Liste — Massen-Bearbeitung ohne Liste-Sprung. |
Globale Floating-Drawer (links)
Wie auf jeder Detail-Seite verfuegbar — siehe Floating-Quickbar:
- KAL. (Mini-Kalender)
- ZEIT (Persoenliche Wochen-Arbeitszeit)
- ARBEIT (Eigene bevorstehende Aufträge)
Felder und Eingaben
| Feldname | Pflicht | Datentyp | Wirkung beim Ausfuellen | Voraussetzung |
|---|---|---|---|---|
projectRequestNo | nein (read-only) | NumberCircleAssignment | Wird über den NumberCircle vergeben. | view:NumberCircleAssignment. |
status | ja | ENUM (project-spezifisch) | Steuert den Workflow (z. B. received, inProgress, responded, archived). | — |
name | nein | String | Anzeigename. | — |
parentType/parentId | ja | Polymorph (Client/Employee) | Anfragender. | view:Client/view:Employee. |
employeeId | nein | UUID | Bearbeiter (interner Mitarbeiter). | view:Employee. |
checklistId | ja | UUID | Verweis auf die Checklist-Vorlage. | view:Checklist. |
Wiederverwendbare Konzepte
- Polymorpher Parent-Pattern —
parentType/parentIdzu Client/Employee. - Berechtigungen verstehen (CASL)
Verknuepfungen zu anderen Modulen
- Projekte — Anfragen koennen in Projekte konvertiert werden.
- Mandanten und Mitarbeiter — Anfragender.
- Checklisten — Vorlage für das Anfrage-Formular.
- Nummernkreise —
projectRequestNo-Vergabe.
API/Schnittstellen
| Methode | Endpoint | Zweck | CASL |
|---|---|---|---|
GET | /api/project-requests | Liste | view ProjectRequest |
POST | /api/project-requests | Anlegen | create ProjectRequest |
GET | /api/project-requests/:id | Detail | view ProjectRequest |
PATCH | /api/project-requests/:id | Ändern | update ProjectRequest |
DELETE | /api/project-requests/:id | Soft-Delete | delete ProjectRequest |
Versionshinweise
- 2026-04-30: Initiale Veroeffentlichung.