d8f8f728cc
Die gezeichnete Raumkulisse ist ersetzt. Aus Farbflächen konstruierte Wände bleiben neben fotografierten Agentenporträts erkennbar gezeichnet — die Bildwirkung muss aus dem Foto kommen, nicht aus Geometrie. Entfallen sind damit die beiden SVG-Stadtansichten, die CSS-3D-Flächen und die Farbwelt DS_MEETING_ROOM. Neu trägt die Szene die Basler Aussicht aus dem Auftrag als Foto (§5), mit abgestuftem Verlauf für Lesbarkeit und Übergang zur Objektliste. Ein Austausch des Motivs ist ein Einzeiler in `roomBackdrop.ts`. Mehrwert statt Kulisse: Jedes Namensschild zeigt die aktuelle Auslastung seines Agenten — überfällige Fristen, Termine der Woche, offene Exposés, neue Marktchancen, Objekte mit Datenlücken, offene Freigaben. Darüber fasst ein Anriss zusammen, wie viele Bereiche heute Aufmerksamkeit brauchen. Damit beantwortet die Startseite die Frage, mit der sie geöffnet wird, statt sie auf sechs Zahlen zu verteilen. - `agentWorkloadService` hält die fachlichen Festlegungen: Zeitfenster, Dringlichkeitsschwellen und Formulierungen. Der Stichzeitpunkt ist ein Parameter, nicht die Systemuhr — dieselbe Datenlage ergibt dasselbe Ergebnis, und der Dienst ist ohne Renderer prüfbar (10 neue Tests). - `useAgentWorkload` sammelt nur die Bestände ein. - Noras Zahl wird nie «dringend»: sie schlägt vor, sie entscheidet nicht. - Die Schilder bemessen ihre Höchstbreite an der Szenenbreite (`cqw`), nicht am Fenster. Am Fenster gemessen überlappten sie auf schmalen Laptops, weil die Szene um das Seitenmenü schmaler ist. Geprüft: 423 Tests, Typecheck, Build, ESLint, Token-Schwelle (889/925). Im Browser 1280–1920 px: keine Überlappungen, Titel und «Filter & Übersicht» beim Einstieg sichtbar, alle sechs Agentenklicks auf der richtigen Subpage, Tablet-Ansicht mit allen sechs Agenten, keine Konsolenfehler, keine 404. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
36 lines
1.3 KiB
TypeScript
36 lines
1.3 KiB
TypeScript
/**
|
|
* Property On — aktuelle Auslastung eines digitalen Mitarbeitenden.
|
|
*
|
|
* Der Meetingraum auf der Startseite zeigt nicht nur, *wer* für einen
|
|
* arbeitet, sondern *woran gerade*. Ohne diese Zahl wäre die Szene Dekoration;
|
|
* mit ihr ist sie eine Lageübersicht — genau der Anspruch aus CLAUDE.md §1:
|
|
* jeder Bildschirm ist um eine Entscheidung herum gebaut.
|
|
*
|
|
* Die Werte sind abgeleitet, nie gespeichert (CLAUDE.md §5.5): sie entstehen
|
|
* aus den bestehenden Beständen an Fristen, Terminen, Leads und Objekten.
|
|
*/
|
|
|
|
/** Dringlichkeit — steuert allein die Farbe, nie die Aussage. */
|
|
export const WorkloadTone = {
|
|
/** Nichts Auffälliges. */
|
|
CALM: 'CALM',
|
|
/** Sollte diese Woche angeschaut werden. */
|
|
ATTENTION: 'ATTENTION',
|
|
/** Überfällig oder kritisch. */
|
|
URGENT: 'URGENT',
|
|
} as const
|
|
export type WorkloadTone = typeof WorkloadTone[keyof typeof WorkloadTone]
|
|
|
|
export interface AgentWorkload {
|
|
/** Agenten-ID, identisch mit `AGENT_PHOTOS` und der Sitzordnung. */
|
|
agentId: string
|
|
/** Die Zahl selbst — für Sortierung und Tests. */
|
|
count: number
|
|
/**
|
|
* Vollständiger Satz für die Plakette, z. B. «3 Fristen diese Woche».
|
|
* Bewusst inklusive Zahl: eine nackte Ziffer neben einem Kopf sagt nichts.
|
|
*/
|
|
label: string
|
|
tone: WorkloadTone
|
|
}
|