Ho Ngoc Hai
94d462ef4f
feat(listings): add 3-day listing expiry warning notification (GOO-30)
- Add expiryNotifiedAt column to Listing (migration 20260423100000);
atomic UPDATE…RETURNING guards against duplicate notifications across
concurrent cron instances
- Add ListingExpiringEvent domain event (listing.expiring)
- Add ListingExpiryCronService: daily cron at 01:00 UTC; marks
expiryNotifiedAt before publishing events (idempotent)
- Add ListingExpiringListener: sends EMAIL + Zalo OA via
SendNotificationCommand with daysRemaining context
- Add listing.expiring Handlebars template (Vietnamese)
- Wire cron into ListingsModule, listener into NotificationsModule
- Update template.service spec: 17 → 19 keys (listing.expiring + the
pre-existing user.phone_login_otp that was missing from assertion)
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-23 00:16:46 +07:00
..
2026-04-23 00:16:46 +07:00
2026-04-22 23:31:31 +07:00
2026-04-13 00:36:49 +07:00
2026-04-23 00:16:46 +07:00
2026-04-20 22:12:16 +07:00
2026-04-16 14:18:41 +07:00