feat: Verwaltungszugang refactor — lease data, 3-tab detail, market signals
- Dashboard: remove QuickActionPanel, StrongMatchOverview, FutureSignalWidget,
DataQualityWidget, header buttons, Marktchancen nav; KpiGrid → 4 cards
- Property domain: 9 new fields (leaseTerm, leaseStartDate/End, breakoutOption,
currentTenant, importedFrom, importedAt, lastUpdatedAt)
- Mock data: annual CHF/m²/Jahr prices (×12), Swiss images, tenant/lease data
for all 10 VERIFIED_PORTFOLIO properties; need budgets updated to annual
- PropertyTable: swap columns — add Aktueller Mieter, Mietlaufzeit,
Breakoutoption, Breakoutoption Zeitpunkt; remove Verfügbarkeit, Konfidenz, Quelle
- PropertyDetailView: 3 tabs (Übersicht, Matchability, Marktsignale) with
inline edit mode, NeedMatchCard list, PropertyMarketSignalsTab
- New: marketReport domain + mock data + service, NeedMatchCard,
PropertyMarketSignalsTab with 4 sections + PDF button
- matchService: getNeedMatchesForProperty(propertyId, {minScore})
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+135
-52
@@ -15,8 +15,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Zürich', district: 'Zürich-West', canton: 'ZH', country: 'CH', coordinates: { lat: 47.3882, lng: 8.5132 } },
|
||||
address: { street: 'Zollstrasse', houseNumber: '12', postalCode: '8005', city: 'Zürich', country: 'CH' },
|
||||
areaSqm: 850,
|
||||
rentPricePerSqm: 38,
|
||||
totalRentMonthly: 32300,
|
||||
rentPricePerSqm: 456,
|
||||
totalRentMonthly: 387600,
|
||||
availabilityDate: '2025-09-01',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_SOON,
|
||||
sourceType: 'ERP_IMPORT',
|
||||
@@ -41,7 +41,15 @@ export const mockProperties: Property[] = [
|
||||
contractDurationMonths: 60,
|
||||
ancillaryCosts: 5.5,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1486325212027-8081e485255e?w=800&h=400&fit=crop'],
|
||||
images: ['https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&h=400&fit=crop'],
|
||||
importedFrom: 'SAP RE-FX',
|
||||
importedAt: '2025-01-15T08:00:00Z',
|
||||
lastUpdatedAt: '2025-05-10T10:00:00Z',
|
||||
currentTenant: 'MediaGroup Schweiz AG',
|
||||
leaseTerm: '5 Jahre',
|
||||
leaseStartDate: '2020-09-01',
|
||||
leaseEndDate: '2025-08-31',
|
||||
breakoutOption: false,
|
||||
organizationId: 'org-wincasa',
|
||||
createdAt: '2025-01-10T08:00:00Z',
|
||||
updatedAt: '2025-04-28T10:30:00Z',
|
||||
@@ -55,8 +63,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Basel', district: 'Kleinhüningen', canton: 'BS', country: 'CH', coordinates: { lat: 47.5736, lng: 7.5946 } },
|
||||
address: { street: 'Hardstrasse', houseNumber: '44', postalCode: '4057', city: 'Basel', country: 'CH' },
|
||||
areaSqm: 2400,
|
||||
rentPricePerSqm: 14,
|
||||
totalRentMonthly: 33600,
|
||||
rentPricePerSqm: 168,
|
||||
totalRentMonthly: 403200,
|
||||
availabilityDate: '2025-07-01',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_NOW,
|
||||
sourceType: 'ERP_IMPORT',
|
||||
@@ -81,6 +89,14 @@ export const mockProperties: Property[] = [
|
||||
ancillaryCosts: 3.0,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1586528116311-ad8dd3c8310d?w=800&h=400&fit=crop'],
|
||||
importedFrom: 'SAP RE-FX',
|
||||
importedAt: '2025-01-15T08:00:00Z',
|
||||
lastUpdatedAt: '2025-05-10T10:00:00Z',
|
||||
currentTenant: 'Spedition Rhein GmbH',
|
||||
leaseTerm: '3 Jahre',
|
||||
leaseStartDate: '2022-07-01',
|
||||
leaseEndDate: '2025-06-30',
|
||||
breakoutOption: false,
|
||||
organizationId: 'org-wincasa',
|
||||
createdAt: '2024-11-20T09:00:00Z',
|
||||
updatedAt: '2025-05-05T11:00:00Z',
|
||||
@@ -94,8 +110,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Zürich', district: 'Oerlikon', canton: 'ZH', country: 'CH', coordinates: { lat: 47.4115, lng: 8.5502 } },
|
||||
address: { street: 'Thurgauerstrasse', houseNumber: '40', postalCode: '8050', city: 'Zürich', country: 'CH' },
|
||||
areaSqm: 720,
|
||||
rentPricePerSqm: 36,
|
||||
totalRentMonthly: 25920,
|
||||
rentPricePerSqm: 432,
|
||||
totalRentMonthly: 311040,
|
||||
availabilityDate: '2025-10-01',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_SOON,
|
||||
sourceType: 'ERP_IMPORT',
|
||||
@@ -122,6 +138,15 @@ export const mockProperties: Property[] = [
|
||||
ancillaryCosts: 5.0,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&h=400&fit=crop'],
|
||||
importedFrom: 'SAP RE-FX',
|
||||
importedAt: '2025-01-15T08:00:00Z',
|
||||
lastUpdatedAt: '2025-05-10T10:00:00Z',
|
||||
currentTenant: 'Consulting Partners AG',
|
||||
leaseTerm: '4 Jahre',
|
||||
leaseStartDate: '2021-10-01',
|
||||
leaseEndDate: '2025-09-30',
|
||||
breakoutOption: true,
|
||||
breakoutOptionDate: '2024-10-01',
|
||||
organizationId: 'org-wincasa',
|
||||
createdAt: '2025-02-01T09:00:00Z',
|
||||
updatedAt: '2025-05-01T08:00:00Z',
|
||||
@@ -135,8 +160,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Basel', district: 'Dreispitz', canton: 'BS', country: 'CH', coordinates: { lat: 47.5398, lng: 7.5812 } },
|
||||
address: { street: 'Hochbergerstrasse', houseNumber: '9', postalCode: '4057', city: 'Basel', country: 'CH' },
|
||||
areaSqm: 900,
|
||||
rentPricePerSqm: 32,
|
||||
totalRentMonthly: 28800,
|
||||
rentPricePerSqm: 384,
|
||||
totalRentMonthly: 345600,
|
||||
availabilityDate: '2025-09-01',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_SOON,
|
||||
sourceType: 'ERP_IMPORT',
|
||||
@@ -162,6 +187,14 @@ export const mockProperties: Property[] = [
|
||||
ancillaryCosts: 4.5,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1481277542470-605612bd2d61?w=800&h=400&fit=crop'],
|
||||
importedFrom: 'SAP RE-FX',
|
||||
importedAt: '2025-01-15T08:00:00Z',
|
||||
lastUpdatedAt: '2025-05-10T10:00:00Z',
|
||||
currentTenant: 'Pharma Research GmbH',
|
||||
leaseTerm: '4 Jahre',
|
||||
leaseStartDate: '2021-09-01',
|
||||
leaseEndDate: '2025-08-31',
|
||||
breakoutOption: false,
|
||||
organizationId: 'org-wincasa',
|
||||
createdAt: '2025-01-20T10:00:00Z',
|
||||
updatedAt: '2025-04-30T09:00:00Z',
|
||||
@@ -175,8 +208,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Winterthur', district: 'Töss', canton: 'ZH', country: 'CH', coordinates: { lat: 47.4952, lng: 8.7082 } },
|
||||
address: { street: 'Tössfeldstrasse', houseNumber: '18', postalCode: '8406', city: 'Winterthur', country: 'CH' },
|
||||
areaSqm: 1800,
|
||||
rentPricePerSqm: 13,
|
||||
totalRentMonthly: 23400,
|
||||
rentPricePerSqm: 156,
|
||||
totalRentMonthly: 280800,
|
||||
availabilityDate: '2025-07-01',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_NOW,
|
||||
sourceType: 'ERP_IMPORT',
|
||||
@@ -201,6 +234,14 @@ export const mockProperties: Property[] = [
|
||||
ancillaryCosts: 2.8,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1566438480900-0b5b967f4a25?w=800&h=400&fit=crop'],
|
||||
importedFrom: 'SAP RE-FX',
|
||||
importedAt: '2025-01-15T08:00:00Z',
|
||||
lastUpdatedAt: '2025-05-10T10:00:00Z',
|
||||
currentTenant: 'Sperrgut Logistik AG',
|
||||
leaseTerm: '5 Jahre',
|
||||
leaseStartDate: '2020-07-01',
|
||||
leaseEndDate: '2025-06-30',
|
||||
breakoutOption: false,
|
||||
organizationId: 'org-wincasa',
|
||||
createdAt: '2024-12-10T08:00:00Z',
|
||||
updatedAt: '2025-05-02T10:00:00Z',
|
||||
@@ -214,8 +255,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Zürich', district: 'Innenstadt', canton: 'ZH', country: 'CH', coordinates: { lat: 47.3758, lng: 8.5352 } },
|
||||
address: { street: 'Löwenplatz', houseNumber: '3', postalCode: '8001', city: 'Zürich', country: 'CH' },
|
||||
areaSqm: 285,
|
||||
rentPricePerSqm: 88,
|
||||
totalRentMonthly: 25080,
|
||||
rentPricePerSqm: 1056,
|
||||
totalRentMonthly: 300960,
|
||||
availabilityDate: '2025-08-01',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_SOON,
|
||||
sourceType: 'ERP_IMPORT',
|
||||
@@ -240,6 +281,14 @@ export const mockProperties: Property[] = [
|
||||
ancillaryCosts: 8.0,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=800&h=400&fit=crop'],
|
||||
importedFrom: 'SAP RE-FX',
|
||||
importedAt: '2025-01-15T08:00:00Z',
|
||||
lastUpdatedAt: '2025-05-10T10:00:00Z',
|
||||
currentTenant: 'Fashion Concept GmbH',
|
||||
leaseTerm: '5 Jahre',
|
||||
leaseStartDate: '2020-08-01',
|
||||
leaseEndDate: '2025-07-31',
|
||||
breakoutOption: false,
|
||||
organizationId: 'org-wincasa',
|
||||
createdAt: '2025-01-05T10:00:00Z',
|
||||
updatedAt: '2025-05-06T11:00:00Z',
|
||||
@@ -253,8 +302,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Bern', district: 'Brünnen', canton: 'BE', country: 'CH', coordinates: { lat: 46.9562, lng: 7.3818 } },
|
||||
address: { street: 'Brünnenstrasse', houseNumber: '22', postalCode: '3018', city: 'Bern', country: 'CH' },
|
||||
areaSqm: 2800,
|
||||
rentPricePerSqm: 12,
|
||||
totalRentMonthly: 33600,
|
||||
rentPricePerSqm: 144,
|
||||
totalRentMonthly: 403200,
|
||||
availabilityDate: '2025-07-01',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_NOW,
|
||||
sourceType: 'ERP_IMPORT',
|
||||
@@ -279,6 +328,14 @@ export const mockProperties: Property[] = [
|
||||
ancillaryCosts: 2.5,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1581091226825-a6a2a5aee158?w=800&h=400&fit=crop'],
|
||||
importedFrom: 'SAP RE-FX',
|
||||
importedAt: '2025-01-15T08:00:00Z',
|
||||
lastUpdatedAt: '2025-05-10T10:00:00Z',
|
||||
currentTenant: 'Metallbau Bern AG',
|
||||
leaseTerm: '10 Jahre',
|
||||
leaseStartDate: '2015-07-01',
|
||||
leaseEndDate: '2025-06-30',
|
||||
breakoutOption: false,
|
||||
organizationId: 'org-wincasa',
|
||||
createdAt: '2024-10-15T09:00:00Z',
|
||||
updatedAt: '2025-05-03T10:00:00Z',
|
||||
@@ -292,8 +349,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Zug', district: 'Zentrum', canton: 'ZG', country: 'CH', coordinates: { lat: 47.1712, lng: 8.5150 } },
|
||||
address: { street: 'Industriestrasse', houseNumber: '2', postalCode: '6300', city: 'Zug', country: 'CH' },
|
||||
areaSqm: 550,
|
||||
rentPricePerSqm: 42,
|
||||
totalRentMonthly: 23100,
|
||||
rentPricePerSqm: 504,
|
||||
totalRentMonthly: 277200,
|
||||
availabilityDate: '2025-10-01',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_SOON,
|
||||
sourceType: 'ERP_IMPORT',
|
||||
@@ -319,6 +376,15 @@ export const mockProperties: Property[] = [
|
||||
ancillaryCosts: 6.0,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1564013799919-ab600027ffc6?w=800&h=400&fit=crop'],
|
||||
importedFrom: 'SAP RE-FX',
|
||||
importedAt: '2025-01-15T08:00:00Z',
|
||||
lastUpdatedAt: '2025-05-10T10:00:00Z',
|
||||
currentTenant: 'FinTech Zug AG',
|
||||
leaseTerm: '3 Jahre',
|
||||
leaseStartDate: '2022-10-01',
|
||||
leaseEndDate: '2025-09-30',
|
||||
breakoutOption: true,
|
||||
breakoutOptionDate: '2025-04-01',
|
||||
organizationId: 'org-wincasa',
|
||||
createdAt: '2025-02-10T11:00:00Z',
|
||||
updatedAt: '2025-04-29T08:00:00Z',
|
||||
@@ -332,8 +398,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Zürich', district: 'Altstetten', canton: 'ZH', country: 'CH', coordinates: { lat: 47.3908, lng: 8.4888 } },
|
||||
address: { street: 'Badenerstrasse', houseNumber: '810', postalCode: '8048', city: 'Zürich', country: 'CH' },
|
||||
areaSqm: 1300,
|
||||
rentPricePerSqm: 45,
|
||||
totalRentMonthly: 58500,
|
||||
rentPricePerSqm: 540,
|
||||
totalRentMonthly: 702000,
|
||||
availabilityDate: '2025-11-01',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_SOON,
|
||||
sourceType: 'ERP_IMPORT',
|
||||
@@ -359,6 +425,14 @@ export const mockProperties: Property[] = [
|
||||
ancillaryCosts: 5.0,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1524758631624-e2822e304c36?w=800&h=400&fit=crop'],
|
||||
importedFrom: 'SAP RE-FX',
|
||||
importedAt: '2025-01-15T08:00:00Z',
|
||||
lastUpdatedAt: '2025-05-10T10:00:00Z',
|
||||
currentTenant: 'Design Studio Zürich GmbH',
|
||||
leaseTerm: '4 Jahre',
|
||||
leaseStartDate: '2021-11-01',
|
||||
leaseEndDate: '2025-10-31',
|
||||
breakoutOption: false,
|
||||
organizationId: 'org-wincasa',
|
||||
createdAt: '2025-01-15T09:00:00Z',
|
||||
updatedAt: '2025-04-25T10:00:00Z',
|
||||
@@ -372,8 +446,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Pratteln', district: 'Industriezone', canton: 'BL', country: 'CH', coordinates: { lat: 47.5228, lng: 7.6958 } },
|
||||
address: { street: 'Industriestrasse', houseNumber: '55', postalCode: '4133', city: 'Pratteln', country: 'CH' },
|
||||
areaSqm: 3100,
|
||||
rentPricePerSqm: 15,
|
||||
totalRentMonthly: 46500,
|
||||
rentPricePerSqm: 180,
|
||||
totalRentMonthly: 558000,
|
||||
availabilityDate: '2025-07-01',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_NOW,
|
||||
sourceType: 'ERP_IMPORT',
|
||||
@@ -398,6 +472,15 @@ export const mockProperties: Property[] = [
|
||||
ancillaryCosts: 2.8,
|
||||
riskLevel: RiskLevel.LOW,
|
||||
images: ['https://images.unsplash.com/photo-1553413077-190dd305871c?w=800&h=400&fit=crop'],
|
||||
importedFrom: 'SAP RE-FX',
|
||||
importedAt: '2025-01-15T08:00:00Z',
|
||||
lastUpdatedAt: '2025-05-10T10:00:00Z',
|
||||
currentTenant: 'Handels- und Lagerbetrieb AG',
|
||||
leaseTerm: '5 Jahre',
|
||||
leaseStartDate: '2020-07-01',
|
||||
leaseEndDate: '2025-06-30',
|
||||
breakoutOption: true,
|
||||
breakoutOptionDate: '2024-07-01',
|
||||
organizationId: 'org-wincasa',
|
||||
createdAt: '2024-12-01T08:00:00Z',
|
||||
updatedAt: '2025-05-04T09:00:00Z',
|
||||
@@ -415,8 +498,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Bern', district: 'Innenstadt', canton: 'BE', country: 'CH', coordinates: { lat: 46.9483, lng: 7.4474 } },
|
||||
address: { street: 'Bahnhofstrasse', houseNumber: '88', postalCode: '3011', city: 'Bern', country: 'CH' },
|
||||
areaSqm: 320,
|
||||
rentPricePerSqm: 95,
|
||||
totalRentMonthly: 30400,
|
||||
rentPricePerSqm: 1140,
|
||||
totalRentMonthly: 364800,
|
||||
availabilityDate: '2025-08-15',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_SOON,
|
||||
sourceType: 'MATCHOFFICE_SCRAPE',
|
||||
@@ -450,8 +533,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Zürich', district: 'Kreis 4', canton: 'ZH', country: 'CH', coordinates: { lat: 47.3775, lng: 8.5398 } },
|
||||
address: { street: 'Europaallee', houseNumber: '21', postalCode: '8004', city: 'Zürich', country: 'CH' },
|
||||
areaSqm: 1150,
|
||||
rentPricePerSqm: 52,
|
||||
totalRentMonthly: 59800,
|
||||
rentPricePerSqm: 624,
|
||||
totalRentMonthly: 717600,
|
||||
availabilityDate: '2025-10-01',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_SOON,
|
||||
sourceType: 'IMMOSCOUT_SCRAPE',
|
||||
@@ -478,8 +561,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Luzern', district: 'Innenstadt', canton: 'LU', country: 'CH', coordinates: { lat: 47.0502, lng: 8.3093 } },
|
||||
address: { street: 'Kasernenplatz', houseNumber: '3', postalCode: '6003', city: 'Luzern', country: 'CH' },
|
||||
areaSqm: 650,
|
||||
rentPricePerSqm: 38,
|
||||
totalRentMonthly: 24700,
|
||||
rentPricePerSqm: 456,
|
||||
totalRentMonthly: 296400,
|
||||
availabilityDate: '2025-10-01',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_SOON,
|
||||
sourceType: 'HOMEGATE_SCRAPE',
|
||||
@@ -512,8 +595,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Muttenz', district: 'Industriezone', canton: 'BL', country: 'CH', coordinates: { lat: 47.5202, lng: 7.6422 } },
|
||||
address: { street: 'Rheinfelderstrasse', houseNumber: '80', postalCode: '4132', city: 'Muttenz', country: 'CH' },
|
||||
areaSqm: 2200,
|
||||
rentPricePerSqm: 16,
|
||||
totalRentMonthly: 35200,
|
||||
rentPricePerSqm: 192,
|
||||
totalRentMonthly: 422400,
|
||||
availabilityDate: '2025-09-01',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_SOON,
|
||||
sourceType: 'IMMOSCOUT_SCRAPE',
|
||||
@@ -546,8 +629,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Zürich', district: 'Innenstadt', canton: 'ZH', country: 'CH', coordinates: { lat: 47.3766, lng: 8.5385 } },
|
||||
address: { street: 'Löwenstrasse', houseNumber: '28', postalCode: '8001', city: 'Zürich', country: 'CH' },
|
||||
areaSqm: 350,
|
||||
rentPricePerSqm: 95,
|
||||
totalRentMonthly: 33250,
|
||||
rentPricePerSqm: 1140,
|
||||
totalRentMonthly: 399000,
|
||||
availabilityDate: '2025-09-15',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_SOON,
|
||||
sourceType: 'MATCHOFFICE_SCRAPE',
|
||||
@@ -581,8 +664,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Bern', district: 'Breitenrain', canton: 'BE', country: 'CH', coordinates: { lat: 46.9598, lng: 7.4522 } },
|
||||
address: { street: 'Breitenrainstrasse', houseNumber: '14', postalCode: '3014', city: 'Bern', country: 'CH' },
|
||||
areaSqm: 780,
|
||||
rentPricePerSqm: 31,
|
||||
totalRentMonthly: 24180,
|
||||
rentPricePerSqm: 372,
|
||||
totalRentMonthly: 290160,
|
||||
availabilityDate: '2025-10-01',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_SOON,
|
||||
sourceType: 'NEWHOME_SCRAPE',
|
||||
@@ -615,8 +698,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Basel', district: 'Kleinhüningen', canton: 'BS', country: 'CH', coordinates: { lat: 47.5720, lng: 7.5882 } },
|
||||
address: { street: 'Voltastrasse', houseNumber: '62', postalCode: '4056', city: 'Basel', country: 'CH' },
|
||||
areaSqm: 1900,
|
||||
rentPricePerSqm: 13,
|
||||
totalRentMonthly: 24700,
|
||||
rentPricePerSqm: 156,
|
||||
totalRentMonthly: 296400,
|
||||
availabilityDate: '2025-11-01',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_SOON,
|
||||
sourceType: 'IMMOSCOUT_SCRAPE',
|
||||
@@ -644,8 +727,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Zug', district: 'Industrie', canton: 'ZG', country: 'CH', coordinates: { lat: 47.1688, lng: 8.5228 } },
|
||||
address: { street: 'Industriestrasse', houseNumber: '45', postalCode: '6300', city: 'Zug', country: 'CH' },
|
||||
areaSqm: 820,
|
||||
rentPricePerSqm: 44,
|
||||
totalRentMonthly: 36080,
|
||||
rentPricePerSqm: 528,
|
||||
totalRentMonthly: 432960,
|
||||
availabilityDate: '2025-11-01',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_SOON,
|
||||
sourceType: 'HOMEGATE_SCRAPE',
|
||||
@@ -665,7 +748,7 @@ export const mockProperties: Property[] = [
|
||||
publicTransportMinutes: 9,
|
||||
},
|
||||
riskLevel: RiskLevel.MEDIUM,
|
||||
images: ['https://images.unsplash.com/photo-1486325212027-8081e485255e?w=800&h=400&fit=crop'],
|
||||
images: ['https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&h=400&fit=crop'],
|
||||
createdAt: '2025-03-18T09:00:00Z',
|
||||
updatedAt: '2025-04-12T11:00:00Z',
|
||||
},
|
||||
@@ -678,8 +761,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Genf', district: 'Centre', canton: 'GE', country: 'CH', coordinates: { lat: 46.2044, lng: 6.1432 } },
|
||||
address: { street: 'Rue du Rhône', houseNumber: '48', postalCode: '1204', city: 'Genf', country: 'CH' },
|
||||
areaSqm: 250,
|
||||
rentPricePerSqm: 112,
|
||||
totalRentMonthly: 28000,
|
||||
rentPricePerSqm: 1344,
|
||||
totalRentMonthly: 336000,
|
||||
availabilityDate: '2026-01-01',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_SOON,
|
||||
sourceType: 'MATCHOFFICE_SCRAPE',
|
||||
@@ -713,8 +796,8 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'St. Gallen', district: 'Centrum', canton: 'SG', country: 'CH', coordinates: { lat: 47.4245, lng: 9.3767 } },
|
||||
address: { street: 'Marktgasse', houseNumber: '7', postalCode: '9000', city: 'St. Gallen', country: 'CH' },
|
||||
areaSqm: 700,
|
||||
rentPricePerSqm: 28,
|
||||
totalRentMonthly: 19600,
|
||||
rentPricePerSqm: 336,
|
||||
totalRentMonthly: 235200,
|
||||
availabilityDate: '2025-11-01',
|
||||
availabilityStatus: AvailabilityStatus.AVAILABLE_SOON,
|
||||
sourceType: 'NEWHOME_SCRAPE',
|
||||
@@ -751,7 +834,7 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Zürich', district: 'Technopark', canton: 'ZH', country: 'CH', coordinates: { lat: 47.3923, lng: 8.5142 } },
|
||||
address: { street: 'Technoparkstrasse', houseNumber: '1', postalCode: '8005', city: 'Zürich', country: 'CH' },
|
||||
areaSqm: 600,
|
||||
rentPricePerSqm: 42,
|
||||
rentPricePerSqm: 504,
|
||||
availabilityDate: '2026-03-01',
|
||||
availabilityStatus: AvailabilityStatus.FUTURE_SIGNAL,
|
||||
sourceType: 'AI_SIGNAL',
|
||||
@@ -776,7 +859,7 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Reinach', district: 'Industriezone Nord', canton: 'BL', country: 'CH', coordinates: { lat: 47.4978, lng: 7.5933 } },
|
||||
address: { street: 'Industriestrasse', houseNumber: '18', postalCode: '4153', city: 'Reinach', country: 'CH' },
|
||||
areaSqm: 3200,
|
||||
rentPricePerSqm: 11,
|
||||
rentPricePerSqm: 132,
|
||||
availabilityDate: '2026-06-01',
|
||||
availabilityStatus: AvailabilityStatus.FUTURE_SIGNAL,
|
||||
sourceType: 'AI_SIGNAL',
|
||||
@@ -801,7 +884,7 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Zürich', district: 'Seebach', canton: 'ZH', country: 'CH', coordinates: { lat: 47.4298, lng: 8.5362 } },
|
||||
address: { street: 'Binzmühlestrasse', houseNumber: '95', postalCode: '8050', city: 'Zürich', country: 'CH' },
|
||||
areaSqm: 850,
|
||||
rentPricePerSqm: 38,
|
||||
rentPricePerSqm: 456,
|
||||
availabilityDate: '2026-02-01',
|
||||
availabilityStatus: AvailabilityStatus.FUTURE_SIGNAL,
|
||||
sourceType: 'AI_SIGNAL',
|
||||
@@ -826,7 +909,7 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Basel', district: 'Klybeck', canton: 'BS', country: 'CH', coordinates: { lat: 47.5762, lng: 7.5918 } },
|
||||
address: { street: 'Klybeckstrasse', houseNumber: '180', postalCode: '4057', city: 'Basel', country: 'CH' },
|
||||
areaSqm: 2600,
|
||||
rentPricePerSqm: 14,
|
||||
rentPricePerSqm: 168,
|
||||
availabilityDate: '2026-07-01',
|
||||
availabilityStatus: AvailabilityStatus.FUTURE_SIGNAL,
|
||||
sourceType: 'AI_SIGNAL',
|
||||
@@ -851,7 +934,7 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Zürich', district: 'Niederdorf', canton: 'ZH', country: 'CH', coordinates: { lat: 47.3748, lng: 8.5418 } },
|
||||
address: { street: 'Münstergasse', houseNumber: '14', postalCode: '8001', city: 'Zürich', country: 'CH' },
|
||||
areaSqm: 280,
|
||||
rentPricePerSqm: 92,
|
||||
rentPricePerSqm: 1104,
|
||||
availabilityDate: '2026-09-01',
|
||||
availabilityStatus: AvailabilityStatus.FUTURE_SIGNAL,
|
||||
sourceType: 'AI_SIGNAL',
|
||||
@@ -876,7 +959,7 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Zug', district: 'Industrie', canton: 'ZG', country: 'CH', coordinates: { lat: 47.1672, lng: 8.5198 } },
|
||||
address: { street: 'Industriestrasse', houseNumber: '60', postalCode: '6300', city: 'Zug', country: 'CH' },
|
||||
areaSqm: 580,
|
||||
rentPricePerSqm: 43,
|
||||
rentPricePerSqm: 516,
|
||||
availabilityDate: '2026-04-01',
|
||||
availabilityStatus: AvailabilityStatus.FUTURE_SIGNAL,
|
||||
sourceType: 'AI_SIGNAL',
|
||||
@@ -901,7 +984,7 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Münchenbuchsee', district: 'Industriezone', canton: 'BE', country: 'CH', coordinates: { lat: 47.0038, lng: 7.4542 } },
|
||||
address: { street: 'Bernstrasse', houseNumber: '42', postalCode: '3053', city: 'Münchenbuchsee', country: 'CH' },
|
||||
areaSqm: 2200,
|
||||
rentPricePerSqm: 12,
|
||||
rentPricePerSqm: 144,
|
||||
availabilityDate: '2026-08-01',
|
||||
availabilityStatus: AvailabilityStatus.FUTURE_SIGNAL,
|
||||
sourceType: 'AI_SIGNAL',
|
||||
@@ -926,7 +1009,7 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Genf', district: 'La Praille', canton: 'GE', country: 'CH', coordinates: { lat: 46.1912, lng: 6.1285 } },
|
||||
address: { street: 'Route de la Praille', houseNumber: '30', postalCode: '1227', city: 'Genf', country: 'CH' },
|
||||
areaSqm: 520,
|
||||
rentPricePerSqm: 36,
|
||||
rentPricePerSqm: 432,
|
||||
availabilityDate: '2027-01-01',
|
||||
availabilityStatus: AvailabilityStatus.FUTURE_SIGNAL,
|
||||
sourceType: 'AI_SIGNAL',
|
||||
@@ -951,7 +1034,7 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'Frenkendorf', district: 'Industriezone', canton: 'BL', country: 'CH', coordinates: { lat: 47.5098, lng: 7.7182 } },
|
||||
address: { street: 'Frenkenstrasse', houseNumber: '28', postalCode: '4402', city: 'Frenkendorf', country: 'CH' },
|
||||
areaSqm: 3500,
|
||||
rentPricePerSqm: 13,
|
||||
rentPricePerSqm: 156,
|
||||
availabilityDate: '2026-10-01',
|
||||
availabilityStatus: AvailabilityStatus.FUTURE_SIGNAL,
|
||||
sourceType: 'AI_SIGNAL',
|
||||
@@ -976,7 +1059,7 @@ export const mockProperties: Property[] = [
|
||||
location: { city: 'St. Gallen', district: 'Riethüsli', canton: 'SG', country: 'CH', coordinates: { lat: 47.4182, lng: 9.3888 } },
|
||||
address: { street: 'Riethüslistrasse', houseNumber: '40', postalCode: '9000', city: 'St. Gallen', country: 'CH' },
|
||||
areaSqm: 480,
|
||||
rentPricePerSqm: 27,
|
||||
rentPricePerSqm: 324,
|
||||
availabilityDate: '2026-05-01',
|
||||
availabilityStatus: AvailabilityStatus.FUTURE_SIGNAL,
|
||||
sourceType: 'AI_SIGNAL',
|
||||
|
||||
Reference in New Issue
Block a user