`LIVIA_PROFIL_UND_PROMPT.md` hält Livia als Exposé Master fest, wie sie vor Runde 8 war: Personalblatt, Aufgabenkatalog, Kanäle und Systeme, das Exposé-Dossier mit elf Bereichen und neun Pflichtfeldern, die `missingFacts`-Regel der Textmaschine — dazu ein System-Prompt, mit dem sich diese Fassung ausserhalb des Repositories rekonstruieren lässt. `archive/livia/` ergänzt die Beschreibung um die Wiederherstellung: die 23 Dateien der Exposé-Funktion als wörtliche Kopie im Original-Pfadlayout sowie ein Manifest jeder Stelle, an der Livia in geteilten Dateien verdrahtet war. Beides ist mit Runde 8 nicht überholt, sondern der Referenzstand: die Exposé-Funktion wurde nicht entfernt, sondern nachgeordnet. Das Manifest beschreibt allerdings den Rückbau eines vollständigen Entfernens und damit ein Szenario, das so nicht eingetreten ist. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
14 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.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.