fix: KPI card counts match feed — exclusive buckets + filter reset on click
- reminderService: dueThisWeek/dueThisMonth use exclusive day ranges (1-7, 8-30) matching getHorizon() buckets; schattenmarktReadyCount counts by type=SCHATTENMARKT_RELEASE (same criteria as the feed filter) - ReminderKpiBar: clicking a horizon card resets filterType to ALL; clicking Pre-Market card resets filterHorizon to ALL — ensures the number shown on the card always equals the number of rows displayed below Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { MockupReminderProvider } from '../provider/MockupReminderProvider'
|
||||
import type { Reminder } from '../domain/reminder'
|
||||
import { ReminderPriority, ReminderStatus, ShadowMarketRisk } from '../domain/reminder'
|
||||
import { ReminderPriority, ReminderStatus, ReminderType } from '../domain/reminder'
|
||||
|
||||
const provider = MockupReminderProvider
|
||||
|
||||
@@ -27,25 +27,19 @@ export const reminderService = {
|
||||
|
||||
const urgentCount = active.filter(r => r.priority === ReminderPriority.URGENT).length
|
||||
|
||||
const endOfWeek = new Date(MOCK_TODAY)
|
||||
endOfWeek.setDate(endOfWeek.getDate() + 7)
|
||||
// Counts match getHorizon() in ReminderFeed — exclusive, non-overlapping buckets
|
||||
const dueThisWeek = active.filter(r => {
|
||||
const d = daysDiff(r.dueDate)
|
||||
return d >= 0 && d <= 7
|
||||
return d >= 1 && d <= 7
|
||||
}).length
|
||||
|
||||
const endOfMonth = new Date(MOCK_TODAY)
|
||||
endOfMonth.setDate(endOfMonth.getDate() + 30)
|
||||
const dueThisMonth = active.filter(r => {
|
||||
const d = daysDiff(r.dueDate)
|
||||
return d >= 0 && d <= 30
|
||||
return d >= 8 && d <= 30
|
||||
}).length
|
||||
|
||||
const schattenmarktReadyCount = reminders.filter(
|
||||
r =>
|
||||
r.status === ReminderStatus.ACTIVE &&
|
||||
!r.schattenmarktEnabled &&
|
||||
(r.shadowMarketRisk === ShadowMarketRisk.HIGH),
|
||||
const schattenmarktReadyCount = active.filter(
|
||||
r => r.type === ReminderType.SCHATTENMARKT_RELEASE,
|
||||
).length
|
||||
|
||||
const overdueCount = active.filter(r => daysDiff(r.dueDate) <= 0).length
|
||||
|
||||
Reference in New Issue
Block a user