Files
tickettracker/docs/confluence/02-projekte-budgets-teamspace.md
2026-10-13 10:43:53 +02:00

7.0 KiB

Projekte, Budgets und Teamspace

Diese Seite beschreibt die aktuelle Projekt- und Teamspace-Logik in TicketTracker.

Projekte

Projekte erweitern normale Tickets um Consulting-Projektinformationen.

Ein Projekt enthält unter anderem:

  • Ticketnummer
  • Titel und Organisation
  • Teamspace-Projekt-Einträge
  • Beschreibung und Ziele
  • Zeitraum
  • Projektstatus offen oder geschlossen
  • ToDos
  • Teamspace-Budgets und Verbrauchswerte
  • Teamspace-Unterpositionen

Projekt-Tickets sind Consulting-Tickets. Wird ein Projekt gelöscht, bleiben Ticket, Sessions und ToDos erhalten. Gelöscht werden nur die Projektinformationen.

Teamspace als Budgetquelle

Teamspace ist die fachliche Quelle für Projektbudgets.

Aktuelle Budgetregeln:

  • Teamspace ist die Source of Truth für Projektbudgets.
  • Zammad-Budgets werden nicht mehr als Budgetquelle verwendet.
  • Das Gesamtbudget eines Projekts kommt aus Teamspace.
  • Wenn mehrere Teamspace-Projekte an einem Ticket hängen, wird das Gesamtbudget aus diesen Teamspace-Projekten zusammengesetzt.
  • Unterpositionen zeigen ihre eigenen Teamspace-Budgets und Teamspace-Istwerte.
  • Stückpositionen werden nicht als Stundenbudget in die Stundenbetrachtung eingerechnet.

Verbrauchslogik

Der Projektverbrauch hängt vom Profil-Schalter Teamspace-Zeiten in TT erfassen ab.

Wenn der Schalter aktiv ist:

  • Projekt-Ist kommt aus Teamspace-Tageswerten, die in TicketTracker gepflegt werden.
  • Zusätzlich können manuelle Projektstunden erfasst werden.
  • Progress Bars, Reststunden und Budgetwarnungen verwenden diese Werte.

Wenn der Schalter deaktiviert ist:

  • Projekt-Ist kommt aus Teamspace.
  • Manuelle Projektstunden sind ausgeblendet und serverseitig gesperrt.
  • Teamspace-Tageswerte können nicht in TicketTracker erfasst werden.
  • Statistiken und Widgets zeigen keine TT/Teamspace-Differenzprüfung für diesen Benutzer.

Mehrere Teamspace-Projekte pro Ticket

Ein Ticket kann mehrere Teamspace-Projekt-IDs haben. TicketTracker speichert dafür mehrere Teamspace-Einträge am Projekt.

Beispiel:

  • EP-2025-Comp-009
  • EP-2025-Comp-025

Einer der Einträge ist der Standard. Sessions können einem Teamspace-Projekt-Eintrag zugeordnet werden. Diese Zuordnung erfolgt auf Ebene des Teamspace-Projekts, nicht auf Ebene einzelner Unterpositionen.

Gemeinsames Teamspace-Budget über mehrere Tickets

Mehrere unterschiedliche Ticketnummern können dieselbe Teamspace-Projekt-ID verwenden. TicketTracker behandelt diese Teamspace-Nummer dann als gemeinsame Budgetquelle.

Dabei gilt:

  • Es gibt keine automatische Aufteilung auf die Ticketnummern.
  • Teamspace-API-ID, Teamspace-API-URL, Budget, Unterpositionen und Teamspace-Monatswerte werden für dieselbe Teamspace-Nummer konsolidiert.
  • Der Teamspace-Sync zieht gleiche Teamspace-Nummern nach jedem Lauf wieder auf denselben Datenstand.
  • Die Migration konsolidiert bereits vorhandene doppelte Teamspace-Nummern beim Start.
  • Ticket-spezifische Felder wie Standard-Eintrag, Reihenfolge, Session-Zuordnung und manuelle Projektstunden bleiben am jeweiligen Ticket.

Teamspace-Projekt-ID-Sync

Der Sync auf der Zammad-Sync-Seite löst offene Consulting-Projekte gegen die Teamspace-API auf.

Gespeichert werden unter anderem:

  • Teamspace-API-ID des Projekts
  • Teamspace-API-URL
  • Teamspace-Gesamtbudget
  • Teamspace-Unterpositionen
  • Teamspace-Budgets und Istwerte der Unterpositionen
  • Stückpositionen und deren Erfüllungsstand
  • echte Teamspace-Monatszeiten aus /api/time für den gewählten Monat

Die fachliche Teamspace-ID aus Zammad oder Projektinformationen, zum Beispiel EP-2026-A-035, ist nicht identisch mit der API-ID für Einzelabfragen. TicketTracker speichert deshalb die interne Teamspace-API-ID, sobald sie gefunden wurde.

Teamspace-Monatsabgleich

Der Teamspace-Projekt-ID-Sync auf der Zammad-Sync-Seite enthält zusätzlich einen Monatsabgleich. Der Benutzer wählt einen Monat aus, TicketTracker ruft für diesen Zeitraum die Teamspace-Zeitbuchungen des angemeldeten Teamspace-Benutzers ab und speichert einen Snapshot pro Teamspace-Projekt-Eintrag.

Technische Grundlage:

  • API-Endpoint: /api/time
  • Filter: worker={Teamspace User-ID} und date=YYYY-MM-01..YYYY-MM-letzterTag
  • gezählt werden Einträge mit draftStatus.value = NORMAL
  • relevante Minuten sind amountBillable
  • amount wird als Gesamtzeit mitgeführt, ist aber nicht die Vergleichsgröße

Die Monatswerte werden pro Benutzer, Teamspace-Projekt-Eintrag und Monat gespeichert. Dadurch bleiben drei Dinge getrennt:

  • TT-Tageswerte, die in TicketTracker gepflegt werden
  • echte Teamspace-Monatszeiten aus Teamspace
  • Teamspace-Budget- und Unterpositionswerte aus dem Projektsync

Im Ergebnis des Syncs sieht man pro Teamspace-Projekt:

  • TT-Monatswert
  • TS-Monatswert
  • Differenz
  • Anzahl der gefundenen TS-Zeitbuchungen
  • betroffene Haupt- oder Unterpositionen mit TS-Minuten

Wenn Teamspace-Zeiten auf Unterpositionen gebucht wurden, werden diese ebenfalls dem passenden Teamspace-Projekt-Eintrag zugeordnet. TicketTracker mappt dafür nicht nur die Hauptprojekt-API-ID, sondern auch die synchronisierten Unterpositions-API-IDs. Die Positionsaufschlüsselung wird im Monats-Snapshot gespeichert und kann dadurch später in der Monatsübersicht angezeigt werden.

Unterpositionen

Unterpositionen werden aus Teamspace synchronisiert und im Projektdetail angezeigt. Sie dienen als Teamspace-Anzeige, um Budget, Verbrauch und freie Ressourcen pro Teamspace-Position sichtbar zu machen.

Wichtig:

  • Zeiten werden nicht auf Unterpositionen in TicketTracker erfasst.
  • Unterpositionen bekommen ihre Budgets und Istwerte aus Teamspace.
  • Teamspace-Descriptions werden dekodiert und formatiert ausgegeben.
  • Unterpositionen können einen Alias in TicketTracker bekommen.
  • Akkordions der Unterpositionsgruppen merken sich den letzten offenen oder geschlossenen Zustand pro Benutzer und Projekt.
  • Bei Teamspace-Strukturen mit Überpositionen werden nur echte bebuchbare Unterpositionen angezeigt, nicht reine Summenpositionen.
  • Positionsnummern werden lesbar dargestellt, zum Beispiel 1 statt 0001 oder 1.1 statt 0001.0001.

Stückpositionen

Teamspace-Positionen mit billingType = INVOICEABLE_FIX sind Stück- oder Fixpositionen.

Für diese Positionen gelten andere Regeln:

  • Stundenwerte werden nicht als Stundenbudget interpretiert.
  • TicketTracker zeigt sie als Stückpositionen an.
  • Der Erfüllungsstand wird über plannedIncome gegen sumIncome geprüft.
  • Ist das Soll erreicht, wird die Position als abgerechnet beziehungsweise erfüllt markiert.
  • Überschreitungen werden mit einem Hinweis-Icon angezeigt.

Projektansichten

Die Projektliste zeigt Gesamtbudget, Verbrauch, Reststunden und Projektwarnungen. Bei mehreren Teamspace-Projekten können Detailbalken pro Teamspace-Projekt angezeigt oder ausgeblendet werden. Der Hauptbalken zeigt weiterhin das Gesamtbudget aller Teamspace-Projekte.

Im Projektdetail stehen Projektinformationen und ToDos getrennt von den Teamspace-Unterpositionen. Die Unterpositionen liegen in einer eigenen breiten Card unterhalb der Projekt-/ToDo-Informationen.