feat(team): Porträts der digitalen Mitarbeiter aus dem Konzept übernehmen

Bisher zeigten die Avatare Initialen auf einer Tonfarbe. Ich hatte das bewusst
so gebaut, weil erfundene Gesichter in einer Kundendemo irreführend wären — das
Konzeptdokument «Agenten_Bewirtschaftung_v2.html» trifft diese Entscheidung
jedoch bereits: dort hängt an jedem der 36 Agenten ein Porträt als eingebettetes
JPEG. Die sieben Kernagenten sind daraus extrahiert.

- src/assets/team/*.jpg — sieben Porträts, je rund 6 KB, Zuordnung über die
  Mailadresse aus dem Konzept, die exakt unseren Agenten-IDs entspricht
- agentPhotos.ts hält die Zuordnung in der Darstellungsschicht. Ein Domain-Typ,
  der 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, zeigt der Avatar weiterhin die Initialen; dasselbe
  greift, wenn das Laden fehlschlägt

Der zugängliche Name hängt weiterhin an genau einem Element, nie an zweien: mit
Porträt am erzeugten <img> über `alt`, ohne Porträt am Container über role="img"
und aria-label.

vite-env.d.ts ergänzt — die Referenz auf vite/client fehlte, ohne sie kennt
TypeScript die Modul-Deklarationen für Assets nicht.

415 Tests grün, Build grün, die sieben JPEGs werden korrekt als Assets emittiert.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin SutterandClaude Opus 5 committed 2026-08-03 18:23:03 +02:00
1 parent a7e05fb7f0
commit 576733d7da
11 files changed
+64 -9

No files matched your search

+33
View File
@@ -0,0 +1,33 @@
/**
* Property On — Porträts der digitalen Mitarbeiter.
*
* 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 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.
*
* Fehlt zu einer ID ein Bild, fällt `AgentAvatar` auf die Initialen zurück.
*/
import bruno from '../../assets/team/bruno.jpg'
import ferdi from '../../assets/team/ferdi.jpg'
import lea from '../../assets/team/lea.jpg'
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'
export const AGENT_PHOTOS: Record<string, string | undefined> = {
bruno,
ferdi,
lea,
livia,
nora,
reto,
sina,
}