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,174 @@
|
||||
import { AssetType } from '../domain/enums'
|
||||
import type { LatentNeed } from '../domain/latentNeed'
|
||||
|
||||
export const mockLatentNeeds: LatentNeed[] = [
|
||||
{
|
||||
id: 'lneed-001',
|
||||
title: 'Modernes Büro für wachsendes Tech-Team',
|
||||
tenantCompany: 'Helvetia Tech Labs AG',
|
||||
assetType: AssetType.OFFICE,
|
||||
desiredLocation: 'Zürich-West / Kreis 5',
|
||||
sizeRange: { min: 700, max: 1100 },
|
||||
budgetRange: { min: 32, max: 48 },
|
||||
timing: 'Bezug ab Q4 2026, flexibel bis Q1 2027',
|
||||
mustHaveCriteria: [
|
||||
'ÖV-Anbindung unter 5 Min zu Fuss',
|
||||
'Glasfaseranschluss',
|
||||
'Klimaanlage in allen Räumen',
|
||||
'Mindestens 2 Sitzungszimmer',
|
||||
],
|
||||
weightedPreferences: [
|
||||
{ criterion: 'Standortprestige', weight: 0.25, description: 'Repräsentative Adresse für Kundenmeetings' },
|
||||
{ criterion: 'Flexibilität Grundriss', weight: 0.20, description: 'Open Space mit modularen Wänden' },
|
||||
{ criterion: 'ESG-Zertifizierung', weight: 0.15, description: 'Minergie oder vergleichbar' },
|
||||
{ criterion: 'Erweiterungspotenzial', weight: 0.15, description: 'Wachstum auf bis zu 1’500 m² möglich' },
|
||||
{ criterion: 'Nähe zu Restaurants', weight: 0.10 },
|
||||
],
|
||||
aiSummary:
|
||||
'Schnell wachsendes Software-Unternehmen sucht eine repräsentative Bürofläche in Zürich-West. Hoher Wert auf Flexibilität, ESG und Skalierbarkeit. Hohe Abschlusswahrscheinlichkeit bei passendem Objekt.',
|
||||
publicVisibility: true,
|
||||
status: 'public',
|
||||
createdAt: '2026-05-02T10:00:00Z',
|
||||
},
|
||||
|
||||
{
|
||||
id: 'lneed-002',
|
||||
title: 'Logistik-Hub Mittelland',
|
||||
tenantCompany: 'NordWest Distribution GmbH',
|
||||
assetType: AssetType.LOGISTICS,
|
||||
desiredLocation: 'Region Basel / Pratteln / Muttenz',
|
||||
sizeRange: { min: 2500, max: 5000 },
|
||||
budgetRange: { min: 12, max: 18 },
|
||||
timing: 'Bezug ab Januar 2027',
|
||||
mustHaveCriteria: [
|
||||
'Mindestens 2 Rampen',
|
||||
'Hallenhöhe ≥ 8 m',
|
||||
'Autobahnanschluss unter 5 Min',
|
||||
'LKW-Wendekreis 18 m',
|
||||
],
|
||||
weightedPreferences: [
|
||||
{ criterion: 'Andienungslogistik', weight: 0.30, description: 'Effiziente Be- und Entladung' },
|
||||
{ criterion: '24/7-Betrieb möglich', weight: 0.25 },
|
||||
{ criterion: 'Kühlmöglichkeit', weight: 0.20, description: 'Teilflächen kühlbar' },
|
||||
{ criterion: 'Photovoltaik-Dach', weight: 0.15 },
|
||||
{ criterion: 'Erweiterungspotenzial', weight: 0.10 },
|
||||
],
|
||||
aiSummary:
|
||||
'Distributor mit Fokus auf Frischwaren sucht modernen Logistik-Hub in der Region Basel. Anforderungen sind klar definiert, Budget realistisch. Sehr hohe Match-Wahrscheinlichkeit mit verfügbaren Liegenschaften.',
|
||||
publicVisibility: true,
|
||||
status: 'public',
|
||||
createdAt: '2026-04-28T09:30:00Z',
|
||||
},
|
||||
|
||||
{
|
||||
id: 'lneed-003',
|
||||
title: 'Retail-Flagship in Top-Innenstadtlage',
|
||||
tenantCompany: 'Aurum Concept Stores AG',
|
||||
assetType: AssetType.RETAIL,
|
||||
desiredLocation: 'Zürich Bahnhofstrasse / Löwenplatz / Innenstadt',
|
||||
sizeRange: { min: 200, max: 450 },
|
||||
budgetRange: { min: 80, max: 180 },
|
||||
timing: 'Eröffnung Frühjahr 2027, frühester Bezug Q4 2026',
|
||||
mustHaveCriteria: [
|
||||
'Schaufenster mindestens 8 m breit',
|
||||
'Hochwertige Passantenfrequenz',
|
||||
'Stromanschluss ≥ 30 kW',
|
||||
'Klimaanlage und Lüftung',
|
||||
],
|
||||
weightedPreferences: [
|
||||
{ criterion: 'Lagequalität', weight: 0.40, description: 'Top-Frequenzlage mit Markenumfeld' },
|
||||
{ criterion: 'Sichtbarkeit', weight: 0.25, description: 'Eckfläche oder freie Sichtachse' },
|
||||
{ criterion: 'Deckenhöhe', weight: 0.15, description: 'Mindestens 3.5 m' },
|
||||
{ criterion: 'Lagerfläche im UG', weight: 0.10 },
|
||||
{ criterion: 'Architektur / Charme', weight: 0.10 },
|
||||
],
|
||||
aiSummary:
|
||||
'Premium-Lifestyle-Marke sucht Flagship-Store an Top-Adresse. Budget grosszügig, Anforderungen anspruchsvoll. Sehr starkes Signal für Premium-Retailobjekte in Zürich.',
|
||||
publicVisibility: true,
|
||||
status: 'public',
|
||||
createdAt: '2026-05-08T13:45:00Z',
|
||||
},
|
||||
|
||||
{
|
||||
id: 'lneed-004',
|
||||
title: 'Backoffice-Standort Kanton Zug',
|
||||
tenantCompany: 'Lakeside Capital Partners',
|
||||
assetType: AssetType.OFFICE,
|
||||
desiredLocation: 'Zug / Baar / Cham',
|
||||
sizeRange: { min: 400, max: 700 },
|
||||
budgetRange: { min: 30, max: 42 },
|
||||
timing: 'Bezug spätestens Q3 2026',
|
||||
mustHaveCriteria: [
|
||||
'ÖV-Anbindung unter 10 Min',
|
||||
'Mindestens 4 Parkplätze',
|
||||
'Diskretes, repräsentatives Umfeld',
|
||||
],
|
||||
weightedPreferences: [
|
||||
{ criterion: 'Standortprestige', weight: 0.30 },
|
||||
{ criterion: 'Sicherheit / Zutrittskonzept', weight: 0.25 },
|
||||
{ criterion: 'Steuerumfeld', weight: 0.20, description: 'Bevorzugt steuerattraktive Gemeinde' },
|
||||
{ criterion: 'Architektonische Qualität', weight: 0.15 },
|
||||
{ criterion: 'Erweiterungspotenzial', weight: 0.10 },
|
||||
],
|
||||
aiSummary:
|
||||
'Vermögensverwalter sucht diskreten Backoffice-Standort im Kanton Zug. Klassisches Profil mit Fokus auf Diskretion und Steuerumfeld. Solides Match-Potenzial mit zentralen Zuger Liegenschaften.',
|
||||
publicVisibility: true,
|
||||
status: 'public',
|
||||
createdAt: '2026-05-04T11:20:00Z',
|
||||
},
|
||||
|
||||
{
|
||||
id: 'lneed-005',
|
||||
title: 'Stadtnahe Logistikfläche Raum Winterthur',
|
||||
tenantCompany: 'PaketExpress Schweiz AG',
|
||||
assetType: AssetType.LOGISTICS,
|
||||
desiredLocation: 'Winterthur / Töss / Oberwinterthur',
|
||||
sizeRange: { min: 1500, max: 3500 },
|
||||
budgetRange: { min: 10, max: 16 },
|
||||
timing: 'Bezug Q3 2026, hohe Dringlichkeit',
|
||||
mustHaveCriteria: [
|
||||
'Mindestens 4 Rampen',
|
||||
'LKW-tauglicher Innenhof',
|
||||
'24/7 Anlieferung erlaubt',
|
||||
'Strom für E-Flottenladung skalierbar',
|
||||
],
|
||||
weightedPreferences: [
|
||||
{ criterion: 'Stadtnähe', weight: 0.30, description: 'Letzte Meile zur Innenstadt' },
|
||||
{ criterion: 'Anbindung an A1 / A7', weight: 0.25 },
|
||||
{ criterion: 'Lademöglichkeiten E-Flotte', weight: 0.20 },
|
||||
{ criterion: 'Flexibilität Vertrag', weight: 0.15 },
|
||||
{ criterion: 'Erweiterungspotenzial', weight: 0.10 },
|
||||
],
|
||||
aiSummary:
|
||||
'KEP-Dienstleister mit hoher Dringlichkeit sucht stadtnahe Logistikbasis. Sehr starkes Profil für Last-Mile-Hub. Verfügbare Winterthurer Lagerflächen sind hochrelevant.',
|
||||
publicVisibility: true,
|
||||
status: 'public',
|
||||
createdAt: '2026-05-09T08:15:00Z',
|
||||
},
|
||||
|
||||
{
|
||||
id: 'lneed-006',
|
||||
title: 'Pop-up-Retailfläche temporär 6 Monate',
|
||||
tenantCompany: 'Nordic Living Concept',
|
||||
assetType: AssetType.RETAIL,
|
||||
desiredLocation: 'Zürich / Basel — zentrale Lage',
|
||||
sizeRange: { min: 80, max: 200 },
|
||||
timing: 'Bezug August 2026 — Vertragsdauer 6 Monate',
|
||||
mustHaveCriteria: [
|
||||
'Möblierbarkeit kurzfristig möglich',
|
||||
'Schaufenster zur Strasse',
|
||||
'Funktionierende Klimaanlage',
|
||||
],
|
||||
weightedPreferences: [
|
||||
{ criterion: 'Lage / Frequenz', weight: 0.35 },
|
||||
{ criterion: 'Vertragsflexibilität', weight: 0.30, description: 'Kurzfristige Verträge möglich' },
|
||||
{ criterion: 'Renovationsstand', weight: 0.20, description: 'Sofort einzugsbereit' },
|
||||
{ criterion: 'Sichtbarkeit', weight: 0.15 },
|
||||
],
|
||||
aiSummary:
|
||||
'Skandinavische Lifestyle-Marke sucht Pop-up-Fläche für 6 Monate. Niedrige Bindung, aber hohe Lageansprüche. Geeignet für Zwischenvermietung von Top-Retailflächen.',
|
||||
publicVisibility: true,
|
||||
status: 'paused',
|
||||
createdAt: '2026-04-15T15:00:00Z',
|
||||
},
|
||||
]
|
||||
Reference in New Issue
Block a user