Zum Inhalt

Projekte

Ein Project ist ein eigenständiges ManagedObject in Polycrate, mit dem sich zeitlich begrenzte oder laufende Vorhaben abbilden lassen — etwa Kundenprojekte, Onboardings, Offboardings oder interne Workstreams. Projekte aggregieren Aktivität, tragen ein eigenes Embedded Notes-Feld und sind das Ziel für Zeiterfassung über Notes vom Kind comment.

Project ist kein Note-Kind

Obwohl Projekte eng mit Notes interagieren, sind sie ein eigenes Modell, nicht nur ein weiterer Note-Kind. Hintergrund: Projekte brauchen ein ManagedObject-Verhalten (Labels, Embedded-Note, Metriken, RBAC), was über ein Feld kind=project in Notes nicht sauber abbildbar wäre.

Project-Kinds

Jedes Projekt trägt ein kind-Feld, das den Lebenszyklus klassifiziert:

Kind Bedeutung
onboarding Einführung eines Kunden oder Teams. Definiertes Ende erwartet.
offboarding Abschluss / Übergabe. Typischerweise kurz und fokussiert.
ongoing Laufender Workstream ohne definiertes Ende (z. B. "Managed Services Kunde XYZ")

Das kind-Feld beeinflusst primär die Darstellung (Badges, Listensortierung) und die Default-Dashboards. Es gibt darüber hinaus keine harten semantischen Zusicherungen.

Typische Felder

Feld Zweck
name / display_name Projektname
kind siehe oben
organization / workspace Kontext — ein Projekt liegt immer in einer Organisation
start_date / end_date Zeitraum (optional)
budget_hours Optionale Stunden-Obergrenze für Reports
embedded_note Angeheftete Projekt-Note (kind=object-note), z. B. mit Kickoff-Notizen
state Aggregierter Zustand (OK/WARNING/CRITICAL)

Notes am Projekt

Notes binden sich über den FK Note.project an ein Projekt. Praktisch relevant:

  • Todos landen als Aufgabenliste am Projekt.
  • Comments mit time_tracked_hours bilden das Zeitbuchungslog des Projekts.
  • Meeting-Notes dokumentieren Termine rund um das Projekt — inklusive Vydeo-Meeting-Link.
  • Post-Mortems können zur Projekt-Zeitachse geführt werden, wenn ein Incident das Projekt betraf.

Wie das im Detail funktioniert (Kinds, Felder, RBAC) siehe Notes.

Zeiterfassung & Reports

Das Zeitbuchungs-Feature lebt in Notes, nicht direkt im Projekt. Ein Projekt aggregiert aber automatisch:

  • total_tracked_hours — Summe aus allen comment-Notes mit FK auf dieses Projekt.
  • Zeitverlauf — Summen pro Tag / Woche / Monat für Tabellen und Charts.
  • Budget-Verbrauch — wenn budget_hours gesetzt ist, wird der Verbrauch in Prozent angezeigt und eine Warnung ausgelöst, wenn 80 % / 100 % überschritten werden.

Aggregierte Reports sind über die API als eigene Endpunkte verfügbar (z. B. /api/v1/project/{id}/report/) und als Metrik-Funktionen für Dashboards ansprechbar.

Embedded Note

Jedes Projekt kann eine angeheftete Note vom Kind object-note tragen (siehe Notes → Embedded Object-Notes). Sie wird im Detail-View prominent oben angezeigt und dient als lebendes Dokument:

  • Projekt-Kontext, Stakeholder, Zielbild
  • Wichtige Termine
  • Offene Risiken

Die Embedded Note ist pro Projekt eindeutig.

Typischer Lebenszyklus

┌──────────┐    ┌──────────────┐    ┌────────────┐    ┌────────────┐
│ Anlegen  │───▶│ Aktive Phase │───▶│ Abschluss  │───▶│ Archiviert │
│  (kind:  │    │   Notes,     │    │  (end_date │    │ (read-only │
│ onboard/ │    │  Comments,   │    │   gesetzt) │    │ via RBAC)  │
│ ongoing) │    │  Timetrack.  │    │            │    │            │
└──────────┘    └──────────────┘    └────────────┘    └────────────┘

In jeder Phase lassen sich Notes anheften, aktualisieren und abschließen.

RBAC & Sichtbarkeit

Projekte folgen dem generischen RBAC-System:

  • Organisation-Admin sieht und bearbeitet alle Projekte seiner Organisation.
  • Workspace-Mitglieder sehen nur Projekte, auf denen sie explizit Leseberechtigung haben.
  • Zeit-Reports sind separat berechtigt — ein User darf ggf. auf das Projekt zugreifen, aber nicht auf die aggregierten Stunden.

API-Endpunkte (kurz)

  • GET /api/v1/project/ — Liste/Filter
  • POST /api/v1/project/ — Anlegen
  • GET /api/v1/project/{id}/report/ — Aggregierter Zeit-Report

Die Projekt-API folgt dem üblichen DRF-Router-Schema (basename=project, siehe User Management & RBAC).

Verwandte Themen