Make reminder schedules additive across frequency tiers
Each frequency tier now inherits all reminder days from smaller tiers: - Monthly: 3d, 1d, day-of (was: 3d, day-of) - Quarterly: 7d, 3d, 1d, day-of (was: 7d, 3d, day-of) - Semi-Annual: 14d, 7d, 3d, 1d, day-of (was: 14d, 7d, day-of) - Annual: 30d, 14d, 7d, 3d, 1d, day-of (was: 30d, 14d, 7d, day-of) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -20,17 +20,17 @@ var OverdueConfig = struct {
|
|||||||
// Key: interval days (matches TaskFrequency.days in DB, 0 = Once/null)
|
// Key: interval days (matches TaskFrequency.days in DB, 0 = Once/null)
|
||||||
// Value: array of days before due date to send reminders (0 = day-of)
|
// Value: array of days before due date to send reminders (0 = day-of)
|
||||||
//
|
//
|
||||||
// To add a reminder: append the number of days before to the slice
|
// Schedules are ADDITIVE - each tier inherits all reminders from smaller tiers
|
||||||
// Example: FrequencySchedules[30] = []int{7, 3, 0} adds 7-day warning to Monthly
|
// Example: Monthly (30) gets 3d + 1d + day-of because it includes Bi-Weekly's 1d
|
||||||
var FrequencySchedules = map[int][]int{
|
var FrequencySchedules = map[int][]int{
|
||||||
0: {0}, // 1. Once (null/0): day-of only
|
0: {0}, // 1. Once (null/0): day-of only
|
||||||
1: {0}, // 2. Daily: day-of only
|
1: {0}, // 2. Daily: day-of only
|
||||||
7: {0}, // 3. Weekly: day-of only
|
7: {0}, // 3. Weekly: day-of only
|
||||||
14: {1, 0}, // 4. Bi-Weekly: 1 day before, day-of
|
14: {1, 0}, // 4. Bi-Weekly: 1d, day-of
|
||||||
30: {3, 0}, // 5. Monthly: 3 days before, day-of
|
30: {3, 1, 0}, // 5. Monthly: 3d, 1d, day-of
|
||||||
90: {7, 3, 0}, // 6. Quarterly: 7d, 3d, day-of
|
90: {7, 3, 1, 0}, // 6. Quarterly: 7d, 3d, 1d, day-of
|
||||||
180: {14, 7, 0}, // 7. Semi-Annually: 14d, 7d, day-of
|
180: {14, 7, 3, 1, 0}, // 7. Semi-Annually: 14d, 7d, 3d, 1d, day-of
|
||||||
365: {30, 14, 7, 0}, // 8. Annually: 30d, 14d, 7d, day-of
|
365: {30, 14, 7, 3, 1, 0}, // 8. Annually: 30d, 14d, 7d, 3d, 1d, day-of
|
||||||
}
|
}
|
||||||
|
|
||||||
// HumanReadableSchedule returns admin-friendly description for each frequency
|
// HumanReadableSchedule returns admin-friendly description for each frequency
|
||||||
@@ -40,11 +40,11 @@ var HumanReadableSchedule = map[int]string{
|
|||||||
0: "Day-of → Overdue (tapering)",
|
0: "Day-of → Overdue (tapering)",
|
||||||
1: "Day-of → Overdue (tapering)",
|
1: "Day-of → Overdue (tapering)",
|
||||||
7: "Day-of → Overdue (tapering)",
|
7: "Day-of → Overdue (tapering)",
|
||||||
14: "1 day before → Day-of → Overdue",
|
14: "1d → Day-of → Overdue",
|
||||||
30: "3 days before → Day-of → Overdue",
|
30: "3d → 1d → Day-of → Overdue",
|
||||||
90: "7d → 3d → Day-of → Overdue",
|
90: "7d → 3d → 1d → Day-of → Overdue",
|
||||||
180: "14d → 7d → Day-of → Overdue",
|
180: "14d → 7d → 3d → 1d → Day-of → Overdue",
|
||||||
365: "30d → 14d → 7d → Day-of → Overdue",
|
365: "30d → 14d → 7d → 3d → 1d → Day-of → Overdue",
|
||||||
}
|
}
|
||||||
|
|
||||||
// FrequencyNames maps interval days to frequency names for display
|
// FrequencyNames maps interval days to frequency names for display
|
||||||
|
|||||||
Reference in New Issue
Block a user