Auf ausdrücklichen Wunsch: Giorgio entfällt vollständig. Das weicht bewusst von §6 des Auftrags ab, der ihn als Personalverwalter und Vorgesetzten vorsah — festgehalten, damit die Abweichung später nachvollziehbar bleibt. Entfernt: Rollendefinition `AGENT_SUPERVISOR`, sein gezeichnetes Porträt, sein Eintrag in der Auslastung und in der Belegschaftsansicht sowie die Erwähnung in der Produkttour. Die Personalverwaltung bleibt unverändert über den Menüpunkt «Meine Agenten» erreichbar — sie brauchte nie eine eigene Person am Bildschirm. Mit Giorgio entfällt auch die einzige Kennzahl, die aus den Freigabevorgängen kam; `computeAgentWorkload` braucht `agentWorkItems` deshalb nicht mehr. Ordner und Komponenten heissen jetzt nach ihrem Inhalt: `components/staff/`, `AgentStaffOverview`, `StaffBackdrop`. «Meetingraum» war seit dem Umbau auf Personenkarten irreführend, und ein falscher Name kostet den Nächsten mehr Zeit als die Umbenennung. Fünf statt sechs Karten heisst Flexlayout statt Dreierraster: drei oben, zwei mittig darunter, gleich breit und ohne Lücke. Die Karten geben ihre Höhe nicht mehr selbst vor — mit `height: 100%` beanspruchte jede die volle Fläche und die zweite Zeile fiel aus dem sichtbaren Bereich. Geprüft: 433 Tests, Typecheck, Build, ESLint, Token-Schwelle (889/925). Browser 1280–1920 px und Tablet: fünf Karten vollständig sichtbar, keine Überlappung, Titel und «Filter & Übersicht» beim Einstieg sichtbar, alle fünf Klicks auf der richtigen Subpage, «Meine Agenten» weiterhin erreichbar, keine Konsolenfehler, keine 404. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
43 lines
1.6 KiB
TypeScript
43 lines
1.6 KiB
TypeScript
/**
|
|
* Property On — aktuelle Auslastung eines digitalen Mitarbeitenden.
|
|
*
|
|
* Die Belegschaftsansicht 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
|
|
/**
|
|
* Derselbe Sachverhalt in der ersten Person — das, was der Agent dazu sagen
|
|
* würde. Digitale Mitarbeitende sollen als Personal auftreten, nicht als
|
|
* Kennzahl: «Bei 12 Fristen ist der Termin durch» ist dieselbe Information
|
|
* wie «12 überfällig», aber es spricht jemand.
|
|
*/
|
|
voice: string
|
|
}
|