fix: clear stale search criteria on text edit, fix Zürich false-positive, improve cost breakdown and fit-out labels
- AISearch: clear parsed criteria when user manually edits text input so stale locations (e.g. Zürich) no longer persist after retyping - needParser: fix ZURICH_SIGNALS substring bug — "kreis N" now uses word-boundary regex so "umkreis 22" no longer matches "kreis 2" - CompareTableBody: row 9 shows full cost breakdown (Miete + NK + amortised fit-out) using FITOUT_AMORTIZATION_YEARS from constants - FitOutCostPanel: replace local AMORTIZATION_YEARS with FITOUT_AMORTIZATION_YEARS from constants.ts (single source of truth) - constants.ts: add FITOUT_AMORTIZATION_YEARS = 5 — change here to affect all cost calculations - PropertyIntelligenceCard: translate raw fitOut enum to German labels (Rohbau/Grundausbau/Vollausbau/Premium-Ausbau) with explanatory tooltips; add tooltip on contract duration chip Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -47,14 +47,17 @@ export function mockParseNeed(input: string): ParseNeedResult {
|
||||
return re.test(lower)
|
||||
}).map(([, v]) => v)
|
||||
|
||||
// Infer Zürich when Zürich-specific districts or landmarks are mentioned
|
||||
const ZURICH_SIGNALS = [
|
||||
// Infer Zürich when Zürich-specific districts or landmarks are mentioned.
|
||||
// "kreis N" patterns require a word boundary so "umkreis 22" does NOT match "kreis 2".
|
||||
const ZURICH_SIGNAL_WORDS = [
|
||||
'seefeld', 'bellevue', 'paradeplatz', 'bahnhofstrasse', 'zürich-west', 'zürich west',
|
||||
'oerlikon', 'altstetten', 'kreis 1', 'kreis 2', 'kreis 3', 'kreis 4', 'kreis 5',
|
||||
'kreis 6', 'kreis 7', 'kreis 8', 'langstrasse', 'hardbrücke', 'freilager',
|
||||
'oerlikon', 'altstetten', 'langstrasse', 'hardbrücke', 'freilager',
|
||||
'europaallee', 'zürich nord', 'zürich süd',
|
||||
]
|
||||
if (!preferredLocations.includes('Zürich') && ZURICH_SIGNALS.some(s => lower.includes(s))) {
|
||||
const ZURICH_KREIS_RE = /(?<![a-zA-ZäöüÄÖÜß])kreis\s+[1-8](?![0-9a-zA-ZäöüÄÖÜß])/
|
||||
if (!preferredLocations.includes('Zürich') && (
|
||||
ZURICH_SIGNAL_WORDS.some(s => lower.includes(s)) || ZURICH_KREIS_RE.test(lower)
|
||||
)) {
|
||||
preferredLocations.push('Zürich')
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user