feat(agenten): Runde 4 — «Meine Agenten» mit fünf digitalen Mitarbeitenden
Setzt das Umsetzungsbriefing Runde 4 im bestehenden Frontend um. Informationsarchitektur - «Teamübersicht» heisst «Meine Agenten»; ihr bisheriger Inhalt (Kreisgrafik, Auswertung, Verbindungszusammenfassung) ist entfallen. - Personalverwaltung, Bearbeitungsverlauf und Kanäle & Systeme sind jetzt Reiter derselben Seite (?section=), gestaltet wie die Auswahl im Bearbeitungsverlauf. Es wird nur der gewählte Bereich gerendert. - Die alten Unterseitenpfade leiten um, damit Lesezeichen nicht brechen. Agentenbestand - Reto und Lea vollständig entfernt — aus Navigation, Dossiers, Protokoll, Verbindungen, Vorgängen und Porträtbestand. - Retos Aufgaben liegen bei Bruno: Nachbereitung, WhatsApp-Anruf, Protokoll und Kundennotiz, Ablage im CRM. - Livia ist «Exposé Master»: Lageberichte, Inserate, Angebotsbroschüren. - Sidebar führt Ferdi, Bruno, Livia, Nora, Sina mit Porträt und Funktion. Agentenseiten - Ein gemeinsamer AgentWorkspaceHero auf allen fünf Seiten. - Ferdi: Auswertungskarten, Priorität und Typfarben entfallen; Fälligkeit nur bei fünf Tagen oder weniger rot; Objektlinks nach «Meine Objekte»; neu die Terminplanung im verbundenen Kalender mit typgerechtem PDF-Ausschnitt. - Sina: reduzierte, filter- und sortierbare Objektübersicht; Detailansicht direkt editierbar, leere Pflichtfelder rot umrandet. - Nora: Signale ohne Prozentsätze und Konfidenzstufen, nur belegbare Angaben; Mehrfachauswahl leitet Objekte an Livia weiter. - Livia: aktive und archivierte Leads, Arbeitsbereich gleitet an den oberen Rand; dreistufiger Exposé-Prozess Hochladen → Exposé → Export. - Bruno: neue Seite mit Auftragsliste und Vor-/Nachbereitungs-Drawer; Glocke warnt bei Besichtigung unter 24 Stunden ohne Bericht. Datenschicht - Neu: Kalender, Exposé-Leads, Exposé-Entwürfe, Besichtigungsaufträge — je Domain, Provider, Service und Hook. - IAIService um generateExposeText erweitert; der Entwurf nutzt ausschliesslich erfasste Objektdaten und meldet Lücken, statt sie zu füllen. - Alle Objektverweise zeigen auf reale Einträge aus «Meine Objekte»; neue Detailroute /supply/properties/:propertyId. Offen: Chat, Kalender, CRM und DMS sind Frontend-Simulation ohne Anbindung. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
cc5582b7fd
commit
d200d4e930
352 files changed
+8069
-8512
No files matched your search
@@ -2,6 +2,7 @@ import { useState } from 'react'
|
||||
import { Alert, Box, Button, Collapse, IconButton, Typography } from '@mui/material'
|
||||
import { AlertTriangle, ChevronDown, ChevronUp, Target } from 'lucide-react'
|
||||
import type { ReactNode } from 'react'
|
||||
import { DS_BG, DS_BRAND, DS_SLATE, DS_TEXT } from '../../lib/ds'
|
||||
|
||||
export interface DecisionMetric {
|
||||
label: string
|
||||
@@ -61,7 +62,7 @@ export function DecisionContextPanel({
|
||||
return (
|
||||
<Box
|
||||
sx={{
|
||||
bgcolor: '#f9f8f6',
|
||||
bgcolor: DS_BG.page,
|
||||
borderBottom: '1px solid #e8e7e4',
|
||||
px: 2.5,
|
||||
py: 1.25,
|
||||
@@ -74,11 +75,11 @@ export function DecisionContextPanel({
|
||||
<Box sx={{ display: 'flex', alignItems: 'flex-start', gap: 1, flex: 1, minWidth: 200 }}>
|
||||
<Target size={15} color="#152642" style={{ marginTop: 2, flexShrink: 0 }} />
|
||||
<Box>
|
||||
<Typography variant="body2" sx={{ fontWeight: 700, fontSize: '0.8125rem', color: '#141414', lineHeight: 1.3 }}>
|
||||
<Typography variant="body2" sx={{ fontWeight: 700, fontSize: '0.8125rem', color: DS_TEXT.primary, lineHeight: 1.3 }}>
|
||||
{decision}
|
||||
</Typography>
|
||||
{context && (
|
||||
<Typography variant="caption" sx={{ color: '#64748b', display: 'block', mt: 0.25 }}>
|
||||
<Typography variant="caption" sx={{ color: DS_SLATE[500], display: 'block', mt: 0.25 }}>
|
||||
{context}
|
||||
</Typography>
|
||||
)}
|
||||
@@ -111,7 +112,7 @@ export function DecisionContextPanel({
|
||||
variant={a.primary ? 'contained' : 'outlined'}
|
||||
onClick={a.onClick}
|
||||
sx={a.primary
|
||||
? { bgcolor: '#152642', '&:hover': { bgcolor: '#0e1c30' }, textTransform: 'none', fontSize: '0.75rem', py: 0.375, px: 1.25 }
|
||||
? { bgcolor: DS_BRAND.main, '&:hover': { bgcolor: DS_BRAND.dark }, textTransform: 'none', fontSize: '0.75rem', py: 0.375, px: 1.25 }
|
||||
: { textTransform: 'none', fontSize: '0.75rem', py: 0.375, px: 1.25 }
|
||||
}
|
||||
>
|
||||
@@ -122,7 +123,7 @@ export function DecisionContextPanel({
|
||||
<IconButton
|
||||
size="small"
|
||||
onClick={() => setExpanded(v => !v)}
|
||||
sx={{ color: '#64748b', width: 24, height: 24 }}
|
||||
sx={{ color: DS_SLATE[500], width: 24, height: 24 }}
|
||||
>
|
||||
{expanded ? <ChevronUp size={14} /> : <ChevronDown size={14} />}
|
||||
</IconButton>
|
||||
|
||||
Reference in new issue
Block a user