Benjamin Sutter
5d3323617c
feat: F018 human review queue — 2-panel governance workspace
...
Replaces the old ad-hoc ReviewQueue page with a full governance-compliant
workflow: filterable task list, detail panel with confidence/risk context,
role-aware approve/reject/escalate/more-data actions, and persistent notes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-17 13:03:34 +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
5ef8b9d69d
feat(services): F005 – complete service layer
...
New domain types:
- shortlist.ts: Shortlist, ShortlistItem, CreateShortlistInput
- review.ts: ReviewQueueItem, ReviewPriority, ReviewQueueStatus
New mock data:
- shortlists.ts: 2 sample shortlists
- reviewQueue.ts: 3 pending review items
New providers (interface + mockup):
- IShortlistProvider / MockupShortlistProvider (with 150ms latency)
- IReviewProvider / MockupReviewProvider (priority-sorted, with latency)
- IDashboardProvider / MockupDashboardProvider (computed from all mock data)
New services:
- reviewService: getQueue, approve, reject, assign
- shortlistService: CRUD + addItem/removeItem
- authService: wraps sessionStore, swappable for real auth
- dashboardService: getStats(organizationId?)
Enhancements:
- types.ts: typed ServiceErrorCode + ServiceError, Pagination alias
- aiService.ts: openRouterAIService stub (throws ai_generation_failed)
- lib/mockUtils.ts: mockDelay(ms) utility
New hooks:
- useUnifiedResults(needId?): joins matches+properties+signals → UnifiedMatchResult[]
- useReviewQueue: + useApproveReviewItem + useRejectReviewItem
- useMatchDetail, usePropertyDetail, useNeedProfiles aliases
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-15 11:12:06 +02:00