feat: Anfragencenter Parts A–E — read/unread, prep wizard, offer flow, report preview
- Part A: Replace InquiryStatus badges with WhatsApp-style unread indicators (isRead, unreadCount, lastReadAt on Inquiry; markThreadAsRead in service + hook) - Part B: RelatedPropertyCardPanel — reposition "Objekt ansehen", add "Weitere Matches" section via matchService.getAdditionalMatchesForInquiry - Part C: PreparationWizard 4-step dialog — property selection, report generation progress, field editing + ReportObjectFieldSelector, PDF preview + finalize - Part D: OfferCreationWizard 4-step dialog triggered from first tenant message — data capture, field editing, viewing appointments, PDF generation + attach to reply - Part E: LatentInquiryReportPreview (2-page A4 doc), ReportObjectFieldSelector (5 accordion groups, 35+ optional fields), mapImageUrl on Property domain Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+54
-30
@@ -1,11 +1,12 @@
|
||||
import type { Inquiry } from '../domain/inquiry'
|
||||
|
||||
export const mockInquiries: Inquiry[] = [
|
||||
// 1 — NEW
|
||||
// 1 — UNREAD
|
||||
{
|
||||
id: 'inq-001',
|
||||
organizationId: 'org-wincasa',
|
||||
propertyId: 'prop-001',
|
||||
needId: 'need-001',
|
||||
tenantName: 'Sandra Meier',
|
||||
tenantCompany: 'Innovatech AG',
|
||||
tenantEmail: 'sandra.meier@innovatech.ch',
|
||||
@@ -13,6 +14,8 @@ export const mockInquiries: Inquiry[] = [
|
||||
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',
|
||||
unreadCount: 1,
|
||||
isRead: false,
|
||||
matchScore: 91,
|
||||
createdAt: '2026-05-17T08:32:00Z',
|
||||
updatedAt: '2026-05-17T08:32:00Z',
|
||||
@@ -31,21 +34,24 @@ export const mockInquiries: Inquiry[] = [
|
||||
],
|
||||
},
|
||||
|
||||
// 2 — NEW
|
||||
// 2 — UNREAD
|
||||
{
|
||||
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?',
|
||||
id: ‘inq-002’,
|
||||
organizationId: ‘org-wincasa’,
|
||||
propertyId: ‘prop-009’,
|
||||
needId: ‘need-002’,
|
||||
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',
|
||||
‘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’,
|
||||
unreadCount: 1,
|
||||
isRead: false,
|
||||
matchScore: 85,
|
||||
createdAt: '2026-05-17T11:14:00Z',
|
||||
updatedAt: '2026-05-17T11:14:00Z',
|
||||
createdAt: ‘2026-05-17T11:14:00Z’,
|
||||
updatedAt: ‘2026-05-17T11:14:00Z’,
|
||||
thread: [
|
||||
{
|
||||
id: 'msg-002-1',
|
||||
@@ -61,7 +67,7 @@ export const mockInquiries: Inquiry[] = [
|
||||
],
|
||||
},
|
||||
|
||||
// 3 — NEW
|
||||
// 3 — READ
|
||||
{
|
||||
id: 'inq-003',
|
||||
organizationId: 'org-wincasa',
|
||||
@@ -73,6 +79,9 @@ export const mockInquiries: Inquiry[] = [
|
||||
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',
|
||||
unreadCount: 0,
|
||||
isRead: true,
|
||||
lastReadAt: '2026-05-16T16:10:00Z',
|
||||
matchScore: 88,
|
||||
createdAt: '2026-05-16T15:50:00Z',
|
||||
updatedAt: '2026-05-16T15:50:00Z',
|
||||
@@ -91,11 +100,12 @@ export const mockInquiries: Inquiry[] = [
|
||||
],
|
||||
},
|
||||
|
||||
// 4 — IN_PROGRESS
|
||||
// 4 — UNREAD (3 messages)
|
||||
{
|
||||
id: 'inq-004',
|
||||
organizationId: 'org-wincasa',
|
||||
propertyId: 'prop-012',
|
||||
needId: 'need-004',
|
||||
tenantName: 'Daniel Hofer',
|
||||
tenantCompany: 'Hofer Treuhand AG',
|
||||
tenantEmail: 'd.hofer@hofer-treuhand.ch',
|
||||
@@ -103,6 +113,8 @@ export const mockInquiries: Inquiry[] = [
|
||||
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',
|
||||
unreadCount: 3,
|
||||
isRead: false,
|
||||
matchScore: 93,
|
||||
createdAt: '2026-05-14T09:20:00Z',
|
||||
updatedAt: '2026-05-15T14:00:00Z',
|
||||
@@ -134,7 +146,7 @@ export const mockInquiries: Inquiry[] = [
|
||||
],
|
||||
},
|
||||
|
||||
// 5 — IN_PROGRESS
|
||||
// 5 — READ
|
||||
{
|
||||
id: 'inq-005',
|
||||
organizationId: 'org-wincasa',
|
||||
@@ -146,6 +158,9 @@ export const mockInquiries: Inquiry[] = [
|
||||
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',
|
||||
unreadCount: 0,
|
||||
isRead: true,
|
||||
lastReadAt: '2026-05-14T17:00:00Z',
|
||||
matchScore: 79,
|
||||
createdAt: '2026-05-13T13:10:00Z',
|
||||
updatedAt: '2026-05-14T16:20:00Z',
|
||||
@@ -186,21 +201,24 @@ export const mockInquiries: Inquiry[] = [
|
||||
],
|
||||
},
|
||||
|
||||
// 6 — ANSWERED
|
||||
// 6 — READ
|
||||
{
|
||||
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',
|
||||
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',
|
||||
‘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’,
|
||||
unreadCount: 0,
|
||||
isRead: true,
|
||||
lastReadAt: ‘2026-05-10T10:00:00Z’,
|
||||
matchScore: 87,
|
||||
createdAt: '2026-05-08T10:00:00Z',
|
||||
updatedAt: '2026-05-10T09:30:00Z',
|
||||
createdAt: ‘2026-05-08T10:00:00Z’,
|
||||
updatedAt: ‘2026-05-10T09:30:00Z’,
|
||||
thread: [
|
||||
{
|
||||
id: 'msg-006-1',
|
||||
@@ -236,7 +254,7 @@ export const mockInquiries: Inquiry[] = [
|
||||
],
|
||||
},
|
||||
|
||||
// 7 — ANSWERED
|
||||
// 7 — READ
|
||||
{
|
||||
id: 'inq-007',
|
||||
organizationId: 'org-wincasa',
|
||||
@@ -248,6 +266,9 @@ export const mockInquiries: Inquiry[] = [
|
||||
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',
|
||||
unreadCount: 0,
|
||||
isRead: true,
|
||||
lastReadAt: '2026-05-06T12:00:00Z',
|
||||
matchScore: 82,
|
||||
createdAt: '2026-05-05T09:00:00Z',
|
||||
updatedAt: '2026-05-06T11:00:00Z',
|
||||
@@ -279,7 +300,7 @@ export const mockInquiries: Inquiry[] = [
|
||||
],
|
||||
},
|
||||
|
||||
// 8 — ARCHIVED
|
||||
// 8 — READ (archived)
|
||||
{
|
||||
id: 'inq-008',
|
||||
organizationId: 'org-wincasa',
|
||||
@@ -291,6 +312,9 @@ export const mockInquiries: Inquiry[] = [
|
||||
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',
|
||||
unreadCount: 0,
|
||||
isRead: true,
|
||||
lastReadAt: '2026-04-25T11:00:00Z',
|
||||
matchScore: 64,
|
||||
createdAt: '2026-04-20T14:30:00Z',
|
||||
updatedAt: '2026-04-25T10:00:00Z',
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
import type { InquiryPreparationReportDraft } from '../domain/inquiryReport'
|
||||
|
||||
export const mockInquiryReportDrafts: InquiryPreparationReportDraft[] = [
|
||||
{
|
||||
id: 'irep-001',
|
||||
inquiryId: 'inq-001',
|
||||
selectedPropertyIds: ['prop-001', 'prop-007'],
|
||||
fieldSelections: [
|
||||
{
|
||||
propertyId: 'prop-001',
|
||||
mandatoryFields: ['title', 'location', 'mapImageUrl', 'images'],
|
||||
selectedOptionalFields: ['areaSqm', 'rentPricePerSqm', 'leaseTerm', 'currentTenant', 'description', 'floor', 'parking'],
|
||||
},
|
||||
{
|
||||
propertyId: 'prop-007',
|
||||
mandatoryFields: ['title', 'location', 'mapImageUrl', 'images'],
|
||||
selectedOptionalFields: ['areaSqm', 'rentPricePerSqm', 'leaseTerm', 'currentTenant', 'description'],
|
||||
},
|
||||
],
|
||||
marketSignalPropertyId: 'prop-001',
|
||||
editableFields: [
|
||||
{ id: 'intro', label: 'Einleitung', value: 'Sehr geehrte Frau Meier\n\nGerne präsentieren wir Ihnen passende Objekte aus unserem Portfolio, die Ihrem Anforderungsprofil entsprechen.', fieldType: 'textarea' },
|
||||
{ id: 'highlights', label: 'Besonderheiten', value: 'Beide Objekte bieten modernste Büroinfrastruktur in attraktiver Zürich-West-Lage mit direktem ÖV-Anschluss.', fieldType: 'textarea' },
|
||||
{ id: 'next_steps', label: 'Nächste Schritte', value: 'Gerne vereinbaren wir einen Besichtigungstermin. Bitte kontaktieren Sie uns für eine persönliche Beratung.', fieldType: 'textarea' },
|
||||
],
|
||||
status: 'draft',
|
||||
createdAt: '2026-05-17T09:00:00Z',
|
||||
updatedAt: '2026-05-17T09:00:00Z',
|
||||
},
|
||||
{
|
||||
id: 'irep-002',
|
||||
inquiryId: 'inq-002',
|
||||
selectedPropertyIds: ['prop-002', 'prop-009'],
|
||||
fieldSelections: [
|
||||
{
|
||||
propertyId: 'prop-002',
|
||||
mandatoryFields: ['title', 'location', 'mapImageUrl', 'images'],
|
||||
selectedOptionalFields: ['areaSqm', 'rentPricePerSqm', 'availabilityDate', 'loadingDocksCount', 'ceilingHeightM'],
|
||||
},
|
||||
{
|
||||
propertyId: 'prop-009',
|
||||
mandatoryFields: ['title', 'location', 'mapImageUrl', 'images'],
|
||||
selectedOptionalFields: ['areaSqm', 'rentPricePerSqm', 'availabilityDate', 'description'],
|
||||
},
|
||||
],
|
||||
marketSignalPropertyId: 'prop-002',
|
||||
editableFields: [
|
||||
{ id: 'intro', label: 'Einleitung', value: 'Guten Tag Herr Frei\n\nWir freuen uns, Ihnen zwei geeignete Logistikflächen vorstellen zu können.', fieldType: 'textarea' },
|
||||
{ id: 'highlights', label: 'Besonderheiten', value: 'Beide Standorte verfügen über Rampenanschluss und sind für Hochregallager geeignet.', fieldType: 'textarea' },
|
||||
],
|
||||
status: 'draft',
|
||||
createdAt: '2026-05-17T12:00:00Z',
|
||||
updatedAt: '2026-05-17T12:00:00Z',
|
||||
},
|
||||
{
|
||||
id: 'irep-004',
|
||||
inquiryId: 'inq-004',
|
||||
selectedPropertyIds: ['prop-012'],
|
||||
fieldSelections: [
|
||||
{
|
||||
propertyId: 'prop-012',
|
||||
mandatoryFields: ['title', 'location', 'mapImageUrl', 'images'],
|
||||
selectedOptionalFields: ['areaSqm', 'rentPricePerSqm', 'leaseTerm', 'breakoutOption', 'currentTenant', 'propertyNumber', 'floor', 'parking', 'publicTransportScore'],
|
||||
},
|
||||
],
|
||||
marketSignalPropertyId: 'prop-012',
|
||||
editableFields: [
|
||||
{ id: 'intro', label: 'Einleitung', value: 'Sehr geehrter Herr Hofer\n\nAnbei finden Sie detaillierte Unterlagen zur Bürofläche Stadtturm Zug.', fieldType: 'textarea' },
|
||||
{ id: 'highlights', label: 'Highlights', value: 'Repräsentative Lage im Stadtzentrum Zug, beste Steuerkonditionen, direkter ÖV-Anschluss.', fieldType: 'textarea' },
|
||||
{ id: 'closing', label: 'Abschluss', value: 'Wir freuen uns auf Ihr Feedback und stehen für Fragen jederzeit zur Verfügung.', fieldType: 'textarea' },
|
||||
],
|
||||
status: 'finalized',
|
||||
pdfUrl: '/mock-reports/irep-004.pdf',
|
||||
createdAt: '2026-05-14T10:00:00Z',
|
||||
updatedAt: '2026-05-15T09:00:00Z',
|
||||
},
|
||||
]
|
||||
@@ -0,0 +1,44 @@
|
||||
import type { OfferReportDraft } from '../domain/offerReport'
|
||||
|
||||
export const mockOfferReportDrafts: OfferReportDraft[] = [
|
||||
{
|
||||
id: 'offer-rep-001',
|
||||
inquiryId: 'inq-004',
|
||||
propertyId: 'prop-012',
|
||||
editableFields: [
|
||||
{ id: 'recipient_salutation', label: 'Anrede / Einleitung', value: 'Sehr geehrter Herr Hofer', fieldType: 'text' },
|
||||
{ id: 'offer_intro', label: 'Angebotsbeschreibung', value: 'Wir freuen uns, Ihnen das nachfolgende Angebot für die Bürofläche Stadtturm Zug unterbreiten zu können.', fieldType: 'textarea' },
|
||||
{ id: 'highlighted_criteria', label: 'Ihre Anforderungen – unsere Stärken', value: 'Repräsentativer Standort im Zentrum Zug · Modernster Ausbaustandard · Flexible Mietdauer ab 3 Jahren', fieldType: 'textarea' },
|
||||
{ id: 'viewing_intro', label: 'Besichtigung', value: 'Gerne zeigen wir Ihnen die Fläche persönlich. Bitte wählen Sie einen der folgenden Termine:', fieldType: 'textarea' },
|
||||
{ id: 'next_steps', label: 'Nächste Schritte', value: 'Nach Ihrer Terminbestätigung erhalten Sie eine Detailbroschüre sowie den Mietvertragsentwurf.', fieldType: 'textarea' },
|
||||
{ id: 'closing', label: 'Abschluss', value: 'Mit freundlichen Grüssen\nWincasa AG', fieldType: 'textarea' },
|
||||
],
|
||||
viewingAppointments: [
|
||||
{ id: 'va-001-1', date: '2026-05-22', timeSlot: '10:00–11:00', contactPerson: 'Peter Müller' },
|
||||
{ id: 'va-001-2', date: '2026-05-23', timeSlot: '14:00–15:00', contactPerson: 'Peter Müller' },
|
||||
],
|
||||
status: 'draft',
|
||||
createdAt: '2026-05-15T10:00:00Z',
|
||||
updatedAt: '2026-05-15T10:00:00Z',
|
||||
},
|
||||
{
|
||||
id: 'offer-rep-005',
|
||||
inquiryId: 'inq-005',
|
||||
propertyId: 'prop-007',
|
||||
editableFields: [
|
||||
{ id: 'recipient_salutation', label: 'Anrede / Einleitung', value: 'Sehr geehrte Frau Wyss', fieldType: 'text' },
|
||||
{ id: 'offer_intro', label: 'Angebotsbeschreibung', value: 'Wir freuen uns, Ihnen die Bürofläche an der Thurgauerstrasse 40 in Zürich-Oerlikon anzubieten.', fieldType: 'textarea' },
|
||||
{ id: 'highlighted_criteria', label: 'Highlights', value: 'Vollsanierte Fläche (2024) · Ausgezeichnete ÖV-Anbindung · Expansionspotenzial vorhanden', fieldType: 'textarea' },
|
||||
{ id: 'viewing_intro', label: 'Besichtigung', value: 'Wir laden Sie herzlich zu einer Besichtigung ein:', fieldType: 'textarea' },
|
||||
{ id: 'next_steps', label: 'Nächste Schritte', value: 'Nach Ihrer Rückmeldung senden wir Ihnen den vollständigen Grundriss sowie das Exposé zu.', fieldType: 'textarea' },
|
||||
{ id: 'closing', label: 'Abschluss', value: 'Mit freundlichen Grüssen\nWincasa AG', fieldType: 'textarea' },
|
||||
],
|
||||
viewingAppointments: [
|
||||
{ id: 'va-005-1', date: '2026-05-21', timeSlot: '09:00–10:00', contactPerson: 'Sandra Keller' },
|
||||
],
|
||||
status: 'finalized',
|
||||
pdfUrl: '/mock-reports/offer-rep-005.pdf',
|
||||
createdAt: '2026-05-14T13:00:00Z',
|
||||
updatedAt: '2026-05-14T16:00:00Z',
|
||||
},
|
||||
]
|
||||
@@ -42,6 +42,7 @@ export const mockProperties: Property[] = [
|
||||
ancillaryCosts: 5.5,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
propertyNumber: 'ZH-2024-001',
|
||||
units: [
|
||||
{ id: 'unit-001-1', floorLevel: 1, unitLabel: 'Nord', areaSqm: 280, available: false, rentPricePerSqm: 456, currentTenant: 'MediaGroup Schweiz AG', leaseTerm: '5 Jahre', leaseEndDate: '2025-08-31' },
|
||||
@@ -95,6 +96,7 @@ export const mockProperties: Property[] = [
|
||||
ancillaryCosts: 3.0,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1586528116311-ad8dd3c8310d?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
importedFrom: 'SAP RE-FX',
|
||||
importedAt: '2025-01-15T08:00:00Z',
|
||||
lastUpdatedAt: '2025-05-10T10:00:00Z',
|
||||
@@ -144,6 +146,7 @@ export const mockProperties: Property[] = [
|
||||
ancillaryCosts: 5.0,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
propertyNumber: 'ZH-2021-007',
|
||||
units: [
|
||||
{ id: 'unit-007-1', floorLevel: 0, unitLabel: 'EG Ost', areaSqm: 180, available: false, rentPricePerSqm: 420, currentTenant: 'Consulting Partners AG', leaseTerm: '4 Jahre', leaseEndDate: '2025-09-30' },
|
||||
@@ -199,6 +202,7 @@ export const mockProperties: Property[] = [
|
||||
ancillaryCosts: 4.5,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
importedFrom: 'SAP RE-FX',
|
||||
importedAt: '2025-01-15T08:00:00Z',
|
||||
lastUpdatedAt: '2025-05-10T10:00:00Z',
|
||||
@@ -246,6 +250,7 @@ export const mockProperties: Property[] = [
|
||||
ancillaryCosts: 2.8,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1586528116311-ad8dd3c8310d?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
importedFrom: 'SAP RE-FX',
|
||||
importedAt: '2025-01-15T08:00:00Z',
|
||||
lastUpdatedAt: '2025-05-10T10:00:00Z',
|
||||
@@ -293,6 +298,7 @@ export const mockProperties: Property[] = [
|
||||
ancillaryCosts: 8.0,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
importedFrom: 'SAP RE-FX',
|
||||
importedAt: '2025-01-15T08:00:00Z',
|
||||
lastUpdatedAt: '2025-05-10T10:00:00Z',
|
||||
@@ -340,6 +346,7 @@ export const mockProperties: Property[] = [
|
||||
ancillaryCosts: 2.5,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1565043589221-1a6fd9ae45c7?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
importedFrom: 'SAP RE-FX',
|
||||
importedAt: '2025-01-15T08:00:00Z',
|
||||
lastUpdatedAt: '2025-05-10T10:00:00Z',
|
||||
@@ -388,6 +395,7 @@ export const mockProperties: Property[] = [
|
||||
ancillaryCosts: 6.0,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
propertyNumber: 'ZG-2022-012',
|
||||
units: [
|
||||
{ id: 'unit-012-1', floorLevel: 3, unitLabel: '3.OG A', areaSqm: 180, available: false, rentPricePerSqm: 504, currentTenant: 'FinTech Zug AG', leaseTerm: '3 Jahre', leaseEndDate: '2025-09-30' },
|
||||
@@ -443,6 +451,7 @@ export const mockProperties: Property[] = [
|
||||
ancillaryCosts: 5.0,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1486325212027-8081e485255e?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
propertyNumber: 'ZH-2021-013',
|
||||
units: [
|
||||
{ id: 'unit-013-1', floorLevel: 0, unitLabel: 'EG Laden', areaSqm: 320, available: false, rentPricePerSqm: 600, currentTenant: 'Design Studio Zürich GmbH', leaseTerm: '4 Jahre', leaseEndDate: '2025-10-31' },
|
||||
@@ -497,6 +506,7 @@ export const mockProperties: Property[] = [
|
||||
ancillaryCosts: 2.8,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1586528116311-ad8dd3c8310d?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
importedFrom: 'SAP RE-FX',
|
||||
importedAt: '2025-01-15T08:00:00Z',
|
||||
lastUpdatedAt: '2025-05-10T10:00:00Z',
|
||||
@@ -546,6 +556,7 @@ export const mockProperties: Property[] = [
|
||||
},
|
||||
riskLevel: RiskLevel.MEDIUM,
|
||||
images: ['https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
createdAt: '2025-02-15T14:00:00Z',
|
||||
updatedAt: '2025-04-10T09:00:00Z',
|
||||
},
|
||||
@@ -574,6 +585,7 @@ export const mockProperties: Property[] = [
|
||||
},
|
||||
riskLevel: RiskLevel.MEDIUM,
|
||||
images: ['https://images.unsplash.com/photo-1486325212027-8081e485255e?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
createdAt: '2025-03-01T10:00:00Z',
|
||||
updatedAt: '2025-03-20T15:00:00Z',
|
||||
},
|
||||
@@ -608,6 +620,7 @@ export const mockProperties: Property[] = [
|
||||
},
|
||||
riskLevel: RiskLevel.MEDIUM,
|
||||
images: ['https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
createdAt: '2025-03-12T11:00:00Z',
|
||||
updatedAt: '2025-04-05T10:00:00Z',
|
||||
},
|
||||
@@ -642,6 +655,7 @@ export const mockProperties: Property[] = [
|
||||
},
|
||||
riskLevel: RiskLevel.MEDIUM,
|
||||
images: ['https://images.unsplash.com/photo-1586528116311-ad8dd3c8310d?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
createdAt: '2025-02-20T09:00:00Z',
|
||||
updatedAt: '2025-03-28T12:00:00Z',
|
||||
},
|
||||
@@ -677,6 +691,7 @@ export const mockProperties: Property[] = [
|
||||
},
|
||||
riskLevel: RiskLevel.MEDIUM,
|
||||
images: ['https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
createdAt: '2025-03-05T13:00:00Z',
|
||||
updatedAt: '2025-04-18T11:00:00Z',
|
||||
},
|
||||
@@ -711,6 +726,7 @@ export const mockProperties: Property[] = [
|
||||
},
|
||||
riskLevel: RiskLevel.MEDIUM,
|
||||
images: ['https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
createdAt: '2025-02-28T10:00:00Z',
|
||||
updatedAt: '2025-04-02T09:00:00Z',
|
||||
},
|
||||
@@ -740,6 +756,7 @@ export const mockProperties: Property[] = [
|
||||
},
|
||||
riskLevel: RiskLevel.MEDIUM,
|
||||
images: ['https://images.unsplash.com/photo-1565043589221-1a6fd9ae45c7?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
createdAt: '2025-03-10T08:00:00Z',
|
||||
updatedAt: '2025-03-25T14:00:00Z',
|
||||
},
|
||||
@@ -774,6 +791,7 @@ export const mockProperties: Property[] = [
|
||||
},
|
||||
riskLevel: RiskLevel.MEDIUM,
|
||||
images: ['https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
createdAt: '2025-03-18T09:00:00Z',
|
||||
updatedAt: '2025-04-12T11:00:00Z',
|
||||
},
|
||||
@@ -809,6 +827,7 @@ export const mockProperties: Property[] = [
|
||||
},
|
||||
riskLevel: RiskLevel.MEDIUM,
|
||||
images: ['https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
createdAt: '2025-02-10T10:00:00Z',
|
||||
updatedAt: '2025-04-08T09:00:00Z',
|
||||
},
|
||||
@@ -843,6 +862,7 @@ export const mockProperties: Property[] = [
|
||||
},
|
||||
riskLevel: RiskLevel.MEDIUM,
|
||||
images: ['https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&h=400&fit=crop'],
|
||||
mapImageUrl: 'https://images.unsplash.com/photo-1524661135-423995f22d0b?w=600&h=300&fit=crop',
|
||||
createdAt: '2025-03-08T08:00:00Z',
|
||||
updatedAt: '2025-04-14T10:00:00Z',
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user