feat(notifications): add notification and reminder system
Summary
Add a scalable notification and reminder system to help users proactively manage personal finances.
Changes
- Add an in-app notification inbox with filtering, pagination, unread counts, and read/delete actions.
- Add user notification preferences for in-app, email, Zalo, and push channels.
- Add one-time and recurring reminders with daily, weekly, monthly, and yearly schedules.
- Add a database-backed delivery outbox with idempotency and retry support.
- Add background processing for:
- Budget threshold and exceeded alerts.
- Saving goal progress, completion, and deadline alerts.
- Recurring payment and custom reminders.
- Unusual expense detection based on recent transaction history.
- Integrate email delivery using the existing SMTP configuration.
- Add extensible placeholders for Zalo and push notification providers.
- Add Prisma models, enums, indexes, constraints, and a safe migration.
- Update Swagger documentation and project memory.
- Add worker configuration through
NOTIFICATION_*environment variables.