fix: resolve all TypeScript errors and refactor oversized components

- Fix MUI v9 API: PaperProps/InputLabelProps/inputProps → slotProps in 6 components
- Add ExternalMarketResult alias, PropertyUnit import, OPERATIONS workspace config
- Fix TradeOff.description → .concern, ScoreFactor.label → .criterion
- Make schattenmarktRelease.leadTimeMonths optional, fix mock-data enum values
- Fix useMatchDetailData query typing, weightingService missing WeightProfile keys
- Split Pipeline/Compare/MatchDetail/IntelligenceMatchCard into sub-components
- Fix all test fixtures (CreateNeedInput, CreatePropertyInput, TradeOffInput, etc.)
- Add vercel.json for deployment, zero tsc errors

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Benjamin Sutter
2026-05-26 00:08:35 +02:00
parent 98d2770054
commit 36570c5bdc
52 changed files with 269 additions and 143 deletions
+8 -8
View File
@@ -608,7 +608,7 @@ export const mockProperties: Property[] = [
prestige: 56,
accessibility: 88,
visibilityScore: 72,
passerbyFrequency: 'MEDIUM_HIGH',
passerbyFrequency: 'HIGH',
talentAccess: 65,
parkingSpots: 1,
publicTransportMinutes: 5,
@@ -830,7 +830,7 @@ export const mockProperties: Property[] = [
prestige: 60,
accessibility: 88,
visibilityScore: 75,
passerbyFrequency: 'MEDIUM_HIGH',
passerbyFrequency: 'HIGH',
talentAccess: 70,
parkingSpots: 2,
publicTransportMinutes: 5,
@@ -2017,7 +2017,7 @@ export const mockProperties: Property[] = [
prestige: 48,
accessibility: 78,
visibilityScore: 68,
passerbyFrequency: 'MEDIUM_HIGH',
passerbyFrequency: 'HIGH',
talentAccess: 60,
parkingSpots: 2,
publicTransportMinutes: 5,
@@ -2230,7 +2230,7 @@ export const mockProperties: Property[] = [
prestige: 58,
accessibility: 85,
visibilityScore: 70,
passerbyFrequency: 'MEDIUM_HIGH',
passerbyFrequency: 'HIGH',
talentAccess: 65,
parkingSpots: 2,
publicTransportMinutes: 5,
@@ -2373,7 +2373,7 @@ export const mockProperties: Property[] = [
prestige: 55,
accessibility: 82,
visibilityScore: 70,
passerbyFrequency: 'MEDIUM_HIGH',
passerbyFrequency: 'HIGH',
talentAccess: 65,
parkingSpots: 0,
publicTransportMinutes: 5,
@@ -3453,7 +3453,7 @@ export const mockProperties: Property[] = [
prestige: 85,
accessibility: 95,
visibilityScore: 88,
passerbyFrequency: 'MEDIUM_HIGH',
passerbyFrequency: 'HIGH',
talentAccess: 76,
parkingSpots: 0,
publicTransportMinutes: 3,
@@ -4586,7 +4586,7 @@ export const mockProperties: Property[] = [
availabilityStatus: AvailabilityStatus.AVAILABLE_SOON,
sourceType: 'DIRECT',
confidenceScore: 0.72,
dataQuality: { score: 0.68, missingCriticalFields: ['contactPerson'], missingOptionalFields: ['softFactors'], lastVerifiedAt: '2026-02-15', freshness: DataFreshness.AGING, warnings: ['Kein Ansprechpartner hinterlegt'] },
dataQuality: { score: 0.68, missingCriticalFields: ['contactPerson'], missingOptionalFields: ['softFactors'], lastVerifiedAt: '2026-02-15', freshness: DataFreshness.STALE, warnings: ['Kein Ansprechpartner hinterlegt'] },
softFactors: { prestige: 68, accessibility: 85, visibilityScore: 80, publicTransportMinutes: 5 },
hardFacts: { floor: 0, fitOut: 'BASIC', hasStorefront: true },
floorLevel: 0,
@@ -4640,7 +4640,7 @@ export const mockProperties: Property[] = [
availabilityStatus: AvailabilityStatus.AVAILABLE_SOON,
sourceType: 'DIRECT',
confidenceScore: 0.70,
dataQuality: { score: 0.65, missingCriticalFields: ['rentPricePerSqm'], missingOptionalFields: ['images', 'description'], lastVerifiedAt: '2026-03-01', freshness: DataFreshness.AGING, warnings: ['Mietpreis nicht verifiziert'] },
dataQuality: { score: 0.65, missingCriticalFields: ['rentPricePerSqm'], missingOptionalFields: ['images', 'description'], lastVerifiedAt: '2026-03-01', freshness: DataFreshness.STALE, warnings: ['Mietpreis nicht verifiziert'] },
softFactors: { prestige: 55, accessibility: 70, publicTransportMinutes: 12, parkingSpots: 8 },
hardFacts: { floor: 1, fitOut: 'BASIC', parking: 8 },
floorLevel: 1,