feat: F030 Anfragencenter — Aktive & Latente Anfragen + Angebot-Wizard
Neuer Menüpunkt «Anfragencenter» (ehemals «Eingehende Bedarfe»): Aktive Anfragen: - Split-View: Anfrageliste (Liste/Grid-Toggle) + Chat-Detailansicht - Chat-Verlauf mit Sender-Styling (Mieter links, Supply rechts) - Antwortformular mit Betreff, Nachricht, Anhänge, Statuswechsel - Zugehörige Property Card neben dem Chat Latente Anfragen: - Drei-Spalten-Layout: Need-Liste | Need-Detail | Eigene Objekte - Need Cards mit AI-Zusammenfassung, Must-Haves, Präferenzen - Eigene Portfolio-Objekte sortiert nach deterministischem Match-Score - Checkbox-Selektion für Angebotsauswahl Angebot-Wizard (4 Schritte): - Schritt 1: Objekte auswählen (mit Score-Vorschau) - Schritt 2: PDF-Vorschau + editierbare Textfelder - Schritt 3: Angebot prüfen & bestätigen - Schritt 4: Nachricht an Suchenden mit KI-generierter Mail Architektur: - Domain: Inquiry, LatentNeed, OfferDraft Types - Provider: IInquiryProvider, ILatentNeedProvider, IOfferProvider + Mockups - Services: inquiryService, latentNeedService, offerService - Hooks: useInquiries, useLatentNeeds, useOffers (TanStack Query) - Store: offerWizardStore (Zustand, lokaler Wizard-State) - 27 neue Komponenten, alle Loading/Empty/Error States Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,331 @@
|
||||
import type { Inquiry } from '../domain/inquiry'
|
||||
|
||||
export const mockInquiries: Inquiry[] = [
|
||||
// 1 — NEW
|
||||
{
|
||||
id: 'inq-001',
|
||||
organizationId: 'org-wincasa',
|
||||
propertyId: 'prop-001',
|
||||
tenantName: 'Sandra Meier',
|
||||
tenantCompany: 'Innovatech AG',
|
||||
tenantEmail: 'sandra.meier@innovatech.ch',
|
||||
subject: 'Anfrage zu Bürofläche Zollstrasse 12',
|
||||
message:
|
||||
'Guten Tag\n\nWir interessieren uns für die Bürofläche an der Zollstrasse 12 in Zürich-West. Könnten wir bitte einen Besichtigungstermin in der kommenden Woche vereinbaren?\n\nFreundliche Grüsse\nSandra Meier',
|
||||
status: 'new',
|
||||
matchScore: 91,
|
||||
createdAt: '2026-05-17T08:32:00Z',
|
||||
updatedAt: '2026-05-17T08:32:00Z',
|
||||
thread: [
|
||||
{
|
||||
id: 'msg-001-1',
|
||||
inquiryId: 'inq-001',
|
||||
senderType: 'tenant',
|
||||
senderName: 'Sandra Meier',
|
||||
subject: 'Anfrage zu Bürofläche Zollstrasse 12',
|
||||
body:
|
||||
'Guten Tag\n\nWir interessieren uns für die Bürofläche an der Zollstrasse 12 in Zürich-West. Könnten wir bitte einen Besichtigungstermin in der kommenden Woche vereinbaren?\n\nFreundliche Grüsse\nSandra Meier',
|
||||
attachments: [],
|
||||
createdAt: '2026-05-17T08:32:00Z',
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
// 2 — NEW
|
||||
{
|
||||
id: 'inq-002',
|
||||
organizationId: 'org-wincasa',
|
||||
propertyId: 'prop-009',
|
||||
tenantName: 'Markus Frei',
|
||||
tenantCompany: 'Frei Logistik AG',
|
||||
tenantEmail: 'm.frei@frei-logistik.ch',
|
||||
subject: 'Lagerfläche Winterthur — Verfügbarkeit?',
|
||||
message:
|
||||
'Sehr geehrte Damen und Herren\n\nIst Ihre Logistikfläche in Winterthur noch verfügbar? Wir benötigen ab September ca. 3’000 m² mit Rampe und Hochregalmöglichkeit.\n\nMit freundlichen Grüssen\nMarkus Frei',
|
||||
status: 'new',
|
||||
matchScore: 85,
|
||||
createdAt: '2026-05-17T11:14:00Z',
|
||||
updatedAt: '2026-05-17T11:14:00Z',
|
||||
thread: [
|
||||
{
|
||||
id: 'msg-002-1',
|
||||
inquiryId: 'inq-002',
|
||||
senderType: 'tenant',
|
||||
senderName: 'Markus Frei',
|
||||
subject: 'Lagerfläche Winterthur — Verfügbarkeit?',
|
||||
body:
|
||||
'Sehr geehrte Damen und Herren\n\nIst Ihre Logistikfläche in Winterthur noch verfügbar? Wir benötigen ab September ca. 3’000 m² mit Rampe und Hochregalmöglichkeit.\n\nMit freundlichen Grüssen\nMarkus Frei',
|
||||
attachments: [],
|
||||
createdAt: '2026-05-17T11:14:00Z',
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
// 3 — NEW
|
||||
{
|
||||
id: 'inq-003',
|
||||
organizationId: 'org-wincasa',
|
||||
propertyId: 'prop-010',
|
||||
tenantName: 'Laura Bianchi',
|
||||
tenantCompany: 'Bianchi Mode GmbH',
|
||||
tenantEmail: 'laura@bianchi-mode.ch',
|
||||
subject: 'Retailfläche Löwenplatz — Detailunterlagen',
|
||||
message:
|
||||
'Guten Tag\n\nKönnten Sie uns bitte Detailunterlagen sowie einen Grundriss der Retailfläche am Löwenplatz zukommen lassen? Wir planen die Eröffnung unseres neuen Flagship-Stores im Frühjahr 2026.\n\nBesten Dank\nLaura Bianchi',
|
||||
status: 'new',
|
||||
matchScore: 88,
|
||||
createdAt: '2026-05-16T15:50:00Z',
|
||||
updatedAt: '2026-05-16T15:50:00Z',
|
||||
thread: [
|
||||
{
|
||||
id: 'msg-003-1',
|
||||
inquiryId: 'inq-003',
|
||||
senderType: 'tenant',
|
||||
senderName: 'Laura Bianchi',
|
||||
subject: 'Retailfläche Löwenplatz — Detailunterlagen',
|
||||
body:
|
||||
'Guten Tag\n\nKönnten Sie uns bitte Detailunterlagen sowie einen Grundriss der Retailfläche am Löwenplatz zukommen lassen? Wir planen die Eröffnung unseres neuen Flagship-Stores im Frühjahr 2026.\n\nBesten Dank\nLaura Bianchi',
|
||||
attachments: [],
|
||||
createdAt: '2026-05-16T15:50:00Z',
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
// 4 — IN_PROGRESS
|
||||
{
|
||||
id: 'inq-004',
|
||||
organizationId: 'org-wincasa',
|
||||
propertyId: 'prop-012',
|
||||
tenantName: 'Daniel Hofer',
|
||||
tenantCompany: 'Hofer Treuhand AG',
|
||||
tenantEmail: 'd.hofer@hofer-treuhand.ch',
|
||||
subject: 'Bürofläche Zug — Konditionen',
|
||||
message:
|
||||
'Sehr geehrte Damen und Herren\n\nDie Büroflächen in Zug entsprechen genau unserem Profil. Bitte senden Sie uns die detaillierten Mietkonditionen sowie Informationen zu Nebenkosten und Mindestmietdauer.\n\nFreundliche Grüsse\nDaniel Hofer',
|
||||
status: 'in_progress',
|
||||
matchScore: 93,
|
||||
createdAt: '2026-05-14T09:20:00Z',
|
||||
updatedAt: '2026-05-15T14:00:00Z',
|
||||
thread: [
|
||||
{
|
||||
id: 'msg-004-1',
|
||||
inquiryId: 'inq-004',
|
||||
senderType: 'tenant',
|
||||
senderName: 'Daniel Hofer',
|
||||
subject: 'Bürofläche Zug — Konditionen',
|
||||
body:
|
||||
'Sehr geehrte Damen und Herren\n\nDie Büroflächen in Zug entsprechen genau unserem Profil. Bitte senden Sie uns die detaillierten Mietkonditionen sowie Informationen zu Nebenkosten und Mindestmietdauer.\n\nFreundliche Grüsse\nDaniel Hofer',
|
||||
attachments: [],
|
||||
createdAt: '2026-05-14T09:20:00Z',
|
||||
},
|
||||
{
|
||||
id: 'msg-004-2',
|
||||
inquiryId: 'inq-004',
|
||||
senderType: 'supply_user',
|
||||
senderName: 'Wincasa AG',
|
||||
subject: 'Re: Bürofläche Zug — Konditionen',
|
||||
body:
|
||||
'Guten Tag Herr Hofer\n\nVielen Dank für Ihr Interesse. Anbei finden Sie unser Exposé sowie die Konditionsübersicht. Gerne stehen wir für eine Besichtigung zur Verfügung — passt Ihnen Donnerstag oder Freitag dieser Woche?\n\nFreundliche Grüsse\nWincasa AG',
|
||||
attachments: [
|
||||
{ id: 'att-004-1', fileName: 'Expose_Zug.pdf', fileType: 'application/pdf', fileSize: 1240000 },
|
||||
],
|
||||
createdAt: '2026-05-15T14:00:00Z',
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
// 5 — IN_PROGRESS
|
||||
{
|
||||
id: 'inq-005',
|
||||
organizationId: 'org-wincasa',
|
||||
propertyId: 'prop-007',
|
||||
tenantName: 'Petra Wyss',
|
||||
tenantCompany: 'NorthStar Consulting',
|
||||
tenantEmail: 'petra.wyss@northstar.ch',
|
||||
subject: 'Büro Oerlikon — Grundriss & Ausbaustand',
|
||||
message:
|
||||
'Guten Tag\n\nDie Bürofläche an der Thurgauerstrasse interessiert uns sehr. Könnten Sie uns einen aktuellen Grundriss sowie Angaben zum Ausbaustand zukommen lassen?\n\nFreundliche Grüsse\nPetra Wyss',
|
||||
status: 'in_progress',
|
||||
matchScore: 79,
|
||||
createdAt: '2026-05-13T13:10:00Z',
|
||||
updatedAt: '2026-05-14T16:20:00Z',
|
||||
thread: [
|
||||
{
|
||||
id: 'msg-005-1',
|
||||
inquiryId: 'inq-005',
|
||||
senderType: 'tenant',
|
||||
senderName: 'Petra Wyss',
|
||||
subject: 'Büro Oerlikon — Grundriss & Ausbaustand',
|
||||
body:
|
||||
'Guten Tag\n\nDie Bürofläche an der Thurgauerstrasse interessiert uns sehr. Könnten Sie uns einen aktuellen Grundriss sowie Angaben zum Ausbaustand zukommen lassen?\n\nFreundliche Grüsse\nPetra Wyss',
|
||||
attachments: [],
|
||||
createdAt: '2026-05-13T13:10:00Z',
|
||||
},
|
||||
{
|
||||
id: 'msg-005-2',
|
||||
inquiryId: 'inq-005',
|
||||
senderType: 'supply_user',
|
||||
senderName: 'Wincasa AG',
|
||||
body:
|
||||
'Guten Tag Frau Wyss\n\nAnbei der angefragte Grundriss. Die Fläche wurde 2024 vollständig saniert (Ausbau Standard plus). Wir freuen uns auf Ihre Rückmeldung.\n\nWincasa AG',
|
||||
attachments: [
|
||||
{ id: 'att-005-1', fileName: 'Grundriss_Thurgauerstr40.pdf', fileType: 'application/pdf', fileSize: 980000 },
|
||||
],
|
||||
createdAt: '2026-05-14T11:45:00Z',
|
||||
},
|
||||
{
|
||||
id: 'msg-005-3',
|
||||
inquiryId: 'inq-005',
|
||||
senderType: 'tenant',
|
||||
senderName: 'Petra Wyss',
|
||||
body:
|
||||
'Vielen Dank für die schnelle Rückmeldung. Wir würden gerne nächste Woche besichtigen — wie sieht es bei Ihnen aus?',
|
||||
attachments: [],
|
||||
createdAt: '2026-05-14T16:20:00Z',
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
// 6 — ANSWERED
|
||||
{
|
||||
id: 'inq-006',
|
||||
organizationId: 'org-wincasa',
|
||||
propertyId: 'prop-002',
|
||||
tenantName: 'Thomas Brun',
|
||||
tenantCompany: 'Schweizer Logistik GmbH',
|
||||
tenantEmail: 't.brun@swisslogistik.ch',
|
||||
subject: 'Lagerfläche Hardstrasse Basel',
|
||||
message:
|
||||
'Guten Tag\n\nWir suchen ab Juli eine Lagerfläche in Basel mit ca. 2’500 m². Ihre Liegenschaft an der Hardstrasse entspricht unserem Profil. Können wir besichtigen?\n\nThomas Brun',
|
||||
status: 'answered',
|
||||
matchScore: 87,
|
||||
createdAt: '2026-05-08T10:00:00Z',
|
||||
updatedAt: '2026-05-10T09:30:00Z',
|
||||
thread: [
|
||||
{
|
||||
id: 'msg-006-1',
|
||||
inquiryId: 'inq-006',
|
||||
senderType: 'tenant',
|
||||
senderName: 'Thomas Brun',
|
||||
subject: 'Lagerfläche Hardstrasse Basel',
|
||||
body:
|
||||
'Guten Tag\n\nWir suchen ab Juli eine Lagerfläche in Basel mit ca. 2’500 m². Ihre Liegenschaft an der Hardstrasse entspricht unserem Profil. Können wir besichtigen?\n\nThomas Brun',
|
||||
attachments: [],
|
||||
createdAt: '2026-05-08T10:00:00Z',
|
||||
},
|
||||
{
|
||||
id: 'msg-006-2',
|
||||
inquiryId: 'inq-006',
|
||||
senderType: 'supply_user',
|
||||
senderName: 'Wincasa AG',
|
||||
body:
|
||||
'Sehr geehrter Herr Brun\n\nGerne. Wir haben einen Termin am 12. Mai um 10:00 Uhr vor Ort reserviert. Bitte bestätigen Sie kurz.\n\nWincasa AG',
|
||||
attachments: [],
|
||||
createdAt: '2026-05-09T08:15:00Z',
|
||||
},
|
||||
{
|
||||
id: 'msg-006-3',
|
||||
inquiryId: 'inq-006',
|
||||
senderType: 'tenant',
|
||||
senderName: 'Thomas Brun',
|
||||
body:
|
||||
'Bestätigt — wir sind dabei. Vielen Dank!',
|
||||
attachments: [],
|
||||
createdAt: '2026-05-10T09:30:00Z',
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
// 7 — ANSWERED
|
||||
{
|
||||
id: 'inq-007',
|
||||
organizationId: 'org-wincasa',
|
||||
propertyId: 'prop-008',
|
||||
tenantName: 'Caroline Roth',
|
||||
tenantCompany: 'Roth & Partner',
|
||||
tenantEmail: 'c.roth@roth-partner.ch',
|
||||
subject: 'Büro Dreispitz — Mietvertrag',
|
||||
message:
|
||||
'Guten Tag\n\nWir würden gerne einen Mietvertrag für die Bürofläche im Dreispitz aufsetzen. Bitte senden Sie uns die Vertragsvorlage.\n\nCaroline Roth',
|
||||
status: 'answered',
|
||||
matchScore: 82,
|
||||
createdAt: '2026-05-05T09:00:00Z',
|
||||
updatedAt: '2026-05-06T11:00:00Z',
|
||||
thread: [
|
||||
{
|
||||
id: 'msg-007-1',
|
||||
inquiryId: 'inq-007',
|
||||
senderType: 'tenant',
|
||||
senderName: 'Caroline Roth',
|
||||
subject: 'Büro Dreispitz — Mietvertrag',
|
||||
body:
|
||||
'Guten Tag\n\nWir würden gerne einen Mietvertrag für die Bürofläche im Dreispitz aufsetzen. Bitte senden Sie uns die Vertragsvorlage.\n\nCaroline Roth',
|
||||
attachments: [],
|
||||
createdAt: '2026-05-05T09:00:00Z',
|
||||
},
|
||||
{
|
||||
id: 'msg-007-2',
|
||||
inquiryId: 'inq-007',
|
||||
senderType: 'supply_user',
|
||||
senderName: 'Wincasa AG',
|
||||
body:
|
||||
'Sehr geehrte Frau Roth\n\nVielen Dank für Ihre Anfrage. Anbei die Vertragsvorlage sowie die Anhangsdokumente. Wir freuen uns auf Ihre Rückmeldung.\n\nWincasa AG',
|
||||
attachments: [
|
||||
{ id: 'att-007-1', fileName: 'Mietvertrag_Dreispitz.pdf', fileType: 'application/pdf', fileSize: 540000 },
|
||||
{ id: 'att-007-2', fileName: 'AGB.pdf', fileType: 'application/pdf', fileSize: 220000 },
|
||||
],
|
||||
createdAt: '2026-05-06T11:00:00Z',
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
// 8 — ARCHIVED
|
||||
{
|
||||
id: 'inq-008',
|
||||
organizationId: 'org-wincasa',
|
||||
propertyId: 'prop-011',
|
||||
tenantName: 'Jonas Keller',
|
||||
tenantCompany: 'Keller Maschinen AG',
|
||||
tenantEmail: 'j.keller@keller-maschinen.ch',
|
||||
subject: 'Produktionsfläche Bern',
|
||||
message:
|
||||
'Guten Tag\n\nWir suchen eine Produktionsfläche im Raum Bern. Ihre Liegenschaft erscheint passend, jedoch ist die Hallenhöhe etwas niedrig. Können Sie hier mehr Details geben?\n\nJonas Keller',
|
||||
status: 'archived',
|
||||
matchScore: 64,
|
||||
createdAt: '2026-04-20T14:30:00Z',
|
||||
updatedAt: '2026-04-25T10:00:00Z',
|
||||
thread: [
|
||||
{
|
||||
id: 'msg-008-1',
|
||||
inquiryId: 'inq-008',
|
||||
senderType: 'tenant',
|
||||
senderName: 'Jonas Keller',
|
||||
subject: 'Produktionsfläche Bern',
|
||||
body:
|
||||
'Guten Tag\n\nWir suchen eine Produktionsfläche im Raum Bern. Ihre Liegenschaft erscheint passend, jedoch ist die Hallenhöhe etwas niedrig. Können Sie hier mehr Details geben?\n\nJonas Keller',
|
||||
attachments: [],
|
||||
createdAt: '2026-04-20T14:30:00Z',
|
||||
},
|
||||
{
|
||||
id: 'msg-008-2',
|
||||
inquiryId: 'inq-008',
|
||||
senderType: 'supply_user',
|
||||
senderName: 'Wincasa AG',
|
||||
body:
|
||||
'Sehr geehrter Herr Keller\n\nDie Hallenhöhe beträgt 5.2 m. Leider entspricht das nicht Ihren Anforderungen. Wir informieren Sie, sobald passendere Flächen verfügbar werden.\n\nWincasa AG',
|
||||
attachments: [],
|
||||
createdAt: '2026-04-22T09:00:00Z',
|
||||
},
|
||||
{
|
||||
id: 'msg-008-3',
|
||||
inquiryId: 'inq-008',
|
||||
senderType: 'tenant',
|
||||
senderName: 'Jonas Keller',
|
||||
body:
|
||||
'Danke für die Information — wir suchen weiter und melden uns wieder.',
|
||||
attachments: [],
|
||||
createdAt: '2026-04-25T10:00:00Z',
|
||||
},
|
||||
],
|
||||
},
|
||||
]
|
||||
Reference in New Issue
Block a user