Headcount heisst ueberall dasselbe
All checks were successful
CI / Lint, Typen, Tests, Build (push) Successful in 11m36s
CI / Migrationen auf leerer Datenbank (push) Successful in 10m12s

"Headcount" stand auf der Uebersicht fuer die Aktiven und im Bericht fuer eine
andere Zahl -- 785 gegen 788, dasselbe Wort fuer Verschiedenes (N.02). Max hat
die Begriffe festgelegt: Headcount Aktiv fuer die Aktiven, Headcount Aktives
Dienstverhaeltnis fuer Aktive plus Langzeitabwesende.

Die beiden Kacheln auf der Uebersicht tragen jetzt genau diese Namen. Beide
Zahlen gab es dort schon, nur hiess die eine "Aktives Dienstverhaeltnis" und
die andere "Aktive Mitarbeiter:innen (HC)".

Im Bericht ginge ein fester Name nicht: die Kennzahl zaehlt, was gerade
ausgewaehlt ist, auch Geplante oder Ausgetretene. Trifft die Auswahl eine der
beiden Groessen, steht ihr Name in der Ueberschrift; sonst steht dabei, welche
Status gezaehlt wurden -- mit den Anzeigenamen, also "Langzeitabwesenheit" und
nicht "Karenz".
This commit is contained in:
2026-09-29 20:36:22 +02:00
parent 38f8c99968
commit 0039ce5069
4 changed files with 65 additions and 6 deletions

View File

@@ -7,6 +7,7 @@ import {
groupKeysFor,
measureValue,
MEASURE_LABELS,
messgroesseLabel,
type OrgLookups,
type ReportEmployee,
type ReportEvent,
@@ -179,6 +180,33 @@ describe("measureValue", () => {
});
});
describe("messgroesseLabel", () => {
// „Headcount" stand auf der Übersicht für die Aktiven und im Bericht für
// eine andere Zahl (N.02). Der Kunde führt zwei Grössen mit festen Namen;
// die Kennzahl im Bericht zählt aber, was ausgewählt ist.
it("nennt die beiden Grössen des Kunden beim Namen", () => {
expect(messgroesseLabel("headcount", ["Aktiv"])).toBe("Headcount Aktiv");
expect(messgroesseLabel("headcount", ["Aktiv", "Karenz"])).toBe("Headcount Aktives Dienstverhältnis");
expect(messgroesseLabel("headcount", ["Karenz", "Aktiv"])).toBe("Headcount Aktives Dienstverhältnis");
});
it("schreibt sonst dazu, was gezählt wurde", () => {
// Mit Anzeigenamen: „Karenz" heisst in der Oberfläche überall
// „Langzeitabwesenheit".
expect(messgroesseLabel("headcount", ["Aktiv", "Karenz", "Geplant"])).toBe(
"Headcount (Aktiv, Langzeitabwesenheit, Geplant)"
);
expect(messgroesseLabel("headcount", ["Ausgetreten"])).toBe("Headcount (Ausgetreten)");
});
it("lässt die übrigen Kennzahlen unberührt", () => {
// Nur beim Headcount hing an der Auswahl ein zweiter Begriff. „Ø Alter"
// der Aktiven heisst weiter „Ø Alter".
expect(messgroesseLabel("fte", ["Aktiv"])).toBe("FTE");
expect(messgroesseLabel("avg_age", ["Aktiv", "Karenz"])).toBe("Ø Alter");
});
});
describe("aggregateReport", () => {
it("groups rows, sorts groups descending by value, and never includes a salary field", () => {
const employees = [