feat(team): Kreisdarstellung der Belegschaft und Organigramm-Ansicht
Setzt die Referenzgrafik «Agenten_Bewirtschaftung_v2» um: die 36 digitalen Mitarbeitenden in konzentrischen Ringen, Kernteam innen und gold gerahmt. DATENBASIS Alle 36 Mitarbeitenden samt Porträts sind aus dem Konzeptdokument extrahiert. Die Stufen stecken bereits in den Quelldaten und decken sich exakt mit den Bereichen: lvl 1 = 7 Kernteam, lvl 2 = 18 Zentrale Dienste, lvl 3 = 7 GB Kommerziell, lvl 4 = 4 GB Wohnen. Auch die Reiterbeschriftungen sind wörtlich übernommen — keine neuen Stufennamen erfunden. Neu getrennt: `AgentDirectoryEntry` trägt die Stammdaten aller 36 für die Kreisdarstellung, `TeamAgent` bleibt das vollständige Dossier der sieben Kernteammitglieder. Für die übrigen 29 werden bewusst keine Aufgaben, Kanäle oder Tätigkeiten erfunden; ein Klick zeigt nur eine Vorschau aus dem Verzeichnis. ABWEICHUNG VOM AUFTRAG Der Auftrag nennt als Kernteam Ferdi, Sami, Leo, Bruno, Reto, Milo, Nora. Referenzgrafik und Konzeptdaten sagen übereinstimmend Ferdi, Sina, Lea, Bruno, Reto, Livia, Nora — dort tragen genau diese sieben `kern: true` und `lvl: 1`. Da der Auftrag die Grafik selbst als verbindlich erklärt und Namen laut §10 kein Primärschlüssel sind, folge ich Grafik und Daten. Sami, Leo und Milo kommen in keiner Quelle vor. OBERFLÄCHE - Teamübersicht: Beschreibungstext und «Demo zurücksetzen» entfernt, Kreis mit kumulativen Stufenreitern direkt unter dem Titel - Personalverwaltung: Umschaltung Dossieransicht / Organigramm über ?view=, Organigramm als oben abgeschnittener Halbkreis mit drehbarem Agentenrad (Ziehen, Touch, Pfeiltasten, Klick), aktiv ist wer unten mittig einrastet - Dossier: Untermenü direkt unter den Stammdaten, «Agentenbeschrieb» als erster Reiter, Zuständigkeiten auf drei gekürzt - Kanäle & Systeme: vier Karten pro Zeile, Kategorie-Sinnbild links vor dem Titel, Porträtgruppe statt Namensliste, ein Regler statt Verbinden/Trennen - Bearbeitungsverlauf: neutrale Karten, Farbe nur noch bei Ausnahmepriorität und abweichendem Status, mehr Weissraum Markenlogos gibt es im Repo nicht und wurden nicht nachgezeichnet — je Kategorie steht ein neutrales Sinnbild. Fehlendes Asset, bewusst so gelöst. Positionsdaten stehen ausschliesslich in `agentRingConfig.ts`; Vollkreis und Halbkreis teilen sich dieselbe Geometrie. AUFGERÄUMT `AgentCard` ist durch die Kreisdarstellung ersetzt und entfernt, seine Zusagen sind in `TeamOverviewRing.test.tsx` übergegangen — inklusive der wichtigsten: ausserhalb des Kernteams führt kein Klick in ein Dossier. Zwei echte Fehler unterwegs behoben: jsdom kennt keinen `ResizeObserver` (jetzt mit Rückfallebene statt Absturz), und das Rad las eine Ref im Render. 413 Tests grün, Build grün, ESLint über den Property-On-Code sauber, check:tokens unverändert bei 2249. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
576733d7da
commit
8377ce03b5
61 files changed
+2499
-642
No files matched your search
@@ -1,17 +1,19 @@
|
||||
/**
|
||||
* Property On — Porträts der digitalen Mitarbeiter.
|
||||
* Property On — Porträts aller digitalen Mitarbeitenden.
|
||||
*
|
||||
* Die Bilder stammen aus dem Konzeptdokument «Agenten_Bewirtschaftung_v2.html»,
|
||||
* wo sie als eingebettete JPEGs am jeweiligen Agenten hängen. Sie sind damit
|
||||
* Teil der fachlichen Vorgabe, nicht eine gestalterische Zutat: das digitale
|
||||
* Personalbüro zeigt Mitarbeiter mit Gesicht, nicht abstrakte Werkzeuge.
|
||||
* Die Bilder stammen aus dem Konzeptdokument, wo sie als eingebettete JPEGs am
|
||||
* jeweiligen Agenten hängen. Sie sind fachliche Vorgabe, nicht Dekoration: das
|
||||
* digitale Personalbüro zeigt Mitarbeitende mit Gesicht, keine abstrakten
|
||||
* Werkzeuge.
|
||||
*
|
||||
* Die Zuordnung liegt bewusst in der Darstellungsschicht und nicht in
|
||||
* `domain/teamAgent.ts` oder den Mockdaten. Ein Domain-Typ, der Binärdateien
|
||||
* importiert, wäre an den Bundler gekoppelt und liesse sich weder in einem Test
|
||||
* noch später gegen ein echtes Backend sauber verwenden.
|
||||
* Die Zuordnung liegt bewusst in der Darstellungsschicht und nicht im Domain-Typ
|
||||
* oder in den Mockdaten. Ein Domain-Modell, das Binärdateien importiert, wäre an
|
||||
* den Bundler gekoppelt und weder im Test noch später gegen ein echtes Backend
|
||||
* sauber verwendbar.
|
||||
*
|
||||
* Fehlt zu einer ID ein Bild, fällt `AgentAvatar` auf die Initialen zurück.
|
||||
*
|
||||
* ACHTUNG: generiert. Nicht von Hand pflegen.
|
||||
*/
|
||||
|
||||
import bruno from '../../assets/team/bruno.jpg'
|
||||
@@ -21,6 +23,35 @@ import livia from '../../assets/team/livia.jpg'
|
||||
import nora from '../../assets/team/nora.jpg'
|
||||
import reto from '../../assets/team/reto.jpg'
|
||||
import sina from '../../assets/team/sina.jpg'
|
||||
import ada from '../../assets/team/ada.jpg'
|
||||
import carla from '../../assets/team/carla.jpg'
|
||||
import diego from '../../assets/team/diego.jpg'
|
||||
import dora from '../../assets/team/dora.jpg'
|
||||
import emil from '../../assets/team/emil.jpg'
|
||||
import filip from '../../assets/team/filip.jpg'
|
||||
import kira from '../../assets/team/kira.jpg'
|
||||
import lars from '../../assets/team/lars.jpg'
|
||||
import mia from '../../assets/team/mia.jpg'
|
||||
import paul from '../../assets/team/paul.jpg'
|
||||
import pia from '../../assets/team/pia.jpg'
|
||||
import rea from '../../assets/team/rea.jpg'
|
||||
import rico from '../../assets/team/rico.jpg'
|
||||
import uli from '../../assets/team/uli.jpg'
|
||||
import vela from '../../assets/team/vela.jpg'
|
||||
import vera from '../../assets/team/vera.jpg'
|
||||
import vinz from '../../assets/team/vinz.jpg'
|
||||
import vito from '../../assets/team/vito.jpg'
|
||||
import beat from '../../assets/team/beat.jpg'
|
||||
import fabio from '../../assets/team/fabio.jpg'
|
||||
import nadia from '../../assets/team/nadia.jpg'
|
||||
import oskar from '../../assets/team/oskar.jpg'
|
||||
import otto from '../../assets/team/otto.jpg'
|
||||
import sven from '../../assets/team/sven.jpg'
|
||||
import tino from '../../assets/team/tino.jpg'
|
||||
import gian from '../../assets/team/gian.jpg'
|
||||
import ida from '../../assets/team/ida.jpg'
|
||||
import jana from '../../assets/team/jana.jpg'
|
||||
import zeno from '../../assets/team/zeno.jpg'
|
||||
|
||||
export const AGENT_PHOTOS: Record<string, string | undefined> = {
|
||||
bruno,
|
||||
@@ -30,4 +61,33 @@ export const AGENT_PHOTOS: Record<string, string | undefined> = {
|
||||
nora,
|
||||
reto,
|
||||
sina,
|
||||
ada,
|
||||
carla,
|
||||
diego,
|
||||
dora,
|
||||
emil,
|
||||
filip,
|
||||
kira,
|
||||
lars,
|
||||
mia,
|
||||
paul,
|
||||
pia,
|
||||
rea,
|
||||
rico,
|
||||
uli,
|
||||
vela,
|
||||
vera,
|
||||
vinz,
|
||||
vito,
|
||||
beat,
|
||||
fabio,
|
||||
nadia,
|
||||
oskar,
|
||||
otto,
|
||||
sven,
|
||||
tino,
|
||||
gian,
|
||||
ida,
|
||||
jana,
|
||||
zeno,
|
||||
}
|
||||
Reference in new issue
Block a user