feat(runde-5): Startseite mit Agenten-Meetingraum, sticky Chat und Noras Kanäle
Hauptnavigation und Startseite (§2) - Hauptseite «Übersicht» samt Route, Menüeintrag, Hook, Service und den nur dort verwendeten Widgets entfernt; /supply/dashboard leitet auf die Startseite um, damit Lesezeichen nicht ins Leere laufen. - «Meine Objekte» heisst im Menü «Startseite»; die frühere Überschrift «Objektverwaltung» heisst jetzt «Meine Objekte». - Die Startseite scrollt als Ganzes. Die Höhe des Meetingraums rechnet gegen die Viewport-Höhe, damit Titel und Balken «Filter & Übersicht» beim Einstieg auf jeder Monitorgrösse sichtbar bleiben (geprüft 1280–1920 px). Agenten-Meetingraum (§3) - Zentralperspektive aus clip-path-Flächen, ohne 3D-Engine und ohne Animationsbibliothek: rechts geschlossene Wand, links und gegenüber boden- bis deckenhohe Glasfronten mit Blick auf Rhein, Basler Münster, Altstadt und Wettsteinbrücke. - Sitzordnung, Zielrouten, Grössen und Plakettenversatz liegen in einer zentralen Konfiguration (meetingRoomSeats.ts). - Neuer Agent Giorgio, Personalverwalter, sitzt vis-à-vis und führt in «Meine Agenten». Er steht bewusst nicht in AGENT_WORKSPACES: er hat keine Arbeitsseite, sondern ist die Adminfläche selbst. - Auf schmalen Schirmen tritt eine vereinfachte Kachelanordnung an die Stelle der Perspektive; ausgeblendet wird kein Agent. Sticky Chat bei allen Agenten (§5, §9–§11) - Scrollt der Chatkopf unter den globalen Balken, übernimmt dort eine kompakte Fassung mit Porträt, Name, Frage und Eingabefeld. - Ein gemeinsamer Zustand (agentChatStore) statt zweier Chat-Instanzen: Eingabetext und Fokus überstehen den Wechsel in beide Richtungen. - Noras Seite scrollte bisher gar nicht — Chatkopf ausserhalb des Scrollbereichs, zwei getrennt scrollende Spalten darunter. Behoben über den Seitenaufbau, nicht über eine Nora-Sonderlösung. Nora: CRM-Kanal und gemeinsame Lead-Liste (§12, §13) - Dritter Kanal «CRM» mit eigenem Domänentyp, Mockdaten, Provider, Service und Hook nach dem bestehenden Schichtenmuster. - Die Reiter «KI-Signale»/«Netzwerk» sind einer gemeinsamen Liste gewichen. Jede Zeile trägt ihre Kanalherkunft als Badge; die Herkunft steht im Datenmodell (LeadChannel) und wird nicht aus der Darstellung geraten. - Der frühere Reiterbalken ist der Filter «Kanaltyp» mit Alle/KI Signal/ Netzwerk/CRM, Standard «Alle», mit Empty State und Rücksetzung. Produkttour und Profilmenü (§8) - Tour auf die neue Struktur umgeschrieben: Startseite, Meetingraum, Agenten, sticky Chat, Leadkanäle. «Übersicht» kommt nicht mehr vor, «Meine Objekte» bezeichnet nur noch den Objektbereich. - Bereich «Demo-Modus» mit «Verwaltung» und «Bürosuche» entfernt. Geprüft: 413 Tests, Typecheck, Build, ESLint, Token-Schwelle (889/925). Im Browser: Navigation, Agentenklicks aller sechs Plätze, Kanalfilter und Detailschubladen, Sticky Chat bei vier Agenten, 1280–1920 px sowie Tablet- und Mobilbreite, keine 404 für Bilder oder Routen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
import type { CrmLead } from '../domain/crmLead'
|
||||
import { CrmLeadStage } from '../domain/crmLead'
|
||||
import { AssetType } from '../domain/enums'
|
||||
|
||||
/**
|
||||
* Seed-Daten des CRM-Kanals (Runde 5, §12).
|
||||
*
|
||||
* Bewusst wenige, dafür vollständige Datensätze: ein CRM-Lead ohne
|
||||
* Ansprechpartner und ohne letzten Kontakt wäre keiner. Orte und Flächen
|
||||
* liegen im Raum Basel und Nordwestschweiz, passend zum übrigen Bestand.
|
||||
*/
|
||||
export const crmLeads: CrmLead[] = [
|
||||
{
|
||||
id: 'crm-001',
|
||||
companyName: 'Rheinblick Treuhand AG',
|
||||
contactPerson: 'Andrea Vogt',
|
||||
contactEmail: 'a.vogt@rheinblick-treuhand.ch',
|
||||
contactPhone: '+41 61 271 44 18',
|
||||
locationHint: 'Basel, Innenstadt',
|
||||
assetType: AssetType.OFFICE,
|
||||
areaSqmMin: 280,
|
||||
areaSqmMax: 420,
|
||||
stage: CrmLeadStage.NEGOTIATION,
|
||||
ownerName: 'Thomas Müller',
|
||||
crmSystem: 'Salesforce',
|
||||
lastContactAt: '2026-08-04T09:15:00.000Z',
|
||||
note: 'Mietvertrag am jetzigen Standort läuft Ende März 2027 aus. Zwei Objekte besichtigt, Zollstrasse favorisiert.',
|
||||
},
|
||||
{
|
||||
id: 'crm-002',
|
||||
companyName: 'Nordwest Dental Gruppe',
|
||||
contactPerson: 'Dr. Marc Bühler',
|
||||
contactEmail: 'buehler@nw-dental.ch',
|
||||
locationHint: 'Basel, Kleinbasel',
|
||||
assetType: AssetType.RETAIL,
|
||||
areaSqmMin: 180,
|
||||
areaSqmMax: 260,
|
||||
stage: CrmLeadStage.VIEWING,
|
||||
ownerName: 'Sandra Keller',
|
||||
crmSystem: 'Salesforce',
|
||||
lastContactAt: '2026-08-01T14:40:00.000Z',
|
||||
note: 'Sucht Erdgeschossfläche mit Schaufenster für zweite Praxis. Besichtigung für KW 33 angefragt.',
|
||||
},
|
||||
{
|
||||
id: 'crm-003',
|
||||
companyName: 'Altmann Logistik AG',
|
||||
contactPerson: 'Peter Altmann',
|
||||
contactPhone: '+41 61 811 09 62',
|
||||
locationHint: 'Pratteln',
|
||||
assetType: AssetType.LOGISTICS,
|
||||
areaSqmMin: 1800,
|
||||
areaSqmMax: 3200,
|
||||
stage: CrmLeadStage.QUALIFIED,
|
||||
ownerName: 'Thomas Müller',
|
||||
crmSystem: 'HubSpot',
|
||||
lastContactAt: '2026-07-28T07:55:00.000Z',
|
||||
note: 'Expansion aus Muttenz. Rampe und 24h-Zufahrt zwingend.',
|
||||
},
|
||||
{
|
||||
id: 'crm-004',
|
||||
companyName: 'Studio Helle Räume GmbH',
|
||||
contactPerson: 'Livia Sommer',
|
||||
contactEmail: 'kontakt@hellraeume.ch',
|
||||
locationHint: 'Basel, Gundeldingen',
|
||||
assetType: AssetType.OFFICE,
|
||||
areaSqmMin: 90,
|
||||
areaSqmMax: 160,
|
||||
stage: CrmLeadStage.NEW,
|
||||
ownerName: 'Sandra Keller',
|
||||
crmSystem: 'HubSpot',
|
||||
lastContactAt: '2026-07-24T16:05:00.000Z',
|
||||
note: 'Anfrage über Kontaktformular. Budget noch offen.',
|
||||
},
|
||||
{
|
||||
id: 'crm-005',
|
||||
companyName: 'Birsfelden Manufaktur AG',
|
||||
contactPerson: 'Jonas Wyss',
|
||||
contactEmail: 'j.wyss@birsfelden-manufaktur.ch',
|
||||
contactPhone: '+41 61 313 27 40',
|
||||
locationHint: 'Birsfelden',
|
||||
assetType: AssetType.LIGHT_INDUSTRIAL,
|
||||
areaSqmMin: 640,
|
||||
areaSqmMax: 900,
|
||||
stage: CrmLeadStage.QUALIFIED,
|
||||
ownerName: 'Thomas Müller',
|
||||
crmSystem: 'Salesforce',
|
||||
lastContactAt: '2026-07-19T11:20:00.000Z',
|
||||
},
|
||||
]
|
||||
Reference in New Issue
Block a user