docs: Rangfolge beim Einbau festhalten — HiveGrid gewinnt

Klarstellung, damit beim Port keine globalen Regeln aus diesem Repo in die
Software wandern.

Verbindlich ist aus diesem Repo nur das Analytics-Eigene und das Fachliche:
Kennzahl-Definitionen, Diagrammregeln, Verhalten — und die Navigationsstruktur
als Verabredung (zwei Einträge in der Seitenleiste, Analytics mit innerer
Leiste).

Nicht verbindlich ist alles Globale: Schrift, Schriftgrößen, Abstände, Farben,
Radien, Control-Höhen, App-Shell, Kopfzeile, i18n, Formatierung. Das kommt
ausschließlich aus HiveGrid. Dass dieser Prototyp dieselbe Schrift, dieselbe
Seitenleisten-Komponente und dieselben Token benutzt, dient allein der
Lesbarkeit neben der Software — es ist keine Vorlage, an der sich die Software
auszurichten hätte. Weicht ein Wert hier von HiveGrid ab, ist der Wert hier
falsch.

Ebenso festgehalten, was Gerüst ist und wegfällt: AppShell, unsere Kopie der
Seitenleiste, PageHeader, die Kopfzeile, die Routen unter app/ und die
Dashboard-Platzhalterseite. Der Nachbau der inneren Leiste wird nicht portiert;
in HiveGrid entsteht sie über das dortige SidebarIconsLayout.

Vermerkt in ZIELSYSTEM.md (neuer Abschnitt 0 mit Zuständigkeitstabelle), im
Kopf von HANDOVER.md und README.md, bei der Struktur in NAVIGATION.md, als
Vorbemerkung zu den bewussten Abweichungen in LEITPLANKEN.md — und als
Kommentarblock in AppShell.tsx und AnalyticsInnerNav.tsx, weil beim Port oft
zuerst der Code gelesen wird.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QPeZNwSeU7qG3RRCwaxEZX
This commit is contained in:
dejanandClaude Opus 5 committed 2026-08-29 21:11:43 +02:00
1 parent 9eec855f57
commit b3d71c1f19
7 files changed
+109 -2

No files matched your search

+10 -1
View File
@@ -1,6 +1,15 @@
# Übergabe an die Entwicklung
> **Vor dem Einbau lesen:**
> **Rangfolge:** Wo dieser Prototyp von HiveGrid Cloud abweicht, **gilt
> HiveGrid** — Schrift, Schriftgrößen, Abstände, Farben, Control-Höhen,
> App-Shell. Dass hier dieselbe Schrift und dieselbe Seitenleisten-Komponente
> stecken, dient nur der Lesbarkeit neben der Software; es ist keine Vorlage,
> an der sich die Software auszurichten hätte. Verbindlich sind aus diesem Repo
> die Kennzahl-Definitionen, die Diagrammregeln, das Verhalten und die
> Navigationsstruktur als Verabredung. Ausführlich:
> [`docs/ZIELSYSTEM.md`](docs/ZIELSYSTEM.md) Abschnitt 0.
>
> **Ebenfalls vor dem Einbau lesen:**
> [`docs/SCOPE-ANALYTICS-DASHBOARD.md`](docs/SCOPE-ANALYTICS-DASHBOARD.md).
> Der Zuschnitt zwischen Analytics und Dashboard ist noch offen und betrifft die
> Übersichtsseite und den Handlungsbedarf.
+6 -1
View File
@@ -145,7 +145,12 @@ ist noch offen und läuft bis dahin auf Interim-UI. Für diesen Prototyp heißt
das: Verbindlich zu übergeben sind **Kennzahl-Definitionen, Chart-Regeln und
Verhalten** — die Pixelanordnung ist ein Vorschlag.
**Rangfolge:** Wo dieser Prototyp von HiveGrid abweicht, gilt HiveGrid. Schrift,
Größen, Abstände, Farben und App-Shell kommen von dort; aus diesem Repo kommen
die Kennzahl-Definitionen, die Diagrammregeln, das Verhalten und die
Navigationsstruktur als Verabredung.
Details, Dateipfade und die konkrete Einbau-Liste stehen in
[`docs/ZIELSYSTEM.md`](docs/ZIELSYSTEM.md). Welche Bereiche der Zielanwendung
[`docs/ZIELSYSTEM.md`](docs/ZIELSYSTEM.md) — die Rangfolge in Abschnitt 0. Welche Bereiche der Zielanwendung
bereits finale Subframe-Screens tragen — und damit als Leitplanke taugen — steht
in [`docs/LEITPLANKEN.md`](docs/LEITPLANKEN.md).
+8
View File
@@ -190,6 +190,14 @@ lieber neu zählen.
## 6. Wo dieser Prototyp bewusst abweicht
> Vorab, damit die folgende Tabelle nicht falsch gelesen wird: **Eine bewusste
> Abweichung ist eine Bitte um eine Entscheidung, kein Freibrief.** Bei
> globalen Regeln — Schrift, Größen, Abstände, Farben, Control-Höhen — gilt
> ohne Diskussion HiveGrid. Die Punkte unten betreffen ausschließlich den
> Analytics-Bereich und sind begründet, damit sie beim Einbau nicht
> versehentlich „korrigiert" werden. Rangfolge: [ZIELSYSTEM.md](ZIELSYSTEM.md)
> Abschnitt 0.
Ein Abgleich mit den nachgezogenen Cloud-Screens fördert drei Stellen zutage, an
denen dieser Prototyp anders arbeitet. Sie stehen hier, damit sie beim Einbau
als **Entscheidung** erkennbar sind und nicht als Versehen wegkorrigiert werden.
+9
View File
@@ -19,6 +19,15 @@ Gerendert wird mit derselben Komponente wie in der Software
(`ui/components/SidebarWithSections`, aus der Cloud-Fassung portiert) und
derselben Schrift (Instrument Sans, selbst gehostet aus denselben Dateien).
> **Für den Einbau:** Verbindlich ist an dieser Seitenleiste die **Struktur** —
> zwei Einträge, Analytics mit innerer Leiste. Nicht verbindlich ist ihre
> Umsetzung hier. In der Software werden die zwei Einträge in die bestehende
> `AppSidebar` eingehängt und die innere Leiste über das dortige
> `SidebarIconsLayout` gebaut; unser Nachbau wird nicht mitportiert. Globale
> Regeln — Schrift, Größen, Abstände, Farben — kommen ausschließlich aus
> HiveGrid und werden von hier aus **nicht** überschrieben. Siehe
> [ZIELSYSTEM.md](ZIELSYSTEM.md) Abschnitt 0.
**Analytics ist ein einzelner Menüpunkt**, kein aufklappbarer Bereich. Die fünf
Analyse-Seiten sind darin über eine **innere Leiste** erreichbar:
+52
View File
@@ -11,6 +11,58 @@ Größenordnung: 678 Route-Dateien, davon 575 im Core-Manifest.
---
## 0. Rangfolge beim Einbau — HiveGrid gewinnt
**Dieser Prototyp ist nachrangig.** Wo er von HiveGrid Cloud abweicht, gilt
HiveGrid — ohne Rückfrage, ohne Ausnahme. Das betrifft alles Globale:
| | Wer bestimmt |
|---|---|
| Schrift, Schriftgrößen, Zeilenhöhen | **HiveGrid** |
| Abstände, Paddings, Margins, Raster | **HiveGrid** |
| Farben der Oberfläche, Rahmen, Radien, Schatten | **HiveGrid** |
| Control-Höhen, Komponentenvarianten, Zustände | **HiveGrid** |
| App-Shell, Seitenleiste, Kopfzeile, Seitenkopf | **HiveGrid** |
| i18n, Formatierung, Zeitzone | **HiveGrid** |
Dass dieser Prototyp dieselbe Schrift, dieselbe Seitenleisten-Komponente und
dieselben Token benutzt, hat **einen einzigen Zweck**: Er soll neben der
Software lesbar sein und nicht wie ein Fremdkörper wirken. Es ist **keine
Vorlage, an der sich die Software auszurichten hätte.** Fällt beim Einbau auf,
dass hier ein Wert von HiveGrid abweicht, ist der Wert hier falsch — nicht dort.
### Was aus diesem Repo verbindlich ist
Nur das Fachliche und das Analytics-Eigene:
1. **Die Navigationsstruktur als Verabredung** — zwei Einträge in der
Seitenleiste (`Dashboard`, `Analytics`), und Analytics trägt eine **innere
Leiste** mit den fünf Analyse-Seiten. Verbindlich ist die *Struktur*, nicht
ihre Umsetzung hier: In der Software werden diese zwei Einträge in die
bestehende `AppSidebar` eingehängt und die innere Leiste über das dortige
`SidebarIconsLayout` gebaut. Unser Nachbau ist die Beschreibung, nicht das
Bauteil.
2. **Kennzahl-Definitionen** ([KPI-KATALOG.md](KPI-KATALOG.md)) —
was gerechnet wird, mit welchem Zeitbezug.
3. **Diagrammregeln** ([DESIGN-SYSTEM.md](DESIGN-SYSTEM.md)) — Palette,
Achsen, Diagrammwahl, Leerzustände. Das ist die Lücke, die HiveGrid heute
nicht füllt (siehe [LEITPLANKEN.md](LEITPLANKEN.md) Abschnitt 4).
4. **Verhalten** — Filterlogik, Zeitbezüge, Widget-Sichtbarkeit,
Sortier- und Blätterverhalten.
### Was aus diesem Repo Gerüst ist und wegfällt
`components/layout/AppShell.tsx`, unsere Kopie der Seitenleiste, `PageHeader`,
die Kopfzeile mit Suche und Glocke, die Routen unter `app/` und die
Platzhalterseite für das Dashboard. All das existiert, damit der Prototyp
alleine lauffähig und beurteilbar ist. Beim Einbau übernehmen
`SubframeAppShell`, `AppSidebar`, `PageShell` und die Loader der Software.
**Kurz:** Aus diesem Repo kommt der Inhalt des Analytics-Bereichs und die
Verabredung, wo er in der Navigation sitzt. Alles andere kommt aus HiveGrid.
---
## 1. Der Platz dieses Prototyps
Das Ziel ist der Tenant-Dashboard-Screen unter `…/<tenant>/dashboard`.
@@ -20,6 +20,16 @@ import type { SeitenId } from "../../data/filtering";
* Tastaturfokus auf Beschriftungen aufklappt — verzögert, damit sie beim
* bloßen Überstreichen nicht aufspringt. Unterhalb `sm` tritt an ihre Stelle
* eine Reiterleiste; auch das ist aus dem Original übernommen.
*
* ────────────────────────────────────────────────────────────────────────────
* BEIM EINBAU: Dieser Nachbau wird NICHT portiert.
*
* Verbindlich ist die Verabredung — Analytics bekommt eine innere Leiste mit
* den fünf Analyse-Seiten. Gebaut wird sie in HiveGrid mit dem dortigen
* `SidebarIconsLayout`, das genau diesen Zweck hat (Leads, Termine, HR,
* Einstellungen nutzen es bereits). Diese Datei beschreibt das Ziel, sie ist
* nicht das Bauteil. Rangfolge: docs/ZIELSYSTEM.md Abschnitt 0.
* ────────────────────────────────────────────────────────────────────────────
*/
const OEFFNEN_MS = 300;
@@ -23,6 +23,20 @@ import { HEUTE } from "../../utils/dateUtils";
* Platzhalterseite, weil es ein eigenes Feature ist und hier nicht gestaltet
* wird — aber ein Menüpunkt, der nur einen Hinweis auslöst, lässt offen, ob
* etwas fehlt oder etwas kaputt ist.
*
* ────────────────────────────────────────────────────────────────────────────
* BEIM EINBAU: Diese Datei wird NICHT portiert.
*
* Sie existiert, damit der Prototyp alleine lauffähig ist. In HiveGrid Cloud
* übernehmen `SubframeAppShell` und `AppSidebar`. Verbindlich ist aus dieser
* Datei allein die **Struktur**: zwei Einträge in der Seitenleiste, Dashboard
* und Analytics — mehr nicht, weil alles Übrige dort schon steht.
*
* Globale Regeln (Schrift, Größen, Abstände, Farben, Control-Höhen) kommen
* ausschließlich aus HiveGrid und werden von hier aus nicht überschrieben.
* Weicht ein Wert hier von dort ab, ist der Wert hier falsch.
* Rangfolge: docs/ZIELSYSTEM.md Abschnitt 0.
* ────────────────────────────────────────────────────────────────────────────
*/
export function AppShell({ children }: { children: React.ReactNode }) {
const pathname = usePathname();