Runde 8 hat Livia zur Research- & Market-Intelligence-Agentin gemacht. Die Exposé-Erstellung war der Kern ihrer alten Rolle und fällt mit ihr weg — sie wird nicht nachgeordnet weitergeführt. Ein zweiter Reiter hätte die Funktion sichtbar gelassen und die neue Positionierung damit halbiert. Entfernt: 23 Dateien (Arbeitsbereich, dreistufiger Assistent, Dossier mit elf Bereichen, Provider, Services, Hooks, Feldkatalog, Mockdaten, deterministischer Textbaustein) sowie `generateExposeText` aus `IAIService` und beiden Implementierungen. Livias Arbeitsplatz zeigt jetzt nur noch die Recherche-Leads — ohne Reiterbalken, weil eine Leiste mit einem Eintrag eine Alternative behauptet, die es nicht gibt. Ihr Personalblatt, die Bearbeitungsverlaufs-Einträge und die Teamdokumentation sind auf die neue Rolle nachgezogen; die beiden Beispielvorgänge zeigen jetzt eine Leaderzeugung und ein Review mit widersprüchlichen Quellen statt Lagebeschrieb und Exposétext. Bei Nora entfällt die Mehrfachauswahl in der Objektliste: sie diente allein der Weiterleitung an die Exposé-Erstellung. Eine Auswahl ohne Ziel wäre ein Bedienelement, das nichts auslöst. Die Matching-Darstellung selbst bleibt unverändert. Der Wiederaufbau ist in `archive/livia/` beschrieben; das Manifest hält jetzt fest, welche seiner Annahmen eingetreten sind und welche nicht — Livia bleibt im Team, nur die Funktion ist weg. Geprüft: tsc 0 Fehler, eslint 0 Fehler/0 Warnungen, 423/423 Tests grün, Produktionsbuild erfolgreich, Smoke-Test über sieben Seiten ohne Laufzeitfehler, 12/12 Abnahmekriterien erfüllt. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
15 KiB
Livia — Wiederherstellungspaket
Zweck: Livia («Exposé Master», PO-ZD-21) und ihre Funktionalitäten werden aus der Anwendung entfernt. Dieses Verzeichnis enthält alles, was für einen vollständigen Wiedereinbau nötig ist — die Originaldateien im Original-Pfadlayout und ein Verzeichnis sämtlicher Stellen, an denen Livia in gemeinsam genutzten Dateien verdrahtet war.
Angelegt am 21.08.2026, Stand Commit
5527448(2026-08-18, «fix(startseite): Porträts scharf statt weich, besonders die hinteren»), Branchagents6.Vollzogen am 23.08.2026. Mit Runde 8 wurde Livia zur Research- & Market-Intelligence- Agentin, und die Exposé-Funktion ist vollständig aus der Anwendung entfernt worden — nicht bloss nachgeordnet. Alle 23 Dateien aus Teil A sind gelöscht, die Eingriffe aus Teil B ausgeführt. Dieses Manifest ist damit von der Vorsorge zur Wiedereinbau-Anleitung geworden.
Abweichungen gegenüber der ursprünglichen Annahme — beim Wiedereinbau beachten:
- Livia ist nicht aus den Registern entfernt worden. Sie bleibt im Team, nur mit anderer Rolle. Abschnitt 2.2 beschreibt einen Rückbau, der so nicht stattgefunden hat: die Einträge in
agentWorkspaces.ts,teamAgents.ts,agentPhotos.tsundagentDirectory.tsstehen unverändert, dort wurde nur die Funktionsbezeichnung geändert. Das Team hat weiterhin fünf Mitglieder; die Sitzordnung im Meetingraum ist unberührt.- Die Weiterleitung bei Nora (Abschnitt 2.5) ist entfallen, weil sie ohne Exposé kein Ziel mehr hatte. Mit Runde 8 fliessen Leads in die Gegenrichtung: Livia recherchiert, Nora gleicht ab.
- Brunos Abschnitt «Lagebericht (von Livia)» steht unverändert — er hing an der Lage-, nicht an der Exposé-Funktion.
- Zusätzlich entfernt, weil erst mit Runde 8 entstanden:
ExposeLeadSection.tsx.Fachliche Beschreibung und System-Prompt liegen separat in
../../LIVIA_PROFIL_UND_PROMPT.md.
0. Vor dem Rückbau: Git-Marke setzen
Dieses Paket ist die zweite Absicherung. Die erste und verlässlichste ist die Versionsgeschichte. Deshalb vor dem Entfernen:
git tag -a livia-vor-rueckbau -m "Letzter Stand mit vollständiger Livia-Funktionalität"
git push origin livia-vor-rueckbau
Danach ist ein vollständiger Wiedereinbau jederzeit auch so möglich:
# Einzelne Datei zurückholen
git checkout livia-vor-rueckbau -- src/components/expose/
# Oder den kompletten Rückbau-Commit umkehren
git revert <commit-des-rueckbaus>
Das Archiv hier ist für den Fall gedacht, dass die Historie nicht zur Verfügung steht — etwa weil in einem anderen Repository, einem neuen Projekt oder aus einem Export heraus gearbeitet wird.
1. Teil A — Dateien, die ganz zu Livia gehören
Diese 23 Dateien haben ausserhalb von Livia keinen Zweck. Beim Rückbau werden sie gelöscht;
beim Wiedereinbau werden sie aus archive/livia/src/… an dieselbe Stelle zurückkopiert.
| Datei | Rolle |
|---|---|
src/pages/supply/MyListings.tsx |
Livias Arbeitsplatz (Route /supply/my-listings) |
src/components/expose/ExposeWizard.tsx |
Drei-Schritt-Assistent Hochladen → Exposé → Export |
src/components/expose/ExposeFieldGroup.tsx |
Feldgruppe eines Dossier-Bereichs |
src/components/expose/ExposeMediaManager.tsx |
Bild- und Dokumentenkuration |
src/components/expose/LeadTable.tsx |
Leadliste aktiv / archiviert |
src/components/expose/LeadWorkspace.tsx |
Arbeitsbereich unter dem geöffneten Lead |
src/components/expose/index.ts |
Barrel |
src/domain/expose.ts |
ExposeDraft, ExposeImage, ExposeDocument, ExposeValues |
src/domain/exposeLead.ts |
ExposeLead, ExposeLeadStatus |
src/provider/IExposeProvider.ts |
Provider-Schnittstelle Entwürfe |
src/provider/MockupExposeProvider.ts |
Mock-Implementierung Entwürfe |
src/provider/IExposeLeadProvider.ts |
Provider-Schnittstelle Leads |
src/provider/MockupExposeLeadProvider.ts |
Mock-Implementierung Leads |
src/services/exposeService.ts |
Vorbelegung, Bildimport, Speichern, Erstellen |
src/services/exposeLeadService.ts |
Leads lesen, anlegen, archivieren |
src/services/exposeExport.ts |
Vorschau (HTML), PDF (Druckdialog), Word (.doc) |
src/services/ai/mock/exposeTextBuilder.ts |
Deterministischer Textbaustein (Kernstück) |
src/hooks/useExpose.ts |
React-Query-Hooks für Entwürfe |
src/hooks/useExposeLeads.ts |
React-Query-Hooks für Leads |
src/lib/exposeFields.ts |
Die 11 Bereiche und 9 Pflichtfelder |
src/mock-data/exposeLeads.ts |
Seed-Daten Leads |
src/mock-data/agents/livia.ts |
Personaldossier |
src/assets/team/livia.jpg |
Porträt |
Es gibt keine Barrel-Exporte in src/domain/index.ts oder src/hooks/index.ts, die
angepasst werden müssten — geprüft. Der einzige Barrel ist src/components/expose/index.ts,
und der verschwindet mit dem Ordner.
Wiedereinbau Teil A:
cp -r archive/livia/src/. src/
2. Teil B — Gemeinsam genutzte Dateien mit chirurgischen Eingriffen
Diese 16 Dateien bleiben bestehen; aus ihnen wird Livia herausgeschnitten. Das ist der Teil,
der bei einem Wiedereinbau ohne Notizen Arbeit macht — deshalb steht hier jede Stelle einzeln.
Die Zeilennummern beziehen sich auf Commit 5527448 und verschieben sich nach dem Rückbau.
2.1 Routing
src/App.tsx — zwei Zeilen (31 und 74):
const MyListings = lazy(() => import('./pages/supply/MyListings'))
<Route path="/supply/my-listings" element={<MyListings />} />
2.2 Zentrale Register — hier hängt am meisten dran
src/lib/agentWorkspaces.ts — eine einzige Zeile in AGENT_WORKSPACES (Zeile 28):
{ id: 'livia', name: 'Livia', role: 'Exposé Master', path: ROUTES.SUPPLY.AGENT_LIVIA },
Wichtig: Diese Liste ist die zentrale Quelle für Sidebar (
appShellConfig.ts), globales Navigationsmenü (GlobalNavMenu.tsx), Willkommensdialog (WelcomeDialog.tsx) und die Sitzplätze im 3D-Meetingraum der Startseite (meetingRoomSeats.ts). Ein Eintrag hier entfernt Livia an allen vier Stellen zugleich — und bringt sie ebenso überall zurück. Nach dem Rückbau ist das Team vier statt fünf Personen; die Sitzordnung im Meetingraum ändert sich dadurch sichtbar.
src/mock-data/teamAgents.ts — drei Stellen:
import { liviaAgent } from './agents/livia' // Zeile 16
liviaAgent, // in mockTeamAgents, Position 3
LIVIA: 'livia', // in AGENT_IDS
src/components/team/agentPhotos.ts — zwei Zeilen (21 und 62):
import livia from '../../assets/team/livia.jpg'
livia,
src/lib/constants.ts — Route und Fristwert:
AGENT_LIVIA: '/supply/my-listings', // Zeile 102
export const STALE_EXPOSE_LEADS = 30 * 1000 // aggressive — Weiterleitungen sollen sofort erscheinen // Zeile 62
sowie der ganze Block «Livia — Leads und Exposé» (Zeilen 319–356):
EXPOSE_LEAD_TABS, ExposeLeadTab, EXPOSE_LEAD_TAB_LABELS, EXPOSE_STEPS,
EXPOSE_IMAGE_CATEGORY_LABELS, EXPOSE_DOCUMENT_TYPE_LABELS, EXPOSE_TONALITY_LABELS.
Der Block liegt wörtlich in fragmente/constants_livia.ts.txt.
2.3 KI-Schicht
Wörtlich in fragmente/aiService_livia.ts.txt.
| Datei | Was entfällt |
|---|---|
src/services/ai/IAIService.ts |
Block «Exposé texts (Livia)»: ExposeTextSection, ExposeTonality, ExposeTextInput, ExposeTextResult (Z. 200–232) und die Interface-Methode generateExposeText (Z. 281) |
src/services/ai/mock/MockAIService.ts |
Importe ExposeTextInput/ExposeTextResult (Z. 17–18), Import buildExposeText (Z. 25), Implementierung generateExposeText (Z. 305–309) |
src/services/ai/backend/BackendAIService.ts |
Importe (Z. 62–63) und die Delegation generateExposeText an den Mock (Z. 687–689) |
Achtung beim Wiedereinbau:
generateExposeTextsteht im InterfaceIAIService. Fehlt die Methode in einer der beiden Implementierungen, bricht der Typecheck — beide zusammen zurückbauen.
2.4 Auslastungsanzeige der Agenten
src/services/agentWorkloadService.ts:
expose: 5inURGENT_FROM(Z. 36)- Importe
ExposeLeadStatus/ExposeLead(Z. 3–4) und das FeldexposeLeadsin der Eingabe (Z. 51) - der ganze Block «Livia: weitergeleitete Leads» (Z. 117–128), inklusive der Sprachfassungen «Kein Exposé offen. Leite mir einen Lead weiter, dann lege ich los.» und «{n} Leads warten auf ein Exposé von mir.»
src/hooks/useAgentWorkload.ts: Import useExposeLeads, die Zeile
const { data: exposeLeads = [], isLoading: exposeLoading } = useExposeLeads(), das Feld in
computeAgentWorkload({ … }), die Abhängigkeitsliste und exposeLoading im isLoading.
Beides wörtlich in fragmente/workload_livia.ts.txt.
2.5 Die Agentenkette Nora → Livia → Bruno
Das ist inhaltlich der heikelste Teil — hier verschwindet nicht nur Livia, sondern der sichtbare Beweis, dass die Agenten einander zuarbeiten.
src/components/market-leads/LeadDetail.tsx (Noras Seite):
- Import
useCreateExposeLead(Z. 5),const forwardLead = useCreateExposeLead()(Z. 42) - die Funktion
handleForward()(Z. 62–77) - der Knopf «An Livia zur Exposé-Erstellung weiterleiten» (Z. 194–204) samt Mehrfachauswahl der Objekte und der Erfolgsmeldung «An Livia weitergeleitet — {n} Objekt(e) für {Firma}.»
Wörtlich in fragmente/leadDetail_weiterleitung.tsx.txt.
src/components/visits/VisitPreparationDrawer.tsx (Brunos Briefing), Zeile 154:
<SectionTitle>Lagebericht (von Livia)</SectionTitle>
Dazu das Feld in src/domain/visitAssignment.ts (Z. 27, Kommentar «Lagebericht, den Bruno bei
Livia angefragt hat») und zwei Mocktexte in src/mock-data/visitAssignments.ts (Z. 46 und 84),
die beide mit «Lagebericht von Livia: …» beginnen.
Entscheidung nötig — siehe Abschnitt 4.
2.6 Mockdaten der Verwaltungsebene
| Datei | Livia-Anteil | Archivkopie |
|---|---|---|
src/mock-data/agentDirectory.ts |
Eintrag id: 'livia' (Z. 42–52) |
im Fragment |
src/mock-data/agentConnections.ts |
AGENT_IDS.LIVIA in vier usedByAgentIds-Listen (Z. 35, 205, 289, 380) — nur die ID entfernen, nicht die Anbindung |
— |
src/mock-data/agentProtocol.ts |
fünf Einträge (Z. 369–449, 691–703, 836–848, 945–956, 972–983) | fragmente/agentProtocol_livia.ts.txt |
src/mock-data/agentWorkItems.ts |
awi-livia-01 und awi-livia-02 (Z. 1226–1498) |
fragmente/agentWorkItems_livia.ts.txt |
2.7 Tests
| Datei | Was bricht |
|---|---|
src/components/layout/__tests__/appShellConfig.test.ts |
Z. 52 erwartet ['Ferdi', 'Bruno', 'Livia', 'Nora', 'Sina']; Z. 88 erwartet, dass ROUTES.SUPPLY.AGENT_LIVIA den Seitennamen «Livia» ergibt |
src/services/__tests__/agentWorkloadService.test.ts |
verwendet exposeLeads in der Eingabe und prüft Livias Auslastungsbahn |
2.8 Hilfsskript
scripts/build-agent-portraits.mjs — Zuordnung 'image3.jpg': 'livia' (Z. 51). Nur relevant,
wenn die Porträts neu erzeugt werden.
3. Reihenfolge
Rückbau (von aussen nach innen, damit der Typecheck bei jedem Schritt hilft):
App.tsx— Route herausagentWorkspaces.ts,teamAgents.ts,agentPhotos.ts— aus den Registern nehmenLeadDetail.tsx— Weiterleitung,useAgentWorkload.ts+agentWorkloadService.ts— Bahn- AI-Schicht (Interface und beide Implementierungen zusammen)
- Mockdaten (Directory, Connections, Protokoll, WorkItems)
- Tests anpassen
constants.ts— Block und Route- Erst jetzt die 23 Dateien aus Teil A löschen
npx tsc --noEmit && npm run lint && npm test
Wiedereinbau (genau umgekehrt):
cp -r archive/livia/src/. src/constants.tsaus dem Fragment ergänzen- AI-Schicht (Interface und beide Implementierungen)
- Mockdaten aus den Fragmenten
- Register:
agentWorkspaces,teamAgents,agentPhotos - Auslastung, Weiterleitung bei Nora, Brunos Lagebericht-Abschnitt
- Route in
App.tsx - Tests zurück auf fünf Agenten
npx tsc --noEmit && npm run lint && npm test
Prüfung nach dem Wiedereinbau: /supply/my-listings öffnen, einen Lead aufklappen,
ein Pflichtfeld leeren (rote Umrandung erwartet), KI-Entwurf für den Objektbeschrieb auslösen
(bei fehlendem Ausbaustandard darf kein Text entstehen, sondern die Lücke gemeldet werden),
Export als PDF und Word auslösen. Zusätzlich bei Nora ein Signal an Livia weiterleiten und
prüfen, ob der Lead auf Livias Seite erscheint.
4. Entscheidungen, die beim Rückbau zu treffen sind
Diese drei Punkte sind keine technischen Fragen — sie sollten bewusst entschieden und hier festgehalten werden, sonst fehlt beim Wiedereinbau die Begründung.
-
Bleibt der Abschnitt «Lagebericht (von Livia)» in Brunos Besichtigungsbriefing? Bleibt er stehen, zeigt das Briefing einen Lagebericht ohne Urheber — die Belegkette wird unklar. Wird er entfernt, verliert Brunos Briefing einen inhaltlichen Baustein. Empfehlung: Feld und Text belassen, aber die Beschriftung von «(von Livia)» auf «Lagebericht» ändern — der kleinste Eingriff, der beim Wiedereinbau in einer Zeile rückgängig ist.
-
Bleibt bei Nora der Knopf «An Livia weiterleiten»? Ohne Livia hat die Weiterleitung kein Ziel; der Knopf muss weg. Damit entfällt der sichtbare Übergabemoment zwischen zwei Agenten — in der Präsentation bisher das stärkste Argument. Wenn der Case später wieder gebraucht wird, ist dieser Knopf das Erste, was zurückkommen muss.
-
Wie wird aus fünf Agenten vier? Personalzahl, Sitzordnung im Meetingraum der Startseite, Willkommensdialog und die Reihenfolge «Ferdi, Bruno, Livia, Nora, Sina» hängen alle an
AGENT_WORKSPACES. Technisch passiert das von selbst, optisch aber nicht folgenlos — die Startseite sollte nach dem Rückbau angeschaut werden.
5. Inhalt dieses Verzeichnisses
archive/livia/
├─ WIEDERHERSTELLUNG.md ← dieses Dokument
├─ src/ ← 23 Originaldateien im Original-Pfadlayout
│ ├─ pages/supply/MyListings.tsx
│ ├─ components/expose/… (6 Dateien)
│ ├─ domain/… (2)
│ ├─ provider/… (4)
│ ├─ services/… (3 + ai/mock/exposeTextBuilder.ts)
│ ├─ hooks/… (2)
│ ├─ lib/exposeFields.ts
│ ├─ mock-data/… (2)
│ └─ assets/team/livia.jpg
└─ fragmente/ ← wörtliche Ausschnitte aus geteilten Dateien
├─ constants_livia.ts.txt
├─ aiService_livia.ts.txt
├─ workload_livia.ts.txt
├─ leadDetail_weiterleitung.tsx.txt
├─ agentDirectory_livia.ts.txt
├─ agentProtocol_livia.ts.txt
└─ agentWorkItems_livia.ts.txt
Fachliche Beschreibung, Aufgabenkatalog und System-Prompt: LIVIA_PROFIL_UND_PROMPT.md im
Repo-Root.