diff --git a/frontend/src/help-content.ts b/frontend/src/help-content.ts index 34df3c9..d77f880 100644 --- a/frontend/src/help-content.ts +++ b/frontend/src/help-content.ts @@ -234,6 +234,144 @@ export const helpSections: HelpSection[] = [ "Organisationen, Typen und Ticket-Hotspots helfen dabei, Auffälligkeiten im Monat schnell zu finden." ] }, + { + id: "statistik-getrackt", + title: "Statistik: Getrackt", + description: "Diese Kennzahl zeigt die gesamte erfasste Session-Zeit im gewählten Monat.", + quickItems: [ + "Summe aller getrackten und nachgetragenen Sessions.", + "Zeigt zusätzlich Session- und Ticketanzahl.", + "Basiswert für den Vergleich mit Teamspace." + ], + details: [ + "Getrackt umfasst alle Sessions des angemeldeten Benutzers im gewählten Monat.", + "Dabei ist egal, ob die Session bereits bewertet wurde oder noch offen ist.", + "Auch automatisch erzeugte Sessions aus fixen Abrechnungen zählen hier mit.", + "Die Ticketanzahl zeigt, auf wie viele unterschiedliche Tickets sich die Sessions verteilen.", + "Dieser Wert ist die Ausgangsbasis für Teamspace-Differenzen: Teamspace minus getrackte Session-Zeit ergibt die Differenz." + ] + }, + { + id: "statistik-teamspace", + title: "Statistik: Teamspace", + description: "Diese Kennzahl zeigt, wie viele Stunden für die Ticket-Tage im CRM beziehungsweise Teamspace eingetragen wurden.", + quickItems: [ + "Summe aller Teamspace-Tageswerte im Monat.", + "Positive oder gleiche Differenz ist grün.", + "Negative Differenz ist rot." + ], + details: [ + "Teamspace-Werte werden pro Ticket und Tag gepflegt, nicht pro einzelner Session.", + "Die Statistik summiert alle Teamspace-Werte des Monats für den angemeldeten Benutzer.", + "Eine positive Differenz bedeutet, dass in Teamspace mehr Zeit steht als in den Sessions getrackt wurde.", + "Eine negative Differenz bedeutet, dass in Teamspace weniger Zeit steht als getrackt wurde.", + "Fehlende Teamspace-Werte können im Monatsabschluss geprüft und bei Bedarf zur Kenntnis genommen werden." + ] + }, + { + id: "statistik-bewertet", + title: "Statistik: Bewertet", + description: "Diese Kennzahl zeigt, wie viel der erfassten Arbeit bereits fachlich eingeordnet wurde.", + quickItems: [ + "Abgerechnet und Nicht abrechenbar zählen beide als bewertet.", + "Der Prozentwert bezieht sich auf die Sessionanzahl.", + "Bewertete Sessions blockieren den Monatsabschluss nicht." + ], + details: [ + "Bewertet ist die Summe aus Abgerechnet und Nicht abrechenbar.", + "Nicht abrechenbare Sessions fallen also nicht aus der Qualität heraus, sondern gelten als bewusst entschieden.", + "Die Zeit zeigt die Summe der bewerteten Session-Minuten.", + "Die Prozentwerte werden zusammen mit den offenen Sessions gerundet, sodass bewertet und offen zusammen 100 Prozent ergeben.", + "Wenn eine Bewertung zurückgenommen wird, wandert die Session wieder in Offen." + ] + }, + { + id: "statistik-offen", + title: "Statistik: Offen", + description: "Diese Kennzahl zeigt Sessions, die noch keine Bewertung haben.", + quickItems: [ + "Offen bedeutet: weder Abgerechnet noch Nicht abrechenbar.", + "Offene Sessions blockieren den Monatsabschluss.", + "Die Klärung erfolgt in der Ticketdetailansicht." + ], + details: [ + "Offen umfasst alle Sessions des Monats ohne Bewertung.", + "Diese Sessions müssen vor dem Monatsabschluss entweder als Abgerechnet oder Nicht abrechenbar markiert werden.", + "Die offene Zeit zeigt, wie viele Minuten noch bewertet werden müssen.", + "Der Monatsabschluss listet offene Bewertungen gruppiert nach Ticket, damit du direkt in die passende Ticketdetailansicht springen kannst.", + "Wird eine Bewertung zurückgenommen, steigt die offene Anzahl wieder." + ] + }, + { + id: "statistik-verlauf", + title: "Statistik: Monatsverlauf und Qualität", + description: "Diese Card verbindet Tagesverlauf, Teamspace-Linie, Bewertungsstand und Qualitätswerte.", + quickItems: [ + "Balken zeigen getrackte Sessions.", + "Die Linie zeigt Teamspace-Werte.", + "Der rechte Bereich zeigt Bewertung und Teamspace-Abgleich." + ], + details: [ + "Der Monatsverlauf zeigt jeden Tag des Monats. Tage ohne Sessions bleiben leer, damit die Monatsstruktur sichtbar bleibt.", + "Die blauen Balken stehen für getrackte Session-Zeit.", + "Die grüne Linie steht für Teamspace-Zeit, sofern für den Tag Werte gepflegt wurden.", + "Der Bewertungsstand vergleicht bewertete und offene Sessions.", + "Der Teamspace-Abgleich zeigt die Gesamtdifferenz zwischen CRM-Werten und getrackter Session-Zeit.", + "Manuell und Fix trennen selbst erfasste Sessions von automatisch erzeugten Sessions aus fixen Abrechnungen." + ] + }, + { + id: "statistik-organisationen", + title: "Statistik pro Organisation", + description: "Diese Card zeigt Aufwand und Teamspace-Abgleich je Kunde beziehungsweise Organisation.", + quickItems: [ + "Gruppiert nach Organisation.", + "Zeigt Sessions, Zeiten und Differenz.", + "Die Liste ist paginiert." + ], + details: [ + "Die Organisationsstatistik fasst alle Tickets und Sessions einer Organisation im gewählten Monat zusammen.", + "Sessions zeigt die Anzahl der einzelnen Arbeitseinträge.", + "Zeiten vergleicht getrackte Session-Zeit mit Teamspace-Zeit.", + "Die Differenz wird als Teamspace minus Sessions berechnet.", + "Der Anteil am Monat zeigt, wie groß der getrackte Aufwand dieser Organisation im Verhältnis zur größten Organisation im Monat ist.", + "Bei vielen Organisationen wird die Liste paginiert, damit die Seite kompakt bleibt." + ] + }, + { + id: "statistik-typen", + title: "Statistik: Typen", + description: "Diese Card trennt den Monatsaufwand nach Support und Consulting.", + quickItems: [ + "Vergleicht Support und Consulting.", + "Zeigt Sessions, Zeiten und Teamspace-Differenz.", + "Zeigt zusätzlich Bewertungsstatus je Typ." + ], + details: [ + "Die Typenstatistik gruppiert Sessions nach Art.", + "Support und Consulting werden getrennt summiert.", + "Die Zeitwerte zeigen getrackte Sessions und Teamspace für den jeweiligen Typ.", + "Die Differenz folgt derselben Logik wie überall: Teamspace minus getrackte Sessions.", + "Die Zeile Abr., Nicht und Offen zeigt, wie viele Sessions dieses Typs bereits bewertet oder noch offen sind." + ] + }, + { + id: "statistik-hotspots", + title: "Ticket-Hotspots", + description: "Diese Card zeigt die größten Zeitblöcke des Monats nach Ticket.", + quickItems: [ + "Sortiert nach größtem Zeitaufwand.", + "Zeigt Sessions, Teamspace und Differenz.", + "Öffnen führt direkt zur Ticketdetailansicht." + ], + details: [ + "Ticket-Hotspots helfen, die größten Aufwandstreiber im Monat schnell zu erkennen.", + "Die Liste zeigt die wichtigsten Tickets nach getrackter Zeit.", + "Pro Ticket siehst du Organisation, Sessionanzahl, aktive Tage, getrackte Zeit, Teamspace-Zeit und Differenz.", + "Offene Tickets werden mit einem Warnstatus angezeigt, damit Bewertungen nachgezogen werden können.", + "Über Öffnen gelangst du direkt in die Ticketdetailansicht des Monats." + ] + }, { id: "profil", title: "Profil", diff --git a/frontend/src/views/StatisticsPage.tsx b/frontend/src/views/StatisticsPage.tsx index 6f28b30..91f48d5 100644 --- a/frontend/src/views/StatisticsPage.tsx +++ b/frontend/src/views/StatisticsPage.tsx @@ -304,17 +304,22 @@ function MetricCard({ value, detail, icon: Icon, - valueClassName = "" + valueClassName = "", + helpAnchor, + helpLabel }: { label: string; value: string | number; detail?: ReactNode; icon: LucideIcon; valueClassName?: string; + helpAnchor?: string; + helpLabel?: string; }) { return ( - - + + {helpAnchor ? : null} +
@@ -496,6 +501,8 @@ export function StatisticsPage({ onNavigate }: StatisticsPageProps) { detail={`${totals?.sessions ?? 0} Session(s), ${totals?.tickets ?? 0} Ticket(s)`} icon={Clock3} valueClassName={trackedTextClass} + helpAnchor="statistik-getrackt" + helpLabel="Hilfe zur Kennzahl Getrackt" /> Differenz {formatTeamspaceDelta(totals?.crmDeltaMinutes ?? 0)}} icon={TrendingUp} valueClassName={teamspaceTextClass} + helpAnchor="statistik-teamspace" + helpLabel="Hilfe zur Kennzahl Teamspace" /> - +
Monatsverlauf und Abrechnungsqualität Getrackter Aufwand pro Tag, Teamspace-Linie und Bewertungsstand in einem Überblick.
{crmCoverage}% Teamspace-Abdeckung - +
@@ -612,7 +625,7 @@ export function StatisticsPage({ onNavigate }: StatisticsPageProps) {
- +
Statistik pro Organisation Kundenaufwand inklusive Teamspace-Differenz und Anteil am getrackten Monatsaufwand. @@ -621,7 +634,7 @@ export function StatisticsPage({ onNavigate }: StatisticsPageProps) { {organizationRangeStart}-{organizationRangeEnd} von {stats?.organizations.length ?? 0} - +
@@ -714,7 +727,7 @@ export function StatisticsPage({ onNavigate }: StatisticsPageProps) { Typen Support und Consulting im direkten Vergleich.
- +
@@ -745,17 +758,17 @@ export function StatisticsPage({ onNavigate }: StatisticsPageProps) { - +
Ticket-Hotspots Die größten Zeitblöcke im Monat.
- +
diff --git a/frontend/src/views/TicketDetailPage.tsx b/frontend/src/views/TicketDetailPage.tsx index 5f7e9f4..3dc9000 100644 --- a/frontend/src/views/TicketDetailPage.tsx +++ b/frontend/src/views/TicketDetailPage.tsx @@ -550,7 +550,6 @@ export function TicketDetailPage({ periodType, period, ticketId, onNavigate }: T Wähle für jede Session genau eine Bewertung aus oder lösche falsche Einträge.
-
{periodLabel} gesamt {formatMinutes(periodTotalMinutes)} @@ -559,6 +558,7 @@ export function TicketDetailPage({ periodType, period, ticketId, onNavigate }: T {periodType === "month" ? "Teamspace gesamt" : "Teamspace Tag"} {formatMinutes(periodTeamspaceMinutes)}
+