feat(livia)!: Exposé-Funktion vollständig entfernt

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>
This commit is contained in:
Benjamin SutterandClaude Opus 5 committed 2026-08-23 22:44:08 +02:00
1 parent f5451f649f
commit a219d3f2ec
33 files changed
+178 -2474

No files matched your search

@@ -1,4 +1,4 @@
import { Box, Checkbox, Chip, Typography } from '@mui/material'
import { Box, Chip, Typography } from '@mui/material'
import { Building2, ExternalLink } from 'lucide-react'
import type { Property } from '../../domain/property'
import type { ExtractedContact } from '../../domain/futureSignal'
@@ -59,41 +59,36 @@ function ContactRow({ contact }: { contact: ExtractedContact }) {
)
}
// ── Objektzeile mit Mehrfachauswahl ──────────────────────────────────────────
// ── Objektzeile ──────────────────────────────────────────────────────────────
/**
* Ein passendes Portfolioobjekt zu einem Signal.
*
* Der Anschreiben-Entwurf und die Reminder-Aktion sind entfallen (Runde 4, §7.3):
* Nora erkennt die Nachfrage, das Dokument macht Livia. Geblieben ist die
* Auswahl — mehrere Objekte lassen sich gemeinsam für dasselbe Signal
* weiterreichen, statt für jedes einzeln denselben Weg zu gehen.
* Der Anschreiben-Entwurf und die Reminder-Aktion sind mit Runde 4 entfallen
* (§7.3), die Mehrfachauswahl mit Runde 8: sie diente allein dazu, Objekte an
* die Exposé-Erstellung weiterzureichen, und diese Funktion gibt es bei Livia
* nicht mehr. Eine Auswahl ohne Ziel wäre ein Bedienelement, das nichts
* auslöst — schlimmer als keines.
*
* Geblieben ist, was Nora für die Entscheidung braucht: welches Objekt, wo,
* wie gross, zu welchem Preis und wie gut die Fläche passt.
*/
function SignalPropertyRow({
p, fit, selected, onToggle,
p, fit,
}: {
p: Property
fit: number | null
selected: boolean
onToggle: () => void
}) {
return (
<Box
sx={{
display: 'flex', alignItems: 'center', gap: 1,
px: 1.5, py: 1.25, mb: 1,
border: `1px solid ${selected ? '#152642' : '#e2e8f0'}`,
border: '1px solid #e2e8f0',
borderRadius: 1.5,
bgcolor: selected ? '#f8fafc' : 'white',
bgcolor: 'white',
}}
>
<Checkbox
size="small"
checked={selected}
onChange={onToggle}
slotProps={{ input: { 'aria-label': `${p.title} auswählen` } }}
sx={{ p: 0.5 }}
/>
<Building2 size={14} color="#152642" style={{ flexShrink: 0 }} />
<Box sx={{ flex: 1, minWidth: 0 }}>
<ObjectDeepLink propertyId={p.id} label={p.title} fontWeight={600} />