feat: Reale Jahresbelastung, must-have fixes, fitOut data coverage
Reale Jahresbelastung (Change 6): - FitOutCostPanel zeigt Jahresmiete + amortisierte Ausbaukosten für alle fitOut-Werte - FULL/PREMIUM: Ausbau CHF 0 (bezugsfertig), SHELL/BASIC: CRB/BKP-Richtwerte amortisiert über 5 J. - Match-Card-Chip zeigt geschätzte Investition (orange wenn >100k) - FitOutInvestment-Typ + calcFitOutInvestment() in fitOutUtils.ts - BackendAIService + MockAIService mit generateFitOutAdvice (IAIService-Interface) Must-have Kriterien (Nicht prüfbar Fix): - ÖV-Anbindung: Minutengrenze aus Freitext extrahiert, gegen publicTransportMinutes geprüft - Mindestfläche: m²-Wert aus Freitext extrahiert, gegen areaSqm geprüft - Ausbaugrad: neues Keyword-Rule für FULL/PREMIUM fitOut-Datenpflege: - fitOut-Werte zu 32 fehlenden Properties ergänzt (Logistik=SHELL, Standard=BASIC, Modern=FULL) - MAB-Werte (200/150/250 CHF/m²) zu 3 BASIC-Objekten hinzugefügt Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -16,6 +16,10 @@ export function generateSummary(c: ParsedNeedCriteria): string {
|
||||
if (c.budgetRange?.maxPerSqm) parts.push(`Budget max. CHF ${c.budgetRange.maxPerSqm}/m²`)
|
||||
if (c.timing?.earliestMoveIn) parts.push(`ab ${c.timing.earliestMoveIn}`)
|
||||
if (c.mustHaveCriteria?.length) parts.push(`Must-haves: ${c.mustHaveCriteria.join(', ')}`)
|
||||
if (c.searchRadius) parts.push(`Radius ${c.searchRadius} km`)
|
||||
if (c.isAnonymous) parts.push('Anonyme Suche')
|
||||
if (c.requiresDivisibility && c.minDivisibleUnit) parts.push(`Teilbar ab ${c.minDivisibleUnit} m²`)
|
||||
if (c.fitOutBudgetMaxPerSqm) parts.push(`Ausbaubudget max. CHF ${c.fitOutBudgetMaxPerSqm}/m²`)
|
||||
return parts.join(', ')
|
||||
}
|
||||
|
||||
@@ -50,6 +54,11 @@ export function buildNeedInput(
|
||||
requireBarrierFree: criteria.requireBarrierFree,
|
||||
minCeilingHeightM: criteria.minCeilingHeightM,
|
||||
minContractDurationMonths: criteria.minContractDurationMonths,
|
||||
searchRadius: criteria.searchRadius,
|
||||
isAnonymous: criteria.isAnonymous,
|
||||
requiresDivisibility: criteria.requiresDivisibility,
|
||||
minDivisibleUnit: criteria.minDivisibleUnit,
|
||||
fitOutBudgetMaxPerSqm: criteria.fitOutBudgetMaxPerSqm,
|
||||
notes: criteria.notes,
|
||||
extractedFromText: undefined,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user