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:
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} />
|
||||
|
||||
Reference in new issue
Block a user