Telegram (ask questions / claim the issue here first): https://t.me/+DOylgFv1jyJlNzM0
Why this matters
src/cron/loanCheckCron.ts runs hourly and for every unrepaid loan older than 30 days creates a fresh repayment_due notification (lines 28-36) with no dedup, no already-notified check and no idempotency, so an affected borrower is spammed 24 times a day indefinitely.
Acceptance criteria
Files to touch
- src/cron/loanCheckCron.ts
- src/services/notificationService.ts
Out of scope
- Building a full repayment-schedule table
- Email/SMS template redesign
Why this matters
src/cron/loanCheckCron.ts runs hourly and for every unrepaid loan older than 30 days creates a fresh repayment_due notification (lines 28-36) with no dedup, no already-notified check and no idempotency, so an affected borrower is spammed 24 times a day indefinitely.
Acceptance criteria
Files to touch
Out of scope