9f391d17cb
- Add Reminder Manager page (/supply/reminder-manager) with KPI bar, filter bar, list/card feed, and detail drawer (7 sections incl. activity log, snooze, complete, dismiss actions) - Add Schattenmarkt-Freigabe toggle on PropertyDetailView: Verwaltung can opt-in properties for early market exposure before contract expiry - Auto-generate FutureSignal cards via useSchattenmarktSignals hook when leaseEndDate - leadTimeMonths <= MOCK_TODAY - Fix useUnifiedResults: use property.resultType as fallback (was defaulting everything to VERIFIED_PORTFOLIO) - Fix demand Results: hide VERIFIED_PORTFOLIO from non-manager users even when showOwnProperties toggle was previously enabled - Fix AppShell: redirect to allowed workspace on user role switch - Fix 3 wrong match scores (match-002: 93→62, match-009: 86→55, match-017: 87→52) - Add 7 new match records (match-050–056) for need-001, need-002, need-011 - Add need-011 (Retail Bern Innenstadt) - Add prop-031–036 (EXTERNAL_MARKET / MAISON_WORK / FUTURE_AVAILABILITY) - Fix duplicate image URLs across all properties - Add signal-011 (Bern Altstadt, Mode Boutique) + propertyId to signal-001 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1869 lines
100 KiB
TypeScript
1869 lines
100 KiB
TypeScript
import { MatchStrength, MatchStatus, RiskLevel } from '../domain/enums'
|
||
import type { Match } from '../domain/match'
|
||
|
||
export const mockMatches: Match[] = [
|
||
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
// need-001 · Innovatech AG · OFFICE Zürich · 600–1000m² · max CHF 45/m²
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
|
||
{
|
||
id: 'match-001',
|
||
propertyId: 'prop-001',
|
||
needId: 'need-001',
|
||
matchScore: 88,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.APPROVED,
|
||
scoreBreakdown: { hardMatchScore: 92, softFactorScore: 85, confidenceModifier: 0.97, dataQualityModifier: 0.92, totalScore: 88 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.20, score: 95, contribution: 19, explanation: '850m² liegt im Zielkorridor (600–1000m²)' },
|
||
{ criterion: 'ÖV-Anbindung', weight: 0.20, score: 90, contribution: 18, explanation: '4 Min. zur S-Bahn, Kriterium erfüllt' },
|
||
{ criterion: 'Standort', weight: 0.15, score: 88, contribution: 13.2, explanation: 'Zürich-West trifft bevorzugte Lage' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Mietpreis', weight: 0.15, score: 76, contribution: 11.4, explanation: 'CHF 38/m² liegt über Wunschbudget von CHF 35/m²' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Budget', concern: 'Mietpreis 8% über Budget-Maximum', severity: 'MEDIUM', mitigation: 'Verhandlungspotenzial vorhanden – Objekt leer seit 3 Monaten' },
|
||
],
|
||
explainabilitySummary: 'Starker Match aufgrund idealer Lage und Fläche. Einziger Vorbehalt ist der Mietpreis, der knapp über dem Budget liegt, aber verhandelbar erscheint.',
|
||
confidenceLevel: 0.92,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: [],
|
||
alternativeStrategies: [
|
||
{ title: 'Kleinere Einheit im gleichen Gebäude', description: '650m² verfügbar ab Q3 2025, CHF 35/m²', expectedScore: 82 },
|
||
],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-10T08:00:00Z',
|
||
updatedAt: '2025-05-10T08:00:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-002',
|
||
propertyId: 'prop-004',
|
||
needId: 'need-001',
|
||
matchScore: 62,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.SHORTLISTED,
|
||
scoreBreakdown: { hardMatchScore: 72, softFactorScore: 62, confidenceModifier: 0.68, dataQualityModifier: 0.55, totalScore: 62 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.20, score: 78, contribution: 15.6, explanation: '1150m² überschreitet Zielkorridor leicht (600–1000m²)' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Objekttyp', weight: 0.25, score: 30, contribution: 7.5, explanation: 'MIXED-Fläche – Bedarf ist OFFICE, Typ-Mismatch' },
|
||
{ criterion: 'Standort', weight: 0.20, score: 55, contribution: 11, explanation: 'Zürich Kreis 4 ist nicht Zürich-West – andere Lage' },
|
||
{ criterion: 'Mietpreis', weight: 0.15, score: 40, contribution: 6, explanation: 'CHF 52/m² ist 15% über Budget-Maximum (CHF 45/m²)' },
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 40, contribution: 4, explanation: 'Externe Quelle – Mietpreis und Verfügbarkeit nicht bestätigt' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Objekttyp', concern: 'MIXED-Fläche statt reiner Bürofläche – Nutzungseinschränkungen möglich', severity: 'HIGH' },
|
||
{ criterion: 'Budget', concern: 'Mietpreis 15% über Budget-Maximum', severity: 'HIGH' },
|
||
{ criterion: 'Standort', concern: 'Kreis 4 ist nicht Zürich-West – längere Pendeldistanz für Innovatech-Team', severity: 'MEDIUM' },
|
||
],
|
||
explainabilitySummary: 'Schwacher Match aufgrund Typ-Mismatch (MIXED statt OFFICE), falschem Stadtteil (Kreis 4 ≠ Zürich-West) und Budgetüberschreitung von 15%.',
|
||
confidenceLevel: 0.55,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Daten aus Drittquelle unvollständig', 'Mietpreis nicht verifiziert', 'Typ-Mismatch'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-10T08:05:00Z',
|
||
updatedAt: '2025-05-10T08:05:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-005',
|
||
propertyId: 'prop-007',
|
||
needId: 'need-001',
|
||
matchScore: 86,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 89, softFactorScore: 83, confidenceModifier: 0.98, dataQualityModifier: 0.94, totalScore: 86 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.20, score: 92, contribution: 18.4, explanation: '720m² im Zielkorridor (600–1000m²)' },
|
||
{ criterion: 'Standort', weight: 0.20, score: 90, contribution: 18, explanation: 'Zürich Oerlikon – bevorzugte Lage' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 90, contribution: 13.5, explanation: 'CHF 36/m² deutlich unter Maximum' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Prestige', weight: 0.10, score: 72, contribution: 7.2, explanation: 'Prestige-Score 72 leicht unter Mindestanforderung 70 – ok' },
|
||
],
|
||
tradeoffs: [],
|
||
explainabilitySummary: 'Starker Match in Zürich Oerlikon. Fläche, Budget und ÖV-Anbindung erfüllen alle Hauptkriterien. Bewertung analog zu prop-001.',
|
||
confidenceLevel: 0.91,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: [],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-10T08:20:00Z',
|
||
updatedAt: '2025-05-10T08:20:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-006',
|
||
propertyId: 'prop-013',
|
||
needId: 'need-001',
|
||
matchScore: 72,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.SHORTLISTED,
|
||
scoreBreakdown: { hardMatchScore: 80, softFactorScore: 68, confidenceModifier: 0.96, dataQualityModifier: 0.92, totalScore: 72 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.20, score: 88, contribution: 17.6, explanation: 'Zürich Altstetten – akzeptable Lage' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 95, contribution: 14.25, explanation: 'CHF 45/m² exakt im Budget-Limit' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Nutzungsart', weight: 0.15, score: 60, contribution: 9, explanation: 'MIXED-Fläche, Bedarf ist OFFICE – Teileignung' },
|
||
{ criterion: 'Fläche', weight: 0.20, score: 65, contribution: 13, explanation: '1300m² überschreitet Maximum von 1000m² deutlich' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Nutzungsart', concern: 'Gemischt genutzte Fläche – Büroanteil nicht spezifiziert', severity: 'MEDIUM', mitigation: 'Aufteilung klären, evtl. nur Büroanteil mieten' },
|
||
],
|
||
explainabilitySummary: 'Moderater Match – Lage und Budget stimmen, aber die Fläche ist zu gross und der gemischte Nutzungstyp passt nur teilweise.',
|
||
confidenceLevel: 0.82,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: ['Büroanteil der Gesamtfläche unklar'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-10T08:25:00Z',
|
||
updatedAt: '2025-05-10T08:25:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-007',
|
||
propertyId: 'prop-005',
|
||
needId: 'need-001',
|
||
matchScore: 59,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 82, softFactorScore: 66, confidenceModifier: 0.55, dataQualityModifier: 0.38, totalScore: 59 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.20, score: 90, contribution: 18, explanation: 'Zürich Technopark – bevorzugte Lage' },
|
||
{ criterion: 'Fläche', weight: 0.20, score: 88, contribution: 17.6, explanation: '600m² an unterem Rand des Zielkorridors' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Konfidenz', weight: 0.15, score: 28, contribution: 4.2, explanation: 'Probabilistisches Signal – kein bestätigtes Objekt' },
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 22, contribution: 2.2, explanation: 'Kritische Felder fehlen, Daten nicht verifiziert' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Verfügbarkeit', concern: 'Signal nur 55% Wahrscheinlichkeit – keine Garantie', severity: 'HIGH', mitigation: 'Für Monitoring-Watchlist geeignet' },
|
||
],
|
||
explainabilitySummary: 'Lage und Fläche passen gut, aber die hohe Unsicherheit durch das probabilistische Signal zieht den Score deutlich nach unten.',
|
||
confidenceLevel: 0.48,
|
||
riskLevel: RiskLevel.HIGH,
|
||
uncertaintyIndicators: ['Probabilistisches Signal', 'Kritische Daten fehlen'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-10T08:30:00Z',
|
||
updatedAt: '2025-05-10T08:30:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-008',
|
||
propertyId: 'prop-023',
|
||
needId: 'need-001',
|
||
matchScore: 62,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 85, softFactorScore: 69, confidenceModifier: 0.54, dataQualityModifier: 0.36, totalScore: 62 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.20, score: 85, contribution: 17, explanation: 'Zürich-Nord / Seebach – bevorzugter Kanton ZH' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 92, contribution: 13.8, explanation: 'CHF 38/m² unter Maximum von CHF 45/m²' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Konfidenz', weight: 0.15, score: 32, contribution: 4.8, explanation: '54% Signalwahrscheinlichkeit – unbestätigt' },
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 20, contribution: 2, explanation: 'Probabilistisches Signal, Felder fehlen' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Verfügbarkeit', concern: 'Auszug von aktuellem Mieter nicht bestätigt', severity: 'HIGH', mitigation: 'Als Frühindikator beobachten' },
|
||
],
|
||
explainabilitySummary: 'Gute Lage in Zürich mit passendem Budget, aber Future-Signal mit mittlerer Konfidenz. Empfehlung: Beobachten.',
|
||
confidenceLevel: 0.46,
|
||
riskLevel: RiskLevel.HIGH,
|
||
uncertaintyIndicators: ['Auszug des Mieters nicht bestätigt', 'Daten unvollständig'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-10T08:35:00Z',
|
||
updatedAt: '2025-05-10T08:35:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-009',
|
||
propertyId: 'prop-015',
|
||
needId: 'need-001',
|
||
matchScore: 55,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.SHORTLISTED,
|
||
scoreBreakdown: { hardMatchScore: 68, softFactorScore: 60, confidenceModifier: 0.70, dataQualityModifier: 0.60, totalScore: 55 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.20, score: 88, contribution: 17.6, explanation: '650m² im Zielkorridor' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 90, contribution: 13.5, explanation: 'CHF 38/m² unter Maximum' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.20, score: 35, contribution: 7, explanation: 'Luzern ist eine andere Stadt und ein anderer Kanton – nicht Zürich' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Luzern liegt 55 km von Zürich – kein Pendeln möglich', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Luzern passt nicht zu Zürich-West. Trotz passendem Budget und Fläche ist die Lage nicht kompatibel.',
|
||
confidenceLevel: 0.55,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Standort ausserhalb bevorzugter Region'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-10T08:40:00Z',
|
||
updatedAt: '2025-05-10T08:40:00Z',
|
||
},
|
||
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
// need-002 · Schweizer Logistik GmbH · LOGISTICS Basel · 1500–4000m² · max CHF 18/m²
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
|
||
{
|
||
id: 'match-003',
|
||
propertyId: 'prop-002',
|
||
needId: 'need-002',
|
||
matchScore: 91,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.APPROVED,
|
||
scoreBreakdown: { hardMatchScore: 94, softFactorScore: 89, confidenceModifier: 0.99, dataQualityModifier: 0.96, totalScore: 91 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.25, score: 96, contribution: 24, explanation: '2400m² im Zielkorridor (1500–4000m²)' },
|
||
{ criterion: 'Autobahnanschluss', weight: 0.20, score: 92, contribution: 18.4, explanation: 'A2-Anschluss ca. 4 Min., Kriterium erfüllt' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 88, contribution: 17.6, explanation: 'CHF 14/m² liegt unter Maximum von CHF 18/m²' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Erweiterungspotenzial', weight: 0.05, score: 70, contribution: 3.5, explanation: '800m² Erweiterung möglich, aber begrenzt' },
|
||
],
|
||
tradeoffs: [],
|
||
explainabilitySummary: 'Sehr starker Match. Fläche, Anbindung und Budget passen exzellent. Hohe Datenqualität aus internem Portfolio bestätigt Verlässlichkeit.',
|
||
confidenceLevel: 0.96,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: [],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-10T08:10:00Z',
|
||
updatedAt: '2025-05-10T08:10:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-004',
|
||
propertyId: 'prop-006',
|
||
needId: 'need-002',
|
||
matchScore: 47,
|
||
matchStrength: MatchStrength.WEAK,
|
||
status: MatchStatus.SHORTLISTED,
|
||
scoreBreakdown: { hardMatchScore: 70, softFactorScore: 40, confidenceModifier: 0.48, dataQualityModifier: 0.30, totalScore: 47 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.25, score: 85, contribution: 21.25, explanation: '3200m² im erweiterten Zielkorridor' },
|
||
{ criterion: 'Standort', weight: 0.20, score: 72, contribution: 14.4, explanation: 'Reinach BL ist eine bevorzugte Region' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Confidence', weight: 0.15, score: 20, contribution: 3, explanation: 'Nur 48% Signalwahrscheinlichkeit – kein bestätigtes Objekt' },
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 15, contribution: 1.5, explanation: 'Mehrere kritische Felder fehlen, Schätzwerte' },
|
||
{ criterion: 'Timing', weight: 0.15, score: 50, contribution: 7.5, explanation: 'Verfügbarkeit erst Q2 2026, spät für Anforderung' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Verfügbarkeit', concern: 'Probabilistisches Future-Signal – keine Garantie auf Verfügbarkeit', severity: 'HIGH', mitigation: 'Für Monitoring-Watchlist geeignet' },
|
||
],
|
||
explainabilitySummary: 'Schwacher Match aufgrund hoher Unsicherheit. Das Signal ist interessant als Frühindikator, aber nicht als aktive Option geeignet.',
|
||
confidenceLevel: 0.38,
|
||
riskLevel: RiskLevel.HIGH,
|
||
uncertaintyIndicators: ['Probabilistisches Signal ohne Bestätigung', 'Mietpreis geschätzt'],
|
||
alternativeStrategies: [
|
||
{ title: 'Signal beobachten', description: 'Als Future-Availability-Signal auf Watchlist setzen und in 3 Monaten neu evaluieren' },
|
||
],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-10T08:15:00Z',
|
||
updatedAt: '2025-05-10T08:15:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-010',
|
||
propertyId: 'prop-014',
|
||
needId: 'need-002',
|
||
matchScore: 87,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 90, softFactorScore: 84, confidenceModifier: 0.98, dataQualityModifier: 0.94, totalScore: 87 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.25, score: 95, contribution: 23.75, explanation: '3100m² optimal im Zielkorridor (1500–4000m²)' },
|
||
{ criterion: 'Standort', weight: 0.20, score: 82, contribution: 16.4, explanation: 'Pratteln BL – Kanton BL, direkte Nähe zu Basel' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 88, contribution: 17.6, explanation: 'CHF 15/m² unter Maximum von CHF 18/m²' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.05, score: 65, contribution: 3.25, explanation: 'Nicht direkt Basel-Stadt, aber akzeptable Region' },
|
||
],
|
||
tradeoffs: [],
|
||
explainabilitySummary: 'Sehr starker Match. Logistikfläche in Pratteln erfüllt alle Hauptkriterien. Verfügbarkeit sofort, Daten vollständig.',
|
||
confidenceLevel: 0.93,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: [],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-10T09:00:00Z',
|
||
updatedAt: '2025-05-10T09:00:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-011',
|
||
propertyId: 'prop-016',
|
||
needId: 'need-002',
|
||
matchScore: 93,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.APPROVED,
|
||
scoreBreakdown: { hardMatchScore: 95, softFactorScore: 92, confidenceModifier: 0.83, dataQualityModifier: 0.76, totalScore: 93 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.25, score: 92, contribution: 23, explanation: '2200m² im Zielkorridor' },
|
||
{ criterion: 'Standort', weight: 0.20, score: 78, contribution: 15.6, explanation: 'Muttenz BL – gleicher Kanton, gute Lage' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 85, contribution: 17, explanation: 'CHF 16/m² innerhalb Budget' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 58, contribution: 5.8, explanation: 'Externe Quelle – Hallenhöhe nicht bestätigt' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Datenqualität', concern: 'Hallenhöhe und Andienung aus externer Quelle – Vor-Ort-Check empfohlen', severity: 'MEDIUM' },
|
||
],
|
||
explainabilitySummary: 'Solider Marktinserat-Match in Muttenz. Fläche und Budget stimmen, Datenverifikation ausstehend.',
|
||
confidenceLevel: 0.72,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Hallenhöhe nicht bestätigt', 'Externe Quelle'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-10T09:05:00Z',
|
||
updatedAt: '2025-05-10T09:05:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-012',
|
||
propertyId: 'prop-009',
|
||
needId: 'need-002',
|
||
matchScore: 55,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 74, softFactorScore: 60, confidenceModifier: 0.98, dataQualityModifier: 0.95, totalScore: 55 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.25, score: 85, contribution: 21.25, explanation: '1800m² im Zielkorridor' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 90, contribution: 18, explanation: 'CHF 13/m² weit unter Maximum' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.20, score: 35, contribution: 7, explanation: 'Winterthur liegt ausserhalb Präferenz Basel-Region' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Winterthur statt Basel – komplett andere Region, kein A2-Anschluss', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Fläche und Preis passen hervorragend, aber Winterthur ist nicht die gewünschte Logistik-Region Basel. Nur als Alternativoption.',
|
||
confidenceLevel: 0.82,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: ['Standort ausserhalb Präferenzregion'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-10T09:10:00Z',
|
||
updatedAt: '2025-05-10T09:10:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-013',
|
||
propertyId: 'prop-024',
|
||
needId: 'need-002',
|
||
matchScore: 63,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.SHORTLISTED,
|
||
scoreBreakdown: { hardMatchScore: 86, softFactorScore: 70, confidenceModifier: 0.52, dataQualityModifier: 0.35, totalScore: 63 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.20, score: 95, contribution: 19, explanation: 'Basel Hafen – exakte Präferenzlage' },
|
||
{ criterion: 'Fläche', weight: 0.25, score: 88, contribution: 22, explanation: '2600m² im Zielkorridor' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Konfidenz', weight: 0.15, score: 32, contribution: 4.8, explanation: 'Neubau-Signal – Fertigstellung Q2 2026' },
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 25, contribution: 2.5, explanation: 'Mieterkonditionen noch nicht bekannt' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Timing', concern: 'Fertigstellung Juli 2026 – möglicherweise zu spät', severity: 'MEDIUM', mitigation: 'Voranmietung prüfen' },
|
||
],
|
||
explainabilitySummary: 'Sehr gute Lage direkt am Basler Hafen. Als Neubau mit hoher Bauwahrscheinlichkeit auf Shortlist geeignet.',
|
||
confidenceLevel: 0.44,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Fertigstellung abhängig von Baufortschritt'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-10T09:15:00Z',
|
||
updatedAt: '2025-05-10T09:15:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-014',
|
||
propertyId: 'prop-029',
|
||
needId: 'need-002',
|
||
matchScore: 56,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 79, softFactorScore: 63, confidenceModifier: 0.46, dataQualityModifier: 0.31, totalScore: 56 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.25, score: 90, contribution: 22.5, explanation: '3500m² im Zielkorridor' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 92, contribution: 18.4, explanation: 'CHF 13/m² deutlich unter Maximum' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Konfidenz', weight: 0.15, score: 28, contribution: 4.2, explanation: 'Nur 50% Wahrscheinlichkeit, kein bestätigter Auszug' },
|
||
{ criterion: 'Standort', weight: 0.20, score: 60, contribution: 12, explanation: 'Frenkendorf BL – gleicher Kanton, aber nicht Basel-Stadt' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Verfügbarkeit', concern: 'Probabilistisches Signal – Auszug unbestätigt', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Gleicher Kanton, gutes Preis-Leistungs-Verhältnis, aber Future-Signal mit niedriger Konfidenz. Als Watchlist-Kandidat geeignet.',
|
||
confidenceLevel: 0.40,
|
||
riskLevel: RiskLevel.HIGH,
|
||
uncertaintyIndicators: ['Auszug unbestätigt', 'Konditionen unbekannt'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-10T09:20:00Z',
|
||
updatedAt: '2025-05-10T09:20:00Z',
|
||
},
|
||
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
// need-003 · Pharma Holding AG · OFFICE Basel · 500–800m² · max CHF 40/m²
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
|
||
{
|
||
id: 'match-015',
|
||
propertyId: 'prop-008',
|
||
needId: 'need-003',
|
||
matchScore: 85,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.APPROVED,
|
||
scoreBreakdown: { hardMatchScore: 88, softFactorScore: 82, confidenceModifier: 0.97, dataQualityModifier: 0.93, totalScore: 85 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 95, contribution: 23.75, explanation: 'Basel Dreispitz – exakte Präferenzlage' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 32/m² deutlich unter Maximum CHF 40/m²' },
|
||
{ criterion: 'Prestige', weight: 0.12, score: 70, contribution: 8.4, explanation: 'Prestige 70 erfüllt Mindestanforderung' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Fläche', weight: 0.20, score: 72, contribution: 14.4, explanation: '900m² liegt über Maximum 800m² – etwas zu gross' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Fläche', concern: '900m² leicht über Maximum, möglicherweise Untereinheit verhandelbar', severity: 'LOW' },
|
||
],
|
||
explainabilitySummary: 'Starker Match in Basel. Prestige, Budget und Lage stimmen. Fläche minimal über Wunschgrösse, aber verhandelbar.',
|
||
confidenceLevel: 0.90,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: [],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T08:00:00Z',
|
||
updatedAt: '2025-05-11T08:00:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-016',
|
||
propertyId: 'prop-007',
|
||
needId: 'need-003',
|
||
matchScore: 52,
|
||
matchStrength: MatchStrength.WEAK,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 72, softFactorScore: 60, confidenceModifier: 0.98, dataQualityModifier: 0.94, totalScore: 52 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.20, score: 90, contribution: 18, explanation: '720m² im Zielkorridor' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 36/m² unter Maximum CHF 40/m²' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 35, contribution: 8.75, explanation: 'Zürich statt Basel – andere Stadt, anderer Kanton' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Zürich ist nicht im Präferenzgebiet Basel/Allschwil', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Fläche und Preis stimmen, aber Zürich entspricht nicht dem Standortbedarf Basel. Nur wenn Flexibilität vorhanden.',
|
||
confidenceLevel: 0.86,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: ['Standortanforderung nicht erfüllt'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T08:05:00Z',
|
||
updatedAt: '2025-05-11T08:05:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-017',
|
||
propertyId: 'prop-018',
|
||
needId: 'need-003',
|
||
matchScore: 52,
|
||
matchStrength: MatchStrength.WEAK,
|
||
status: MatchStatus.SHORTLISTED,
|
||
scoreBreakdown: { hardMatchScore: 62, softFactorScore: 54, confidenceModifier: 0.68, dataQualityModifier: 0.57, totalScore: 52 },
|
||
positiveFactors: [
|
||
{ criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 31/m² deutlich unter Maximum' },
|
||
{ criterion: 'Fläche', weight: 0.20, score: 88, contribution: 17.6, explanation: '780m² nahe am Zielkorridor' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 35, contribution: 8.75, explanation: 'Bern liegt 90 km von Basel – kritisches Ausschlusskriterium' },
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 42, contribution: 4.2, explanation: 'Externe Quelle, Renovierungsstand unklar' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Bern liegt 90 km von Basel – keine Nähe zur Pharma-Industrie-Achse', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Bern liegt 90 km von Basel entfernt. Lage ist kritisches Ausschlusskriterium trotz passender Fläche und Budget.',
|
||
confidenceLevel: 0.54,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Standort ausserhalb Präferenzregion', 'Externe Quelle'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T08:10:00Z',
|
||
updatedAt: '2025-05-11T08:10:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-018',
|
||
propertyId: 'prop-005',
|
||
needId: 'need-003',
|
||
matchScore: 38,
|
||
matchStrength: MatchStrength.WEAK,
|
||
status: MatchStatus.REJECTED,
|
||
scoreBreakdown: { hardMatchScore: 61, softFactorScore: 45, confidenceModifier: 0.55, dataQualityModifier: 0.38, totalScore: 38 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.20, score: 88, contribution: 17.6, explanation: '600m² im Zielkorridor' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 35, contribution: 8.75, explanation: 'Zürich statt Basel – 80km Entfernung' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 70, contribution: 14, explanation: 'CHF 42/m² liegt 5% über Budget-Maximum' },
|
||
{ criterion: 'Konfidenz', weight: 0.15, score: 25, contribution: 3.75, explanation: 'Future-Signal, kein bestätigtes Objekt' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort & Verfügbarkeit', concern: 'Falscher Standort + Future-Signal macht diesen Match nicht empfehlenswert', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Zu viele kritische Mängel: falscher Standort, Budget leicht über Maximum, und probabilistisches Signal. Abgelehnt.',
|
||
confidenceLevel: 0.36,
|
||
riskLevel: RiskLevel.HIGH,
|
||
uncertaintyIndicators: ['Falscher Standort', 'Future-Signal', 'Budget knapp'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T08:15:00Z',
|
||
updatedAt: '2025-05-11T08:15:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-019',
|
||
propertyId: 'prop-015',
|
||
needId: 'need-003',
|
||
matchScore: 42,
|
||
matchStrength: MatchStrength.WEAK,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 56, softFactorScore: 44, confidenceModifier: 0.70, dataQualityModifier: 0.60, totalScore: 42 },
|
||
positiveFactors: [
|
||
{ criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 38/m² unter Maximum CHF 40/m²' },
|
||
{ criterion: 'Fläche', weight: 0.20, score: 88, contribution: 17.6, explanation: '650m² im Zielkorridor' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 35, contribution: 8.75, explanation: 'Luzern liegt ausserhalb Region Basel' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Luzern ist nicht im Präferenzgebiet, 100km von Basel', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Budget und Fläche passen, jedoch ist Luzern nicht mit dem Bedarf Raum Basel vereinbar.',
|
||
confidenceLevel: 0.56,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Standort ausserhalb Präferenz'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T08:20:00Z',
|
||
updatedAt: '2025-05-11T08:20:00Z',
|
||
},
|
||
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
// need-004 · Retailer Zürich AG · RETAIL Zürich · 200–500m² · max CHF 100/m²
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
|
||
{
|
||
id: 'match-020',
|
||
propertyId: 'prop-010',
|
||
needId: 'need-004',
|
||
matchScore: 91,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.APPROVED,
|
||
scoreBreakdown: { hardMatchScore: 94, softFactorScore: 88, confidenceModifier: 0.99, dataQualityModifier: 0.96, totalScore: 91 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.35, score: 98, contribution: 34.3, explanation: 'Zürich Löwenplatz – exakte Innenstadtlage, Topstandort' },
|
||
{ criterion: 'Fläche', weight: 0.15, score: 90, contribution: 13.5, explanation: '285m² im Zielkorridor' },
|
||
{ criterion: 'Prestige', weight: 0.15, score: 95, contribution: 14.25, explanation: 'Prestige 95 – Topstandort erfüllt Anforderung' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Budget', weight: 0.15, score: 80, contribution: 12, explanation: 'CHF 88/m² unter Maximum CHF 100/m², leicht over avg' },
|
||
],
|
||
tradeoffs: [],
|
||
explainabilitySummary: 'Exzellenter Match. Zürich Löwenplatz ist ein Erstklasstandort mit höchster Passantenfrequenz. Alle Kriterien erfüllt.',
|
||
confidenceLevel: 0.96,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: [],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T09:00:00Z',
|
||
updatedAt: '2025-05-11T09:00:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-021',
|
||
propertyId: 'prop-017',
|
||
needId: 'need-004',
|
||
matchScore: 91,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.SHORTLISTED,
|
||
scoreBreakdown: { hardMatchScore: 94, softFactorScore: 90, confidenceModifier: 0.81, dataQualityModifier: 0.74, totalScore: 91 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.35, score: 94, contribution: 32.9, explanation: 'Zürich Löwenstrasse – Innenstadtlage' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 95, contribution: 14.25, explanation: 'CHF 95/m² unter Maximum' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 61, contribution: 6.1, explanation: 'Mietpreis aus externer Quelle, nicht bestätigt' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Datenqualität', concern: 'Mietpreis und Vertragsdauer nicht bestätigt', severity: 'MEDIUM', mitigation: 'Verifizierung beim Vermieter empfohlen' },
|
||
],
|
||
explainabilitySummary: 'Sehr gute Lage in Zürich Innenstadt. Datenverifikation ausstehend, aber Standort und Preis stimmen.',
|
||
confidenceLevel: 0.72,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Mietpreis nicht final bestätigt'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T09:05:00Z',
|
||
updatedAt: '2025-05-11T09:05:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-022',
|
||
propertyId: 'prop-025',
|
||
needId: 'need-004',
|
||
matchScore: 62,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 85, softFactorScore: 69, confidenceModifier: 0.50, dataQualityModifier: 0.33, totalScore: 62 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.35, score: 90, contribution: 31.5, explanation: 'Zürich Niederdorf – Innenstadtlage, gute Passantenfrequenz' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 95, contribution: 14.25, explanation: 'CHF 92/m² unter Maximum' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Konfidenz', weight: 0.15, score: 30, contribution: 4.5, explanation: '55% Signalwahrscheinlichkeit – unbestätigt' },
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 20, contribution: 2, explanation: 'Future-Signal, kritische Felder fehlen' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Verfügbarkeit', concern: 'Probabilistisches Signal – Auszug noch nicht bestätigt', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Gute Lage im Niederdorf, aber Future-Signal mit mittlerer Konfidenz. Empfehlung: Beobachten und bei Bestätigung priorisieren.',
|
||
confidenceLevel: 0.42,
|
||
riskLevel: RiskLevel.HIGH,
|
||
uncertaintyIndicators: ['Auszug unbestätigt', 'Future-Signal'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T09:10:00Z',
|
||
updatedAt: '2025-05-11T09:10:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-023',
|
||
propertyId: 'prop-003',
|
||
needId: 'need-004',
|
||
matchScore: 84,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.SHORTLISTED,
|
||
scoreBreakdown: { hardMatchScore: 89, softFactorScore: 82, confidenceModifier: 0.77, dataQualityModifier: 0.69, totalScore: 84 },
|
||
positiveFactors: [
|
||
{ criterion: 'Budget', weight: 0.15, score: 95, contribution: 14.25, explanation: 'CHF 95/m² unter Maximum CHF 100/m²' },
|
||
{ criterion: 'Prestige', weight: 0.15, score: 92, contribution: 13.8, explanation: 'Berner Bahnhofstrasse – Top-Prestige' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.35, score: 35, contribution: 12.25, explanation: 'Bern statt Zürich Innenstadt – andere Stadt, anderer Kanton' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Bern ist nicht Zürich – Laufkundschaft aus anderem Einzugsgebiet', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Gutes Retail-Objekt in Bern, aber der Bedarf ist explizit Zürich Innenstadt. Standort ist ausschlaggebend für Ablehnung.',
|
||
confidenceLevel: 0.60,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Standort nicht im Zielgebiet'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T09:15:00Z',
|
||
updatedAt: '2025-05-11T09:15:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-024',
|
||
propertyId: 'prop-021',
|
||
needId: 'need-004',
|
||
matchScore: 72,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 81, softFactorScore: 70, confidenceModifier: 0.72, dataQualityModifier: 0.62, totalScore: 72 },
|
||
positiveFactors: [
|
||
{ criterion: 'Prestige', weight: 0.15, score: 94, contribution: 14.1, explanation: 'Rue du Rhône Genf – sehr hoher Prestige-Score' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.35, score: 35, contribution: 12.25, explanation: 'Genf ist nicht Zürich – 280km Entfernung' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 68, contribution: 10.2, explanation: 'CHF 112/m² liegt 12% über Maximum CHF 100/m²' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Genf ist eine komplett andere Stadt als Zürich', severity: 'HIGH' },
|
||
{ criterion: 'Budget', concern: 'Mietpreis 12% über Maximum', severity: 'MEDIUM' },
|
||
],
|
||
explainabilitySummary: 'Abgelehnt. Genf und Zürich sind nicht kompatibel – weder geografisch noch bezüglich des angestrebten Kundenkreises. Budget ebenfalls überschritten.',
|
||
confidenceLevel: 0.52,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Falscher Standort', 'Budget überschritten'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T09:20:00Z',
|
||
updatedAt: '2025-05-11T09:20:00Z',
|
||
},
|
||
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
// need-005 · TechStart GmbH · OFFICE Zug/Zürich · 300–700m² · max CHF 48/m²
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
|
||
{
|
||
id: 'match-025',
|
||
propertyId: 'prop-012',
|
||
needId: 'need-005',
|
||
matchScore: 91,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.APPROVED,
|
||
scoreBreakdown: { hardMatchScore: 94, softFactorScore: 88, confidenceModifier: 0.97, dataQualityModifier: 0.93, totalScore: 91 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 100, contribution: 25, explanation: 'Zug Zentrum – exakt bevorzugte Lage' },
|
||
{ criterion: 'Fläche', weight: 0.20, score: 92, contribution: 18.4, explanation: '550m² im Zielkorridor (300–700m²)' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 90, contribution: 18, explanation: 'CHF 42/m² klar unter Maximum CHF 48/m²' },
|
||
],
|
||
negativeFactors: [],
|
||
tradeoffs: [],
|
||
explainabilitySummary: 'Exzellenter Match. Zug Zentrum trifft exakt den Standortwunsch. Budget, Fläche und Ausbaugrad erfüllen alle Anforderungen.',
|
||
confidenceLevel: 0.92,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: [],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T10:00:00Z',
|
||
updatedAt: '2025-05-11T10:00:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-026',
|
||
propertyId: 'prop-007',
|
||
needId: 'need-005',
|
||
matchScore: 83,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.SHORTLISTED,
|
||
scoreBreakdown: { hardMatchScore: 86, softFactorScore: 80, confidenceModifier: 0.98, dataQualityModifier: 0.94, totalScore: 83 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 88, contribution: 22, explanation: 'Zürich Oerlikon – in bevorzugter Stadt Zürich' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 36/m² deutlich unter Maximum' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Fläche', weight: 0.20, score: 72, contribution: 14.4, explanation: '720m² überschreitet Maximum von 700m² leicht' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Fläche', concern: 'Leicht über Flächenmaximum – ggf. Untereinheit verhandelbar', severity: 'LOW' },
|
||
],
|
||
explainabilitySummary: 'Sehr guter Match in Zürich Oerlikon. Lage und Budget stimmen, Fläche minimal über Maximum.',
|
||
confidenceLevel: 0.89,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: [],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T10:05:00Z',
|
||
updatedAt: '2025-05-11T10:05:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-027',
|
||
propertyId: 'prop-020',
|
||
needId: 'need-005',
|
||
matchScore: 74,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 88, softFactorScore: 72, confidenceModifier: 0.70, dataQualityModifier: 0.60, totalScore: 74 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 100, contribution: 25, explanation: 'Zug – exakte Präferenzstadt' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 90, contribution: 18, explanation: 'CHF 44/m² unter Maximum CHF 48/m²' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 60, contribution: 6, explanation: 'Externe Quelle, Vertragsdauer fehlt' },
|
||
{ criterion: 'Fläche', weight: 0.20, score: 68, contribution: 13.6, explanation: '820m² deutlich über Maximum 700m²' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Fläche', concern: 'Fläche 17% über Maximum – Untereinheit prüfen', severity: 'MEDIUM' },
|
||
],
|
||
explainabilitySummary: 'Guter Standort Zug, Budget akzeptabel. Fläche überschreitet Maximum aber Datenqualität eingeschränkt.',
|
||
confidenceLevel: 0.68,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Fläche zu gross', 'Externe Quelle'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T10:10:00Z',
|
||
updatedAt: '2025-05-11T10:10:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-028',
|
||
propertyId: 'prop-001',
|
||
needId: 'need-005',
|
||
matchScore: 78,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.APPROVED,
|
||
scoreBreakdown: { hardMatchScore: 81, softFactorScore: 75, confidenceModifier: 0.97, dataQualityModifier: 0.92, totalScore: 78 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 88, contribution: 22, explanation: 'Zürich-West – bevorzugte Stadt Zürich' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 90, contribution: 18, explanation: 'CHF 38/m² unter Maximum CHF 48/m²' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Fläche', weight: 0.20, score: 62, contribution: 12.4, explanation: '850m² überschreitet Maximum 700m² deutlich' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Fläche', concern: '850m² sind 21% über Maximum – Untereinheit oder Kompromiss nötig', severity: 'MEDIUM', mitigation: '650m²-Untereinheit im selben Gebäude verfügbar' },
|
||
],
|
||
explainabilitySummary: 'Zürich-West passt gut. Fläche zu gross, aber Untereinheit verfügbar. Budget und Ausbaugrad sehr gut.',
|
||
confidenceLevel: 0.88,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: ['Fläche über Maximum'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T10:15:00Z',
|
||
updatedAt: '2025-05-11T10:15:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-029',
|
||
propertyId: 'prop-026',
|
||
needId: 'need-005',
|
||
matchScore: 64,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 87, softFactorScore: 71, confidenceModifier: 0.52, dataQualityModifier: 0.34, totalScore: 64 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 100, contribution: 25, explanation: 'Zug – exakter Standortwunsch' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 90, contribution: 18, explanation: 'CHF 43/m² unter Maximum CHF 48/m²' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Konfidenz', weight: 0.15, score: 30, contribution: 4.5, explanation: '52% Signalwahrscheinlichkeit – Future-Signal' },
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 22, contribution: 2.2, explanation: 'Kritische Felder fehlen' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Verfügbarkeit', concern: 'Expansion-Signal – Fläche noch nicht auf dem Markt', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Perfekter Standort Zug, Budget stimmt. Als Future-Signal mit 52% Konfidenz – Watchlist-Kandidat.',
|
||
confidenceLevel: 0.44,
|
||
riskLevel: RiskLevel.HIGH,
|
||
uncertaintyIndicators: ['Future-Signal', 'Daten unvollständig'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T10:20:00Z',
|
||
updatedAt: '2025-05-11T10:20:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-030',
|
||
propertyId: 'prop-022',
|
||
needId: 'need-005',
|
||
matchScore: 73,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 82, softFactorScore: 71, confidenceModifier: 0.71, dataQualityModifier: 0.62, totalScore: 73 },
|
||
positiveFactors: [
|
||
{ criterion: 'Budget', weight: 0.20, score: 100, contribution: 20, explanation: 'CHF 28/m² deutlich unter Maximum' },
|
||
{ criterion: 'Fläche', weight: 0.20, score: 88, contribution: 17.6, explanation: '700m² exakt an der Obergrenze' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 35, contribution: 8.75, explanation: 'St. Gallen ist nicht Zug oder Zürich – andere Kantone' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'St. Gallen liegt 80km von Zug entfernt – nicht im Präferenzgebiet', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Budget hervorragend, aber Standort St. Gallen passt nicht zu Zug/Zürich. Nur als äusserste Alternative.',
|
||
confidenceLevel: 0.55,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Standort ausserhalb Präferenz'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T10:25:00Z',
|
||
updatedAt: '2025-05-11T10:25:00Z',
|
||
},
|
||
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
// need-006 · Lager & Spedition AG · LOGISTICS Winterthur · 1200–3000m² · max CHF 16/m²
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
|
||
{
|
||
id: 'match-031',
|
||
propertyId: 'prop-009',
|
||
needId: 'need-006',
|
||
matchScore: 93,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.APPROVED,
|
||
scoreBreakdown: { hardMatchScore: 96, softFactorScore: 90, confidenceModifier: 0.98, dataQualityModifier: 0.95, totalScore: 93 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 100, contribution: 25, explanation: 'Winterthur Töss – exakte Präferenzlage' },
|
||
{ criterion: 'Fläche', weight: 0.30, score: 92, contribution: 27.6, explanation: '1800m² im Zielkorridor (1200–3000m²)' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 13/m² unter Maximum CHF 16/m²' },
|
||
],
|
||
negativeFactors: [],
|
||
tradeoffs: [],
|
||
explainabilitySummary: 'Ausgezeichneter Match. Winterthur Töss trifft exakt den Standortwunsch. Alle Logistik-Kriterien erfüllt, hervorragende Datenqualität.',
|
||
confidenceLevel: 0.96,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: [],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T11:00:00Z',
|
||
updatedAt: '2025-05-11T11:00:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-032',
|
||
propertyId: 'prop-002',
|
||
needId: 'need-006',
|
||
matchScore: 56,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 76, softFactorScore: 62, confidenceModifier: 0.99, dataQualityModifier: 0.96, totalScore: 56 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.30, score: 90, contribution: 27, explanation: '2400m² im Zielkorridor' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 14/m² unter Maximum' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 35, contribution: 8.75, explanation: 'Basel liegt ausserhalb Winterthur-Region, andere Stadt' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Basel ist nicht im Präferenzgebiet Winterthur', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Sehr gute Logistikfläche in Basel, aber falscher Standort. Nur wenn Winterthur nicht verfügbar.',
|
||
confidenceLevel: 0.82,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: ['Standort ausserhalb Region'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T11:05:00Z',
|
||
updatedAt: '2025-05-11T11:05:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-033',
|
||
propertyId: 'prop-014',
|
||
needId: 'need-006',
|
||
matchScore: 52,
|
||
matchStrength: MatchStrength.WEAK,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 72, softFactorScore: 58, confidenceModifier: 0.98, dataQualityModifier: 0.94, totalScore: 52 },
|
||
positiveFactors: [
|
||
{ criterion: 'Budget', weight: 0.20, score: 92, contribution: 18.4, explanation: 'CHF 15/m² unter Maximum' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 35, contribution: 8.75, explanation: 'Pratteln BL ist nicht Winterthur – andere Stadt, anderer Kanton' },
|
||
{ criterion: 'Fläche', weight: 0.30, score: 68, contribution: 20.4, explanation: '3100m² überschreitet Maximum 3000m² leicht' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Pratteln liegt im Raum Basel, nicht im Raum Winterthur', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Falscher Standort für Winterthur-Bedarf. Nur als letzter Ausweg wenn Präferenz verhandelbar.',
|
||
confidenceLevel: 0.85,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: ['Standort nicht kompatibel'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T11:10:00Z',
|
||
updatedAt: '2025-05-11T11:10:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-034',
|
||
propertyId: 'prop-016',
|
||
needId: 'need-006',
|
||
matchScore: 88,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.SHORTLISTED,
|
||
scoreBreakdown: { hardMatchScore: 92, softFactorScore: 87, confidenceModifier: 0.79, dataQualityModifier: 0.73, totalScore: 88 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.30, score: 88, contribution: 26.4, explanation: '2200m² im Zielkorridor' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 85, contribution: 17, explanation: 'CHF 16/m² exakt im Maximum' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 35, contribution: 8.75, explanation: 'Muttenz liegt im Raum Basel, nicht Winterthur' },
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 58, contribution: 5.8, explanation: 'Hallenhöhe nicht verifiziert' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Muttenz BL ist nicht die Präferenz Winterthur', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Fläche und Budget stimmen, aber Muttenz ist 70km von Winterthur entfernt. Nicht kompatibel.',
|
||
confidenceLevel: 0.58,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Standort nicht kompatibel', 'Hallenhöhe unklar'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T11:15:00Z',
|
||
updatedAt: '2025-05-11T11:15:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-035',
|
||
propertyId: 'prop-029',
|
||
needId: 'need-006',
|
||
matchScore: 43,
|
||
matchStrength: MatchStrength.WEAK,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 66, softFactorScore: 53, confidenceModifier: 0.46, dataQualityModifier: 0.31, totalScore: 43 },
|
||
positiveFactors: [
|
||
{ criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 13/m² unter Maximum' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 35, contribution: 8.75, explanation: 'Frenkendorf BL nicht im Präferenzgebiet Winterthur' },
|
||
{ criterion: 'Konfidenz', weight: 0.15, score: 28, contribution: 4.2, explanation: 'Future-Signal 50% Wahrscheinlichkeit' },
|
||
{ criterion: 'Fläche', weight: 0.30, score: 65, contribution: 19.5, explanation: '3500m² über Maximum 3000m²' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Kombination', concern: 'Falscher Standort + Future-Signal + zu grosse Fläche', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Drei kritische Faktoren: falscher Standort, zu grosse Fläche und Future-Signal. Keine Empfehlung.',
|
||
confidenceLevel: 0.36,
|
||
riskLevel: RiskLevel.HIGH,
|
||
uncertaintyIndicators: ['Standort', 'Zu grosse Fläche', 'Future-Signal'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T11:20:00Z',
|
||
updatedAt: '2025-05-11T11:20:00Z',
|
||
},
|
||
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
// need-007 · Creative Studios AG · MIXED Zürich/Bern · 800–1500m² · max CHF 55/m²
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
|
||
{
|
||
id: 'match-036',
|
||
propertyId: 'prop-013',
|
||
needId: 'need-007',
|
||
matchScore: 89,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.APPROVED,
|
||
scoreBreakdown: { hardMatchScore: 92, softFactorScore: 86, confidenceModifier: 0.96, dataQualityModifier: 0.92, totalScore: 89 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.20, score: 95, contribution: 19, explanation: 'Zürich Altstetten – bevorzugte Lage Zürich' },
|
||
{ criterion: 'Nutzungsart', weight: 0.20, score: 100, contribution: 20, explanation: 'MIXED – exakt passend für Creative Studios' },
|
||
{ criterion: 'Fläche', weight: 0.20, score: 90, contribution: 18, explanation: '1300m² im Zielkorridor (800–1500m²)' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 95, contribution: 14.25, explanation: 'CHF 45/m² klar unter Maximum CHF 55/m²' },
|
||
],
|
||
negativeFactors: [],
|
||
tradeoffs: [],
|
||
explainabilitySummary: 'Hervorragender Match. Gemischte Fläche in Zürich Altstetten erfüllt alle Anforderungen für Kreativagentur.',
|
||
confidenceLevel: 0.90,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: [],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T12:00:00Z',
|
||
updatedAt: '2025-05-11T12:00:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-037',
|
||
propertyId: 'prop-004',
|
||
needId: 'need-007',
|
||
matchScore: 76,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.SHORTLISTED,
|
||
scoreBreakdown: { hardMatchScore: 90, softFactorScore: 74, confidenceModifier: 0.68, dataQualityModifier: 0.55, totalScore: 76 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.20, score: 92, contribution: 18.4, explanation: 'Zürich Kreis 4 – gute Kreativlage in Zürich' },
|
||
{ criterion: 'Nutzungsart', weight: 0.20, score: 100, contribution: 20, explanation: 'MIXED-Objekt passt exakt' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 88, contribution: 13.2, explanation: 'CHF 52/m² unter Maximum CHF 55/m²' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 55, contribution: 5.5, explanation: 'Externe Quelle – Daten unvollständig' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Datenqualität', concern: 'Vertragsdauer und Nebenkosten nicht bekannt', severity: 'MEDIUM' },
|
||
],
|
||
explainabilitySummary: 'Guter Match in Zürich. MIXED-Objekt passt, Budget stimmt. Datenverifikation nötig.',
|
||
confidenceLevel: 0.64,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Externe Quelle', 'Fehlende Felder'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T12:05:00Z',
|
||
updatedAt: '2025-05-11T12:05:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-038',
|
||
propertyId: 'prop-007',
|
||
needId: 'need-007',
|
||
matchScore: 62,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 76, softFactorScore: 65, confidenceModifier: 0.98, dataQualityModifier: 0.94, totalScore: 62 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.20, score: 90, contribution: 18, explanation: 'Zürich Oerlikon – bevorzugte Lage' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 100, contribution: 15, explanation: 'CHF 36/m² deutlich unter Maximum' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Nutzungsart', weight: 0.20, score: 60, contribution: 12, explanation: 'OFFICE-Fläche, Bedarf ist MIXED – Teileignung' },
|
||
{ criterion: 'Fläche', weight: 0.20, score: 60, contribution: 12, explanation: '720m² unter Minimum von 800m²' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Nutzungsart', concern: 'Bürofläche erlaubt ggf. keine gemischte Nutzung', severity: 'MEDIUM', mitigation: 'Nutzungsbewilligung prüfen' },
|
||
],
|
||
explainabilitySummary: 'Guter Standort und Budget, aber OFFICE-Fläche ist nicht ideal für MIXED-Bedarf und Fläche unter Minimum.',
|
||
confidenceLevel: 0.80,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: ['Nutzungsart nicht optimal', 'Fläche unter Minimum'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T12:10:00Z',
|
||
updatedAt: '2025-05-11T12:10:00Z',
|
||
},
|
||
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
// need-008 · Berner Produzenten GmbH · PRODUCTION Bern · 2000–4000m² · max CHF 14/m²
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
|
||
{
|
||
id: 'match-039',
|
||
propertyId: 'prop-011',
|
||
needId: 'need-008',
|
||
matchScore: 92,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.APPROVED,
|
||
scoreBreakdown: { hardMatchScore: 95, softFactorScore: 89, confidenceModifier: 0.98, dataQualityModifier: 0.95, totalScore: 92 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.20, score: 100, contribution: 20, explanation: 'Bern Brünnen – exakte Präferenzlage' },
|
||
{ criterion: 'Fläche', weight: 0.30, score: 95, contribution: 28.5, explanation: '2800m² optimal im Zielkorridor (2000–4000m²)' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 12/m² unter Maximum CHF 14/m²' },
|
||
],
|
||
negativeFactors: [],
|
||
tradeoffs: [],
|
||
explainabilitySummary: 'Ausgezeichneter Match. Produktionshalle Bern Brünnen erfüllt alle Anforderungen. Verfügbar sofort, vollständige Daten.',
|
||
confidenceLevel: 0.94,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: [],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T13:00:00Z',
|
||
updatedAt: '2025-05-11T13:00:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-040',
|
||
propertyId: 'prop-027',
|
||
needId: 'need-008',
|
||
matchScore: 65,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.SHORTLISTED,
|
||
scoreBreakdown: { hardMatchScore: 88, softFactorScore: 72, confidenceModifier: 0.48, dataQualityModifier: 0.32, totalScore: 65 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.20, score: 82, contribution: 16.4, explanation: 'Münchenbuchsee – Kanton Bern, nahe Präferenzlage' },
|
||
{ criterion: 'Fläche', weight: 0.30, score: 88, contribution: 26.4, explanation: '2200m² im Zielkorridor' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 12/m² unter Maximum' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Konfidenz', weight: 0.15, score: 28, contribution: 4.2, explanation: 'Future-Signal 52% Wahrscheinlichkeit' },
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 20, contribution: 2, explanation: 'Kritische Felder fehlen' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Verfügbarkeit', concern: 'Auszug noch unbestätigt – Verfügbarkeit August 2026 unsicher', severity: 'HIGH', mitigation: 'Monitoring empfohlen, in 3 Monaten neu evaluieren' },
|
||
],
|
||
explainabilitySummary: 'Guter Standort im Kanton Bern, Fläche und Budget passen. Aber als Future-Signal mit mittlerer Konfidenz auf Watchlist.',
|
||
confidenceLevel: 0.40,
|
||
riskLevel: RiskLevel.HIGH,
|
||
uncertaintyIndicators: ['Future-Signal', 'Auszug unbestätigt'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T13:05:00Z',
|
||
updatedAt: '2025-05-11T13:05:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-041',
|
||
propertyId: 'prop-006',
|
||
needId: 'need-008',
|
||
matchScore: 44,
|
||
matchStrength: MatchStrength.WEAK,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 67, softFactorScore: 51, confidenceModifier: 0.48, dataQualityModifier: 0.30, totalScore: 44 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.30, score: 85, contribution: 25.5, explanation: '3200m² im Zielkorridor' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.20, score: 60, contribution: 12, explanation: 'Reinach BL – anderer Kanton, nicht Bern' },
|
||
{ criterion: 'Konfidenz', weight: 0.15, score: 25, contribution: 3.75, explanation: 'Future-Signal 48% Wahrscheinlichkeit' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Reinach BL liegt im Kanton BL, nicht im Kanton BE', severity: 'MEDIUM' },
|
||
{ criterion: 'Verfügbarkeit', concern: 'Future-Signal – kein bestätigtes Objekt', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Fläche passt, aber Standort (Kanton BL statt BE) und Future-Signal sind Risikofaktoren. Schwacher Match.',
|
||
confidenceLevel: 0.36,
|
||
riskLevel: RiskLevel.HIGH,
|
||
uncertaintyIndicators: ['Anderer Kanton', 'Future-Signal'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T13:10:00Z',
|
||
updatedAt: '2025-05-11T13:10:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-042',
|
||
propertyId: 'prop-019',
|
||
needId: 'need-008',
|
||
matchScore: 85,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.SHORTLISTED,
|
||
scoreBreakdown: { hardMatchScore: 90, softFactorScore: 83, confidenceModifier: 0.77, dataQualityModifier: 0.71, totalScore: 85 },
|
||
positiveFactors: [
|
||
{ criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 13/m² unter Maximum CHF 14/m²' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.20, score: 35, contribution: 7, explanation: 'Basel ist nicht Bern – andere Stadt, anderer Kanton' },
|
||
{ criterion: 'Fläche', weight: 0.30, score: 62, contribution: 18.6, explanation: '1900m² leicht unter Minimum 2000m²' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Basel BS liegt 100km von Bern entfernt', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Falscher Standort und Fläche leicht unter Minimum. Budget stimmt, reicht aber nicht aus. Schwacher Match.',
|
||
confidenceLevel: 0.54,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Falscher Standort', 'Fläche unter Minimum'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T13:15:00Z',
|
||
updatedAt: '2025-05-11T13:15:00Z',
|
||
},
|
||
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
// need-009 · Geneva Commerce SA · RETAIL Genf · 150–400m² · max CHF 120/m²
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
|
||
{
|
||
id: 'match-043',
|
||
propertyId: 'prop-021',
|
||
needId: 'need-009',
|
||
matchScore: 83,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.SHORTLISTED,
|
||
scoreBreakdown: { hardMatchScore: 97, softFactorScore: 81, confidenceModifier: 0.70, dataQualityModifier: 0.59, totalScore: 83 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.35, score: 100, contribution: 35, explanation: 'Genf Rue du Rhône – exakter Standortwunsch' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 92, contribution: 13.8, explanation: 'CHF 112/m² unter Maximum CHF 120/m²' },
|
||
{ criterion: 'Prestige', weight: 0.15, score: 94, contribution: 14.1, explanation: 'Prestige 94 – erfüllt hohe Anforderung 88' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 59, contribution: 5.9, explanation: 'Externe Quelle – Konditionen nicht bestätigt' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Datenqualität', concern: 'Mietpreis und Vertragsdauer aus externer Quelle', severity: 'MEDIUM', mitigation: 'Direktkontakt mit Anbieter empfohlen' },
|
||
],
|
||
explainabilitySummary: 'Bester verfügbarer Match für Genf. Standort, Prestige und Budget stimmen. Datenverifikation ausstehend.',
|
||
confidenceLevel: 0.66,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Konditionen nicht bestätigt'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T14:00:00Z',
|
||
updatedAt: '2025-05-11T14:00:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-044',
|
||
propertyId: 'prop-010',
|
||
needId: 'need-009',
|
||
matchScore: 45,
|
||
matchStrength: MatchStrength.WEAK,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 59, softFactorScore: 46, confidenceModifier: 0.99, dataQualityModifier: 0.96, totalScore: 45 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.15, score: 90, contribution: 13.5, explanation: '285m² im Zielkorridor' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 100, contribution: 15, explanation: 'CHF 88/m² deutlich unter Maximum' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.35, score: 35, contribution: 12.25, explanation: 'Zürich ist nicht Genf – andere Stadt, 280km' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Zürich und Genf haben komplett verschiedene Kundenpotenziale', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Sehr gute Qualität in Zürich, aber falscher Standort für einen Genfer Retailer. Nicht geeignet.',
|
||
confidenceLevel: 0.86,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: ['Falscher Standort'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T14:05:00Z',
|
||
updatedAt: '2025-05-11T14:05:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-045',
|
||
propertyId: 'prop-017',
|
||
needId: 'need-009',
|
||
matchScore: 76,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 85, softFactorScore: 74, confidenceModifier: 0.73, dataQualityModifier: 0.64, totalScore: 76 },
|
||
positiveFactors: [
|
||
{ criterion: 'Budget', weight: 0.15, score: 100, contribution: 15, explanation: 'CHF 95/m² unter Maximum CHF 120/m²' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.35, score: 35, contribution: 12.25, explanation: 'Zürich statt Genf – komplett andere Stadt' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Zürich ist geografisch und kulturell nicht der gesuchte Genfer Markt', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Budget und Qualität ok, aber Zürich ist kein Ersatz für Genf. Standort nicht erfüllt.',
|
||
confidenceLevel: 0.62,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Falscher Standort'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T14:10:00Z',
|
||
updatedAt: '2025-05-11T14:10:00Z',
|
||
},
|
||
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
// need-010 · St.Galler Büros AG · OFFICE St.Gallen · 400–800m² · max CHF 35/m²
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
|
||
{
|
||
id: 'match-046',
|
||
propertyId: 'prop-022',
|
||
needId: 'need-010',
|
||
matchScore: 92,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.APPROVED,
|
||
scoreBreakdown: { hardMatchScore: 95, softFactorScore: 91, confidenceModifier: 0.82, dataQualityModifier: 0.74, totalScore: 92 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.28, score: 100, contribution: 28, explanation: 'St. Gallen Centrum – exakter Standortwunsch' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 28/m² deutlich unter Maximum CHF 35/m²' },
|
||
{ criterion: 'Fläche', weight: 0.22, score: 90, contribution: 19.8, explanation: '700m² im Zielkorridor (400–800m²)' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 58, contribution: 5.8, explanation: 'Externe Quelle – Ausbauqualität nicht bestätigt' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Datenqualität', concern: 'Ausbauqualität aus externer Quelle nicht verifiziert', severity: 'MEDIUM', mitigation: 'Vor-Ort-Besichtigung empfohlen' },
|
||
],
|
||
explainabilitySummary: 'Guter Match in St. Gallen Centrum. Alle Hauptkriterien erfüllt. Datenverifikation ausstehend.',
|
||
confidenceLevel: 0.72,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Externe Quelle', 'Ausbauqualität unklar'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T15:00:00Z',
|
||
updatedAt: '2025-05-11T15:00:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-047',
|
||
propertyId: 'prop-030',
|
||
needId: 'need-010',
|
||
matchScore: 58,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 81, softFactorScore: 65, confidenceModifier: 0.55, dataQualityModifier: 0.36, totalScore: 58 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.28, score: 100, contribution: 28, explanation: 'St. Gallen Riethüsli – Präferenzstadt' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 27/m² deutlich unter Maximum' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Konfidenz', weight: 0.15, score: 30, contribution: 4.5, explanation: 'Future-Signal 55% Wahrscheinlichkeit' },
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 22, contribution: 2.2, explanation: 'Kritische Felder fehlen' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Verfügbarkeit', concern: 'Future-Signal – kein bestätigter Auszug', severity: 'HIGH', mitigation: 'Auf Watchlist setzen' },
|
||
],
|
||
explainabilitySummary: 'Bester Standort St. Gallen, Budget sehr gut. Als Future-Signal mit mittlerer Konfidenz Watchlist-Kandidat.',
|
||
confidenceLevel: 0.44,
|
||
riskLevel: RiskLevel.HIGH,
|
||
uncertaintyIndicators: ['Future-Signal', 'Daten unvollständig'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T15:05:00Z',
|
||
updatedAt: '2025-05-11T15:05:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-048',
|
||
propertyId: 'prop-007',
|
||
needId: 'need-010',
|
||
matchScore: 53,
|
||
matchStrength: MatchStrength.WEAK,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 68, softFactorScore: 56, confidenceModifier: 0.98, dataQualityModifier: 0.94, totalScore: 53 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.22, score: 90, contribution: 19.8, explanation: '720m² im Zielkorridor' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.28, score: 35, contribution: 9.8, explanation: 'Zürich Oerlikon ist nicht St. Gallen – andere Stadt, anderer Kanton' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 72, contribution: 14.4, explanation: 'CHF 36/m² liegt 3% über Maximum CHF 35/m²' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Zürich ist nicht im Präferenzgebiet Ostschweiz', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Falscher Standort und Budget leicht über Maximum. Zürich ist keine Alternative für St. Gallen.',
|
||
confidenceLevel: 0.86,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: ['Standort ausserhalb Ostschweiz', 'Budget knapp über Maximum'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T15:10:00Z',
|
||
updatedAt: '2025-05-11T15:10:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-049',
|
||
propertyId: 'prop-015',
|
||
needId: 'need-010',
|
||
matchScore: 46,
|
||
matchStrength: MatchStrength.WEAK,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 60, softFactorScore: 48, confidenceModifier: 0.70, dataQualityModifier: 0.60, totalScore: 46 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.22, score: 88, contribution: 19.36, explanation: '650m² im Zielkorridor' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.28, score: 35, contribution: 9.8, explanation: 'Luzern statt St. Gallen – andere Stadt, anderer Kanton' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 74, contribution: 14.8, explanation: 'CHF 38/m² liegt 8% über Maximum CHF 35/m²' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Luzern ist nicht Ostschweiz / St. Gallen Region', severity: 'HIGH' },
|
||
{ criterion: 'Budget', concern: 'CHF 3/m² über Maximum', severity: 'MEDIUM' },
|
||
],
|
||
explainabilitySummary: 'Fläche ok, aber Luzern entspricht nicht der St. Gallen-Region und Budget leicht überschritten.',
|
||
confidenceLevel: 0.58,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Standort nicht kompatibel', 'Budget leicht über Maximum'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T15:15:00Z',
|
||
updatedAt: '2025-05-11T15:15:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-050',
|
||
propertyId: 'prop-018',
|
||
needId: 'need-010',
|
||
matchScore: 38,
|
||
matchStrength: MatchStrength.WEAK,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 52, softFactorScore: 40, confidenceModifier: 0.68, dataQualityModifier: 0.57, totalScore: 38 },
|
||
positiveFactors: [
|
||
{ criterion: 'Budget', weight: 0.20, score: 100, contribution: 20, explanation: 'CHF 31/m² deutlich unter Maximum CHF 35/m²' },
|
||
{ criterion: 'Fläche', weight: 0.22, score: 85, contribution: 18.7, explanation: '780m² nahe Zielobergrenze' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.28, score: 35, contribution: 9.8, explanation: 'Bern ist nicht St. Gallen – weit ausserhalb Präferenzgebiet' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Bern liegt 180km von St. Gallen entfernt', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Budget sehr gut, aber Bern entspricht nicht dem Bedarf Ostschweiz. Kein sinnvoller Match.',
|
||
confidenceLevel: 0.54,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Falscher Standort'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T15:20:00Z',
|
||
updatedAt: '2025-05-11T15:20:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-051',
|
||
propertyId: 'prop-008',
|
||
needId: 'need-010',
|
||
matchScore: 42,
|
||
matchStrength: MatchStrength.WEAK,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 56, softFactorScore: 44, confidenceModifier: 0.97, dataQualityModifier: 0.93, totalScore: 42 },
|
||
positiveFactors: [
|
||
{ criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 32/m² unter Maximum CHF 35/m²' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.28, score: 35, contribution: 9.8, explanation: 'Basel ist nicht St. Gallen – anderer Kanton' },
|
||
{ criterion: 'Fläche', weight: 0.22, score: 65, contribution: 14.3, explanation: '900m² überschreitet Maximum 800m² deutlich' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Basel liegt in Nordwestschweiz, nicht in Ostschweiz', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Gutes Portfolio-Objekt in Basel, aber falscher Standort und Fläche zu gross. Nicht geeignet.',
|
||
confidenceLevel: 0.84,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: ['Falscher Standort', 'Fläche zu gross'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-11T15:25:00Z',
|
||
updatedAt: '2025-05-11T15:25:00Z',
|
||
},
|
||
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
// Cross-need additional matches
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
|
||
{
|
||
id: 'match-052',
|
||
propertyId: 'prop-020',
|
||
needId: 'need-003',
|
||
matchScore: 41,
|
||
matchStrength: MatchStrength.WEAK,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 55, softFactorScore: 43, confidenceModifier: 0.70, dataQualityModifier: 0.60, totalScore: 41 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.20, score: 85, contribution: 17, explanation: '820m² nahe am Zielkorridor (500–800m²)' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 35, contribution: 8.75, explanation: 'Zug ist nicht Basel – anderer Kanton' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 72, contribution: 14.4, explanation: 'CHF 44/m² liegt 10% über Maximum CHF 40/m²' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Kombination', concern: 'Falscher Standort und Budget überschritten', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Falscher Standort (Zug statt Basel) und Budget überschritten. Kein Match empfehlenswert.',
|
||
confidenceLevel: 0.58,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Standort nicht kompatibel', 'Budget über Maximum'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-12T08:00:00Z',
|
||
updatedAt: '2025-05-12T08:00:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-053',
|
||
propertyId: 'prop-023',
|
||
needId: 'need-005',
|
||
matchScore: 65,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 88, softFactorScore: 72, confidenceModifier: 0.54, dataQualityModifier: 0.36, totalScore: 65 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 88, contribution: 22, explanation: 'Zürich-Nord – bevorzugte Stadt Zürich' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 95, contribution: 19, explanation: 'CHF 38/m² unter Maximum CHF 48/m²' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Konfidenz', weight: 0.15, score: 30, contribution: 4.5, explanation: 'Future-Signal 54% Wahrscheinlichkeit' },
|
||
{ criterion: 'Fläche', weight: 0.20, score: 70, contribution: 14, explanation: '850m² leicht über Maximum 700m²' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Verfügbarkeit', concern: 'Future-Signal – kein bestätigtes Objekt', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Gute Zürich-Lage und Budget passend. Als Future-Signal mit mittlerer Konfidenz und leicht zu grosser Fläche beobachten.',
|
||
confidenceLevel: 0.46,
|
||
riskLevel: RiskLevel.HIGH,
|
||
uncertaintyIndicators: ['Future-Signal', 'Fläche leicht über Maximum'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-12T08:05:00Z',
|
||
updatedAt: '2025-05-12T08:05:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-054',
|
||
propertyId: 'prop-028',
|
||
needId: 'need-010',
|
||
matchScore: 37,
|
||
matchStrength: MatchStrength.WEAK,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 60, softFactorScore: 50, confidenceModifier: 0.53, dataQualityModifier: 0.35, totalScore: 37 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.22, score: 88, contribution: 19.36, explanation: '520m² im Zielkorridor' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.28, score: 35, contribution: 9.8, explanation: 'Genf ist nicht St. Gallen – 600km Entfernung' },
|
||
{ criterion: 'Budget', weight: 0.20, score: 72, contribution: 14.4, explanation: 'CHF 36/m² über Maximum CHF 35/m² knapp' },
|
||
{ criterion: 'Konfidenz', weight: 0.15, score: 28, contribution: 4.2, explanation: 'Future-Signal' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Genf ist nicht kompatibel mit St. Gallen Bedarf', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Falscher Standort, Budget knapp über Maximum und Future-Signal. Keine Empfehlung.',
|
||
confidenceLevel: 0.38,
|
||
riskLevel: RiskLevel.HIGH,
|
||
uncertaintyIndicators: ['Falscher Standort', 'Future-Signal'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-12T08:10:00Z',
|
||
updatedAt: '2025-05-12T08:10:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-055',
|
||
propertyId: 'prop-026',
|
||
needId: 'need-001',
|
||
matchScore: 56,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 79, softFactorScore: 63, confidenceModifier: 0.52, dataQualityModifier: 0.34, totalScore: 56 },
|
||
positiveFactors: [
|
||
{ criterion: 'Budget', weight: 0.15, score: 92, contribution: 13.8, explanation: 'CHF 43/m² unter Maximum CHF 45/m²' },
|
||
{ criterion: 'Fläche', weight: 0.20, score: 85, contribution: 17, explanation: '580m² im Zielkorridor (600–1000m²), knapp unter Minimum' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.20, score: 60, contribution: 12, explanation: 'Zug liegt nicht in Zürich, aber gleiche Wirtschaftsregion' },
|
||
{ criterion: 'Konfidenz', weight: 0.15, score: 30, contribution: 4.5, explanation: 'Future-Signal 52% Wahrscheinlichkeit' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Zug ist nicht Zürich – Pendeldistanz 30 Min.', severity: 'MEDIUM' },
|
||
{ criterion: 'Verfügbarkeit', concern: 'Future-Signal – erst ab April 2026 möglicherweise verfügbar', severity: 'HIGH' },
|
||
],
|
||
explainabilitySummary: 'Budget und Fläche passen. Zug ist eine Alternativlage zur bevorzugten Lage Zürich. Future-Signal mit mittlerer Konfidenz.',
|
||
confidenceLevel: 0.42,
|
||
riskLevel: RiskLevel.HIGH,
|
||
uncertaintyIndicators: ['Standort ausserhalb Präferenz', 'Future-Signal'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-12T08:15:00Z',
|
||
updatedAt: '2025-05-12T08:15:00Z',
|
||
},
|
||
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
// need-001 · Innovatech AG · OFFICE Zürich-West — new external/maison matches
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
|
||
{
|
||
id: 'match-050',
|
||
propertyId: 'prop-031',
|
||
needId: 'need-001',
|
||
matchScore: 91,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 95, softFactorScore: 88, confidenceModifier: 0.72, dataQualityModifier: 0.64, totalScore: 91 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 100, contribution: 25, explanation: 'Zürich-West trifft bevorzugte Lage exakt' },
|
||
{ criterion: 'Fläche', weight: 0.20, score: 100, contribution: 20, explanation: '780m² im Zielkorridor (600–1000m²)' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 100, contribution: 15, explanation: 'CHF 35/m² liegt klar unter Maximum (CHF 45/m²)' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 55, contribution: 5.5, explanation: 'Externe Quelle – Konditionen nicht endgültig bestätigt' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Datenqualität', concern: 'Direktinserat aus Drittquelle – Verfügbarkeit noch verifizieren', severity: 'LOW', mitigation: 'Direkte Anfrage beim Anbieter empfohlen' },
|
||
],
|
||
explainabilitySummary: 'Optimaler Match: Zürich-West, 780m², CHF 35/m² – alle drei Hauptkriterien vollständig erfüllt. Einziger Vorbehalt ist die externe Datenquelle.',
|
||
confidenceLevel: 0.72,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Daten aus Drittquelle'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-15T08:00:00Z',
|
||
updatedAt: '2025-05-15T08:00:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-051',
|
||
propertyId: 'prop-032',
|
||
needId: 'need-001',
|
||
matchScore: 84,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 88, softFactorScore: 82, confidenceModifier: 0.71, dataQualityModifier: 0.62, totalScore: 84 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.20, score: 100, contribution: 20, explanation: '720m² im Zielkorridor (600–1000m²)' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 92, contribution: 13.8, explanation: 'CHF 40/m² unter Maximum (CHF 45/m²)' },
|
||
{ criterion: 'Standort', weight: 0.25, score: 88, contribution: 22, explanation: 'Kreis 5 direkt angrenzend an Zürich-West' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 52, contribution: 5.2, explanation: 'Externe Quelle – Ausbaustandard nicht bestätigt' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Kreis 5 ist nicht Zürich-West, aber angrenzend und ähnliches Profil', severity: 'LOW' },
|
||
{ criterion: 'Datenqualität', concern: 'Ausbaustandard aus externer Quelle – Besichtigung empfohlen', severity: 'MEDIUM' },
|
||
],
|
||
explainabilitySummary: 'Starker Match: Fläche und Budget erfüllt, Kreis 5 angrenzend an bevorzugte Lage. Maison Work-Plattform mit bewährten Objektqualitäten.',
|
||
confidenceLevel: 0.71,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Daten aus externer Quelle'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-15T08:05:00Z',
|
||
updatedAt: '2025-05-15T08:05:00Z',
|
||
},
|
||
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
// need-002 · Schweizer Logistik GmbH · LOGISTICS Basel — new silver external
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
|
||
{
|
||
id: 'match-056',
|
||
propertyId: 'prop-036',
|
||
needId: 'need-002',
|
||
matchScore: 86,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 92, softFactorScore: 84, confidenceModifier: 0.70, dataQualityModifier: 0.60, totalScore: 86 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 98, contribution: 24.5, explanation: 'Basel Kleinhüningen – exakt im Zielgebiet' },
|
||
{ criterion: 'Fläche', weight: 0.20, score: 100, contribution: 20, explanation: '2600m² im Zielkorridor (1500–4000m²)' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 95, contribution: 14.25, explanation: 'CHF 15/m² unter Maximum (CHF 18/m²)' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 50, contribution: 5, explanation: 'Hallenhöhe und Konditionen nicht final bestätigt' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Datenqualität', concern: 'Hallenhöhe aus Drittquelle – kritisch für Logistiknutzung', severity: 'MEDIUM', mitigation: 'Hallenhöhe vor Vertragsabschluss verifizieren' },
|
||
],
|
||
explainabilitySummary: 'Starker Match: Basel Kleinhüningen exakt, 2600m², CHF 15/m². Hallenhöhe sollte vor Vertragsabschluss bestätigt werden.',
|
||
confidenceLevel: 0.70,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Hallenhöhe nicht bestätigt', 'Daten aus Drittquelle'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-15T08:10:00Z',
|
||
updatedAt: '2025-05-15T08:10:00Z',
|
||
},
|
||
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
// need-011 · Stadtladen Bern GmbH · RETAIL Bern Innenstadt — all new matches
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
|
||
{
|
||
id: 'match-052',
|
||
propertyId: 'prop-003',
|
||
needId: 'need-011',
|
||
matchScore: 91,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 96, softFactorScore: 90, confidenceModifier: 0.71, dataQualityModifier: 0.62, totalScore: 91 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.35, score: 100, contribution: 35, explanation: 'Bern Innenstadt – exakt bevorzugte Lage' },
|
||
{ criterion: 'Fläche', weight: 0.15, score: 100, contribution: 15, explanation: '320m² im Zielkorridor (200–400m²)' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 100, contribution: 15, explanation: 'CHF 95/m² deutlich unter Maximum (CHF 150/m²)' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 55, contribution: 5.5, explanation: 'Externe Quelle – Schaufensterfront nicht explizit bestätigt' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Datenqualität', concern: 'Must-have "Schaufensterfront" aus externer Quelle – Besichtigung nötig', severity: 'LOW', mitigation: 'Vor-Ort-Besichtigung zur Bestätigung empfohlen' },
|
||
],
|
||
explainabilitySummary: 'Optimaler Match: Bern Innenstadt exakt, 320m², CHF 95/m² – 37% unter Budget. Alle Hauptkriterien erfüllt.',
|
||
confidenceLevel: 0.71,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Schaufensterfront nicht bestätigt'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-18T08:00:00Z',
|
||
updatedAt: '2025-05-18T08:00:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-053',
|
||
propertyId: 'prop-033',
|
||
needId: 'need-011',
|
||
matchScore: 83,
|
||
matchStrength: MatchStrength.STRONG,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 88, softFactorScore: 82, confidenceModifier: 0.70, dataQualityModifier: 0.60, totalScore: 83 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.35, score: 100, contribution: 35, explanation: 'Marktgasse – exakt in bevorzugter Innenstadtlage' },
|
||
{ criterion: 'Fläche', weight: 0.15, score: 100, contribution: 15, explanation: '260m² im Zielkorridor (200–400m²)' },
|
||
{ criterion: 'Prestige', weight: 0.15, score: 88, contribution: 13.2, explanation: 'Hochfrequentierte Fussgängerzone – Laufkundschaft garantiert' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Budget', weight: 0.15, score: 80, contribution: 12, explanation: 'CHF 120/m² nahe am Maximum (CHF 150/m²)' },
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 52, contribution: 5.2, explanation: 'Mietpreis nicht final bestätigt' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Budget', concern: 'CHF 120/m² lässt wenig Spielraum zum Maximum', severity: 'LOW' },
|
||
{ criterion: 'Datenqualität', concern: 'Mietpreis aus externer Quelle – Verhandlung möglich', severity: 'MEDIUM', mitigation: 'Direktanfrage empfohlen' },
|
||
],
|
||
explainabilitySummary: 'Starker Match: Marktgasse/Innenstadt, 260m², CHF 120/m² im Budget. Maison Work-Plattform mit verifizierten Retailflächen.',
|
||
confidenceLevel: 0.70,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Mietpreis nicht final bestätigt'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-18T08:05:00Z',
|
||
updatedAt: '2025-05-18T08:05:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-054',
|
||
propertyId: 'prop-034',
|
||
needId: 'need-011',
|
||
matchScore: 74,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 82, softFactorScore: 74, confidenceModifier: 0.68, dataQualityModifier: 0.56, totalScore: 74 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.15, score: 100, contribution: 15, explanation: '340m² im Zielkorridor (200–400m²)' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 94, contribution: 14.1, explanation: 'CHF 110/m² unter Maximum (CHF 150/m²)' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.35, score: 75, contribution: 26.25, explanation: 'Lorraine ist Bern, aber nicht Innenstadt – weniger Laufkundschaft' },
|
||
{ criterion: 'Timing', weight: 0.10, score: 80, contribution: 8, explanation: 'Verfügbar ab 01.01.2026 – leicht nach Wunschzeitraum' },
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 48, contribution: 4.8, explanation: 'Schaufensterfront nicht bestätigt – kritisches Must-have' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Lorraine ist kein Fussgängerzonenviertel – geringere Laufkundschaft als Innenstadt', severity: 'MEDIUM' },
|
||
{ criterion: 'Timing', concern: 'Ab Januar 2026 – 4 Monate nach gewünschtem Einzug', severity: 'LOW' },
|
||
],
|
||
explainabilitySummary: 'Moderater Match: Bern Lorraine, 340m², Budget ok. Abzug wegen Abweichung von Innenstadt-Lage und fehlender Schaufensterfront-Bestätigung.',
|
||
confidenceLevel: 0.68,
|
||
riskLevel: RiskLevel.MEDIUM,
|
||
uncertaintyIndicators: ['Schaufensterfront nicht bestätigt', 'Daten aus Drittquelle'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-18T08:10:00Z',
|
||
updatedAt: '2025-05-18T08:10:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-055',
|
||
propertyId: 'prop-035',
|
||
needId: 'need-011',
|
||
matchScore: 66,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 88, softFactorScore: 72, confidenceModifier: 0.55, dataQualityModifier: 0.36, totalScore: 66 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.35, score: 100, contribution: 35, explanation: 'Bern Altstadt Gerechtigkeitsgasse – Premiumlage' },
|
||
{ criterion: 'Fläche', weight: 0.15, score: 100, contribution: 15, explanation: '290m² im Zielkorridor (200–400m²)' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Konfidenz', weight: 0.15, score: 38, contribution: 5.7, explanation: 'Future-Signal mit 62% Wahrscheinlichkeit – kein bestätigtes Objekt' },
|
||
{ criterion: 'Datenqualität', weight: 0.10, score: 25, contribution: 2.5, explanation: 'Mietpreis nur geschätzt, kein offizielles Inserat' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Verfügbarkeit', concern: 'Probabilistisches Signal – kein bestätigtes Inserat', severity: 'HIGH', mitigation: 'Früher Erstkontakt mit Eigentümer kann Vorteil sichern' },
|
||
{ criterion: 'Timing', concern: 'Frühestens April 2026 verfügbar', severity: 'MEDIUM' },
|
||
],
|
||
explainabilitySummary: 'Premiumlage Gerechtigkeitsgasse, aber nur probabilistisches Signal. Nur weiterverfolgen, wenn Frühkontakt mit Eigentümer möglich.',
|
||
confidenceLevel: 0.55,
|
||
riskLevel: RiskLevel.HIGH,
|
||
uncertaintyIndicators: ['Probabilistisches Signal', 'Mietpreis geschätzt', 'Kein bestätigtes Inserat'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2025-05-18T08:15:00Z',
|
||
updatedAt: '2025-05-18T08:15:00Z',
|
||
},
|
||
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
// Schattenmarkt-Freigabe — verified contract signals from Verwaltung
|
||
// ───────────────────────────────────────────────────────────────────────────
|
||
|
||
{
|
||
id: 'match-060',
|
||
propertyId: 'prop-001',
|
||
needId: 'need-001',
|
||
matchScore: 78,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
resultType: 'FUTURE_AVAILABILITY',
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 90, softFactorScore: 82, confidenceModifier: 0.92, dataQualityModifier: 0.92, totalScore: 78 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 100, contribution: 25, explanation: 'Zürich-West trifft bevorzugte Lage exakt' },
|
||
{ criterion: 'Fläche', weight: 0.20, score: 100, contribution: 20, explanation: '850m² im Zielkorridor (600–1000m²)' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 92, contribution: 13.8, explanation: 'CHF 38/m² liegt unter Maximum (CHF 45/m²)' },
|
||
{ criterion: 'Konfidenz', weight: 0.10, score: 100, contribution: 10, explanation: 'Vertragsende aus ERP bestätigt — keine Schätzung' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Verfügbarkeit', weight: 0.10, score: 55, contribution: 5.5, explanation: 'Objekt erst ab Oktober 2026 verfügbar — 5 Monate Vorlaufzeit' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Timing', concern: 'Einzug frühestens Oktober 2026 möglich', severity: 'LOW', mitigation: 'Frühzeitige Reservierungsanfrage sichert Priorität' },
|
||
],
|
||
explainabilitySummary: 'Idealer Match: Zürich-West exakt, 850m², im Budget. Vertragsende verifiziert — Verwaltung hat Objekt für Schattenmarkt freigegeben.',
|
||
confidenceLevel: 0.92,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: ['Verfügbar ab Oktober 2026'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2026-05-20T08:00:00Z',
|
||
updatedAt: '2026-05-20T08:00:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-061',
|
||
propertyId: 'prop-007',
|
||
needId: 'need-001',
|
||
matchScore: 71,
|
||
matchStrength: MatchStrength.MODERATE,
|
||
resultType: 'FUTURE_AVAILABILITY',
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 82, softFactorScore: 74, confidenceModifier: 0.92, dataQualityModifier: 0.94, totalScore: 71 },
|
||
positiveFactors: [
|
||
{ criterion: 'Fläche', weight: 0.20, score: 100, contribution: 20, explanation: '720m² im Zielkorridor (600–1000m²)' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 95, contribution: 14.25, explanation: 'CHF 36/m² unter Maximum (CHF 45/m²)' },
|
||
{ criterion: 'Konfidenz', weight: 0.10, score: 100, contribution: 10, explanation: 'Vertragsende und Breakout-Option aus ERP bestätigt' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 80, contribution: 20, explanation: 'Zürich Oerlikon — nicht Zürich-West, aber gute ÖV-Anbindung' },
|
||
{ criterion: 'Verfügbarkeit', weight: 0.10, score: 55, contribution: 5.5, explanation: 'Breakout-Option September 2026, Vertragsende November 2026' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Standort', concern: 'Oerlikon ist Zürich, aber nicht Zürich-West — andere Quartierscharakter', severity: 'MEDIUM' },
|
||
{ criterion: 'Timing', concern: 'Früheste Verfügbarkeit über Breakout-Option September 2026', severity: 'LOW', mitigation: 'Breakout-Option aktiv — frühzeitige Anfrage möglich' },
|
||
],
|
||
explainabilitySummary: 'Guter Match: Zürich Oerlikon, 720m², im Budget. Vertragsende verifiziert, Breakout-Option ab September 2026. Lage nicht Zürich-West.',
|
||
confidenceLevel: 0.92,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: ['Lage Oerlikon statt Zürich-West', 'Verfügbar ab September 2026'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2026-05-20T08:05:00Z',
|
||
updatedAt: '2026-05-20T08:05:00Z',
|
||
},
|
||
|
||
{
|
||
id: 'match-062',
|
||
propertyId: 'prop-002',
|
||
needId: 'need-002',
|
||
matchScore: 84,
|
||
matchStrength: MatchStrength.STRONG,
|
||
resultType: 'FUTURE_AVAILABILITY',
|
||
status: MatchStatus.PENDING_REVIEW,
|
||
scoreBreakdown: { hardMatchScore: 94, softFactorScore: 86, confidenceModifier: 0.92, dataQualityModifier: 0.96, totalScore: 84 },
|
||
positiveFactors: [
|
||
{ criterion: 'Standort', weight: 0.25, score: 98, contribution: 24.5, explanation: 'Basel Kleinhüningen — exakt im Zielgebiet' },
|
||
{ criterion: 'Fläche', weight: 0.20, score: 100, contribution: 20, explanation: '2400m² im Zielkorridor (1500–4000m²)' },
|
||
{ criterion: 'Budget', weight: 0.15, score: 100, contribution: 15, explanation: 'CHF 14/m² weit unter Maximum (CHF 18/m²)' },
|
||
{ criterion: 'Konfidenz', weight: 0.10, score: 100, contribution: 10, explanation: 'Vertragsende aus ERP bestätigt — keine Schätzung' },
|
||
],
|
||
negativeFactors: [
|
||
{ criterion: 'Verfügbarkeit', weight: 0.10, score: 60, contribution: 6, explanation: 'Objekt erst ab September 2026 verfügbar' },
|
||
],
|
||
tradeoffs: [
|
||
{ criterion: 'Timing', concern: 'Verfügbar ab September 2026 — 4 Monate Vorlaufzeit', severity: 'LOW', mitigation: 'Frühe Reservierungsanfrage sichert Priorität vor Vertragsende' },
|
||
],
|
||
explainabilitySummary: 'Starker Match: Basel Kleinhüningen exakt, 2400m², CHF 14/m². Vertragsende September 2026 aus ERP bestätigt — höchste Verlässlichkeit.',
|
||
confidenceLevel: 0.92,
|
||
riskLevel: RiskLevel.LOW,
|
||
uncertaintyIndicators: ['Verfügbar ab September 2026'],
|
||
organizationId: 'org-wincasa',
|
||
createdAt: '2026-05-20T08:10:00Z',
|
||
updatedAt: '2026-05-20T08:10:00Z',
|
||
},
|
||
]
|