Zum Hauptinhalt springen

Projekte

Zweck

Projekte buendeln mehrstufige Vorhaben mit eigenem Lifecycle, Phasen, Positionen, Mitgliedern und Budget. Sie haengen polymorph an einem Kunden oder Standort.

Voraussetzungen

- Es gibt mindestens einen Kunden oder Standort als Parent. - Berechtigung `create:Project`.

Berechtigungen (CASL)

Frontend-Page-Guard:

ActionSubjectKeycloak-Rolle
viewFE_Project
viewProjectAPP_SPEAMCORE_VIEW_PROJECT

Tab-Subjects:

TabSub-PfadSubject
Phasen/projects/:id/phasesProjectPhase:view
Positionen/projects/:id/itemsProjectItem:view
Mitglieder/projects/:id/membersProjectMember:view
Gantt/projects/:id/ganttProject:view
Budget/projects/:id/budgetProjectItem:view

API-Datenzugriff:

ActionSubjectEndpointKeycloak-Rolle
viewProjectGET /api/projects, GET /api/projects/:idAPP_SPEAMCORE_VIEW_PROJECT
createProjectPOST /api/projectsAPP_SPEAMCORE_CREATE_PROJECT
updateProjectPATCH /api/projects/:idAPP_SPEAMCORE_UPDATE_PROJECT
deleteProjectDELETE /api/projects/:idAPP_SPEAMCORE_DELETE_PROJECT

Schritt-für-Schritt-Anleitung

Projekt anlegen

  1. Projekte (/projects) → + Neu.
  2. Parent wählen (parentType ∈ {Customer, Location}).
  3. Name, Start-/Endtermin, Prioritaet pflegen.
  4. Speichern. Status startet auf draft.

Projektstruktur aufbauen

  • Phasen definieren grobe Zeitabschnitte.
  • Positionen sind detaillierte Arbeitspakete je Phase.
  • Mitglieder sind beteiligte Mitarbeiter.

Listenansicht — projects

Toolbar (Detail-Seite)

Schlanke Toolbar oben rechts:

IconAktion (aria-label)CASLWirkung
ZurückgehenZurück zur Liste.
🏠Zur Startseite gehenSpringt auf das Dashboard / /.
⏮/◀/▶/⏭PaginationNavigation durch die gefilterte Liste — Massen-Bearbeitung ohne Liste-Sprung.

Spezial-Tabs (Visualisierung)

Die Projekt-Detailseite hat zwei Tabs, die keine eigenen Datensätze halten, sondern aggregierte Sichten auf bestehende Daten zeigen:

Tab: Gantt

Zeigt die Phasen-Zeitleiste des Projekts als Gantt-Chart:

  • X-Achse: Zeitachse vom Projekt-Start bis Projekt-Ende.
  • Y-Achse: Phasen (ProjectPhase) als horizontale Balken.
  • Abhängigkeiten (Vorgänger/Nachfolger) als Verbindungslinien.
  • Aktuelles Datum als senkrechte Linie.

Drag-and-Drop verschiebt eine Phase und aktualisiert ihre start/end-Zeitstempel via PATCH /api/project-phases/:id. Erfordert update:ProjectPhase.

Der Gantt-Chart ist eine **Read-First-Sicht**: Phasen-Bearbeitung im Tab **Phasen** ist meist präziser. Drag-and-Drop ist für schnelle Verschiebungen, nicht für komplexe Abhängigkeits-Logik geeignet.

Tab: Budget

Zeigt das Projektbudget vs. Ist-Kosten als KPI-Dashboard:

  • Gesamtbudget (aus Project.budget + Phasen-Budgets summiert).
  • Material-Ist (aus WorkorderMaterial der zugewiesenen Aufträge).
  • Arbeitszeit-Ist (aus EmployeeTimeTracking der zugewiesenen Aufträge).
  • Differenz Plan/Ist als Ampel (grün/gelb/rot).
  • Drilldown pro Phase und pro Mitarbeiter.

Erfordert view:Project, view:Workorder, view:WorkorderMaterial, view:EmployeeTimeTracking.

Wie auf jeder Detail-Seite verfuegbar — siehe Floating-Quickbar:

  • KAL. (Mini-Kalender)
  • ZEIT (Persoenliche Wochen-Arbeitszeit)
  • ARBEIT (Eigene bevorstehende Aufträge)

UI-Elemente

Button: „+ Neu"

Erfordert create:Project.

Felder und Eingaben

FeldnamePflichtDatentypWirkung beim AusfuellenVoraussetzung
projectNoautomatischNumberCircleAssignmentIdentifiziert das Projekt in Belegen, Reports und der Gantt-Ansicht. Wird beim Anlegen aus dem Nummernkreis vergeben.Nummernkreis konfiguriert.
nameneinStringProjektname in Auswahllisten und Reports. Disabled bei status ∈ {completed, cancelled}.Status nicht final.
descriptionneinTEXTBeschreibung in Detailansicht und Reports.
parentId + parentTypejapolymorphVerknuepft das Projekt mit einem Kunden oder Standort. Steuert Sichtbarkeit auf der jeweiligen Detailseite.view:Customer oder view:Location.
statusjadraft, active, paused, completed, cancelledStatus-Wechsel auf completed/cancelled macht alle bearbeitbaren Felder disabled.Erlaubte Uebergaenge: siehe Workflow.
priorityneinlow, medium, highSortier-/Filter-Anker in Listen und Gantt-Ansicht. Disabled bei finalem Status.
startDate / endDateneinDATEAnker für Gantt-Ansicht und Auswertungen. Disabled bei finalem Status.endDate >= startDate (sofern beide gesetzt).

Workflows und Zustaende

Wiederverwendbare Konzepte

Verknuepfungen zu anderen Modulen

  • Kunde / Standort — Parent.
  • ProjectPhase, ProjectItem, ProjectMember — Sub-Entitaeten.

API/Schnittstellen

MethodeEndpointZweckCASL
GET/api/projectsListeview Project
GET/api/projects/:idDetailview Project
POST/api/projectsAnlegencreate Project
PATCH/api/projects/:idÄndernupdate Project
DELETE/api/projects/:idSoft-Deletedelete Project

Versionshinweise

  • 2026-04-29: Initiale Veroeffentlichung.