docs(agenten): Fallakte Livia und Agenten-Briefing sichern
`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>
This commit is contained in:
1 parent
ba8dc39483
commit
2037e5a463
33 files changed
+4431
No files matched your search
@@ -0,0 +1,48 @@
|
||||
// ══ src/services/agentWorkloadService.ts — Importe (Z. 3-4) ══
|
||||
import { ExposeLeadStatus } from '../domain/exposeLead'
|
||||
import type { ExposeLead } from '../domain/exposeLead'
|
||||
|
||||
// ══ URGENT_FROM (Z. 33-40) ══
|
||||
const URGENT_FROM = {
|
||||
reminders: 5,
|
||||
visits: 4,
|
||||
expose: 5,
|
||||
dataGaps: 10,
|
||||
} as const
|
||||
|
||||
/** Zeitfenster der Auswertung. */
|
||||
|
||||
// ══ Eingabefeld (Z. 48-55) ══
|
||||
export interface AgentWorkloadInput {
|
||||
reminders: Reminder[]
|
||||
visits: VisitAssignment[]
|
||||
exposeLeads: ExposeLead[]
|
||||
leads: UnifiedLead[]
|
||||
properties: Property[]
|
||||
}
|
||||
|
||||
|
||||
// ══ Livias Auslastungsbahn (Z. 117-129) ══
|
||||
// ── Livia: weitergeleitete Leads ────────────────────────────────────────────
|
||||
const openExpose = input.exposeLeads.filter(l => l.status === ExposeLeadStatus.ACTIVE).length
|
||||
const livia: AgentWorkload = {
|
||||
agentId: 'livia',
|
||||
count: openExpose,
|
||||
label: `${openExpose} ${plural(openExpose, 'Exposé offen', 'Exposés offen')}`,
|
||||
tone: tone(openExpose, URGENT_FROM.expose),
|
||||
voice: openExpose === 0
|
||||
? 'Kein Exposé offen. Leite mir einen Lead weiter, dann lege ich los.'
|
||||
: `${openExpose} ${plural(openExpose, 'Lead wartet', 'Leads warten')} auf ein Exposé von mir.`,
|
||||
}
|
||||
|
||||
// ── Nora: Marktchancen ──────────────────────────────────────────────────────
|
||||
|
||||
// ══ src/hooks/useAgentWorkload.ts — alle Livia-Stellen ══
|
||||
import { useExposeLeads } from './useExposeLeads'
|
||||
const { data: exposeLeads = [], isLoading: exposeLoading } = useExposeLeads()
|
||||
const data = useMemo(
|
||||
() => computeAgentWorkload({ reminders, visits, exposeLeads, leads, properties }),
|
||||
[reminders, visits, exposeLeads, leads, properties],
|
||||
remindersLoading || visitsLoading || exposeLoading ||
|
||||
leadsLoading || propertiesLoading,
|
||||
}
|
||||
Reference in new issue
Block a user