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-08 02:04:30 +07:00
2026-04-08 04:02:13 +07:00
2026-04-08 06:18:26 +07:00
2026-04-08 13:17:24 +07:00
2026-04-08 14:16:32 +07:00
2026-04-08 22:43:59 +07:00
2026-04-09 00:11:34 +07:00
2026-04-09 01:27:17 +07:00
2026-04-09 09:44:37 +07:00
2026-04-10 05:43:54 +07:00
2026-04-11 01:39:37 +07:00
2026-04-11 00:21:46 +07:00
2026-04-11 23:43:20 +07:00
2026-04-11 23:43:20 +07:00
2026-04-16 02:28:04 +07:00
2026-04-16 02:32:52 +07:00
2026-04-16 05:15:04 +07:00
2026-04-16 09:11:16 +07:00
2026-04-16 09:11:16 +07:00
2026-04-16 09:11:16 +07:00
2026-04-16 17:43:48 +07:00
2026-04-18 15:18:04 +07:00
2026-04-18 15:42:56 +07:00
2026-04-19 15:08:04 +07:00
2026-04-19 16:33:54 +07:00
2026-04-20 13:53:28 +07:00
2026-04-20 13:53:28 +07:00
2026-04-20 13:53:28 +07:00
2026-04-20 22:12:16 +07:00
2026-04-21 05:09:40 +07:00
2026-04-21 03:06:14 +07:00
2026-04-21 04:49:52 +07:00
2026-04-22 23:22:59 +07:00
2026-04-22 23:22:59 +07:00
2026-04-23 00:16:46 +07:00
2026-04-08 02:04:30 +07:00