2.8 KiB
2.8 KiB
Task: Release update email digest
Goal
Add optional daily email digests for inactive users with unread release updates, plus a developer-operated manual email push for important published updates.
Feature Spec
docs/FEATURES/release-communications.md
Scope
- Add configuration to enable or disable release update email digests.
- Add persistence needed to rate-limit digest sends per user.
- Send at most one digest per user per day.
- Send only when the user has unread visible published release updates.
- Send only when the user has not logged in or opened the app in at least 24 hours.
- Initially target organization owners.
- Use the existing email infrastructure.
- Add a developer-only API endpoint to send an email announcement for a selected published release update.
- Add a developer-only back-office button for sending the selected update by email.
- Require confirmation before sending a manual push email.
- Support a "send to me only" test mode.
- Record manual push email metadata:
- sent by user id
- sent timestamp
- selected audience
- recipient count
- Prevent accidental duplicate push sends unless the developer explicitly confirms a resend.
- Keep user or organization email preferences out of this task.
Likely Files
backend/src/Socialize.Api/Infrastructure/Emailer/**backend/src/Socialize.Api/Modules/ReleaseCommunications/**backend/src/Socialize.Api/Modules/Identity/**backend/src/Socialize.Api/Modules/Organizations/**frontend/src/features/release-communications/**frontend/src/locales/en.jsonfrontend/src/locales/fr.jsonbackend/tests/Socialize.Tests/**
Notes
- This task may require tracking a user's last app activity timestamp if login timestamp alone is not enough.
- Keep email copy concise and product-specific.
- The digest should link back to the app's What’s New page.
- Manual push emails should link directly to the selected update when possible.
- Do not introduce a new email provider.
Validation
dotnet build backend/Socialize.slnx
dotnet test backend/Socialize.slnx
Done When
- Digest delivery is disabled unless explicitly configured.
- Eligible organization owners receive at most one digest per day.
- Digests are sent only when unread visible release updates exist.
- Active users are not emailed.
- Developers can manually send a published update email from the back office.
- Developers can send a manual update email to themselves as a test.
- Manual push sends require confirmation.
- Manual push sends record sender, timestamp, audience, and recipient count.
- Duplicate manual sends require explicit resend confirmation.
- Email delivery uses existing email infrastructure.
- Backend tests cover eligibility and rate limiting.