Benjamin Sutter
1d0cb8b154
feat: F017 data quality system — trust layer across all decision surfaces
...
New components: DataQualityBadge, DataQualityPanel, DataQualityProgress,
FreshnessIndicator, CriticalFieldWarning, MissingDataList, ProvenancePanel
Service: calculatePropertyQuality, getMissingCriticalFields,
getQualityWarnings, getRecommendedActions with field→action mapping
PropertyDetailView: tab 5/6 now use DataQualityPanel + ProvenancePanel
Datenpflege page: DataQualityBadge, FreshnessIndicator, filter by level,
recommended action column showing highest-priority next step per property
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-17 12:51:35 +02:00
Benjamin Sutter
efc406ace9
feat: role-aware UX, market intelligence, score fix & layout scroll
...
- Role-based workspace access: Property Manager gets Supply+Demand,
Operations restricted to Super Admin + Reviewer only
- Root redirect routes each persona to their first workspace
- Match Center: replaced 3-panel with auto-sorted flat list + drawer
- AI Search: unified form with dual-action (Jetzt suchen / Als Suchprofil speichern)
- CompareTray hidden on non-Demand routes; Vergleichen removed from Supply
- LocationIntelligencePanel: city KPIs, rent trends, soft factors, comparables
- NegotiationInsightsPanel: price positioning, active demand, selling arguments
- scoreCalculator: cap hardMatchScore and softFactorScore to max 100
- Layout: add display:flex to overflow:hidden wrappers so inner scroll works
(MatchCenter drawer, MarketIntelligence, SourceMonitoring, SignalPipeline)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-17 00:58:10 +02:00
Benjamin Sutter
e13fe470fb
refactor: replace split-panel with overlay Drawer on Properties and FutureAvailability
...
650px right Drawer overlays the list instead of compressing it — full list always visible, detail panel has adequate space.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-16 21:25:08 +02:00
Benjamin Sutter
2e68638246
feat: F016 future availability workspace
...
2-panel workspace at /supply/future-availability: filterable signal list with FutureSignalCard (type/sensitivity/review badges + mandatory disclaimer) and collapsible detail panel with full evidence, review workflow (IN_REVIEW→APPROVED/REJECTED), shortlist action, and review task creation.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-16 21:19:52 +02:00
Benjamin Sutter
2cb29a1920
feat: F013 match center decision workspace
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-16 14:11:28 +02:00
Benjamin Sutter
3cd2e83b25
feat: F007 property repository & detail view
...
- useProperties: added usePropertyById, usePropertyMatches, usePropertySignals hooks
- propertyService.getProperties(), matchService.getMatchesForProperty(),
futureSignalService.getSignalsForProperty() added
- PropertyFilterBar: asset type chips, availability select, sort select, search
- PropertyTable: sortable columns, row selection highlight, loading skeletons,
empty/error states, Eye/Plus/Bookmark actions
- PropertyCard: decision-object card with header, primary, matchability,
data quality and action zones; card states (selected, compareSelected,
stale, low-confidence)
- PropertyDetailView: 7-tab detail panel (Übersicht, Hard Facts, Soft Factors,
Matchability, Datenqualität, Quelle, Signale) with low-quality banner,
missing field UX, data update CTA
- PropertyDetailSkeleton: loading state
- Properties page: two-panel layout (table + sliding detail panel)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-15 16:53:51 +02:00
Benjamin Sutter
7b7be0b436
feat: F006 supply dashboard — complete spec implementation
...
- dataQualityService with getPortfolioQualitySummary()
- Service methods: getDashboardPropertiesSummary, getStrongMatches,
getSignalSummary, getDashboardTasks added to respective services
- dashboardService uses Promise.allSettled for partial error resilience
- KpiCard: onClick + Tooltip support
- KpiGrid: navigate actions and tooltips per card
- StrongMatchMiniCard: Match Center, Prüfung, Vergleichen action buttons
- FutureSignalWidget: time horizon distribution (0–6, 6–12, 12–24 Mo.)
- SupplyDashboard: DashboardHeader, empty state, error state,
partial widget errors, permission-based rendering per UserRole
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-15 16:31:54 +02:00
Benjamin Sutter
46acca9e62
feat: F006 supply dashboard — KPI grid, strong matches, data quality, future signals, review tasks
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-15 16:08:49 +02:00
Benjamin Sutter
0b874865ba
feat(domain): F004 – expand domain model layer
...
- need.ts: add SizeRange, MustHaveCriterion, WeightedPreference types; extend Need with desiredLocation, sizeRange, mustHaveCriteria, weightedPreferences, status
- futureSignal.ts: add SignalEvidence type; extend FutureSignal with title, evidence, matchabilityScore, reviewStatus
- aiOutput.ts: new AIOutput entity with type, inputHash, outputJson, provider/model/promptVersion/schemaVersion, reviewStatus
- activityEvent.ts: new ActivityEvent entity with actorId, action, entityType, entityId, timestamp, metadata
- unifiedResult.ts: discriminated union (VerifiedPortfolioResult | ExternalMarketResult | FutureAvailabilityResult)
- index.ts: export all three new files
- Properties.tsx: add LIGHT_INDUSTRIAL + UNKNOWN cases to exhaustive switches
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-15 10:58:27 +02:00
Benjamin Sutter
e20e0e9a2e
fix: resolve all MUI v9 TypeScript build errors
...
- Move system props (fontWeight, lineHeight, display, alignItems, etc.) into sx
- Fix Lucide icon color prop (no sx support)
- Merge duplicate sx attributes
- Remove unused variables (location, _needId, v)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-15 10:37:07 +02:00
Benjamin Sutter
9e827c50f9
Initial commit
2026-05-15 00:48:18 +02:00