feat(notifications): finish PMS-85 story (channels, templates, prefs, inbox, rules, dispatcher) #32

Closed
David wants to merge 0 commits from feat/notifications-story-pms-85 into main
Owner

Closes #PMS-85

Closes #PMS-85
feat(notifications): scaffold + channels, templates, prefs, inbox, rules, dispatcher
All checks were successful
Create release / Create release from merged PR (pull_request) Has been skipped
fe702cc992
Batches PMS-86..92:
- PMS-86 scaffold + router wire
- PMS-87 notification_channels CRUD; `config_encrypted` round-trips through AES-256-GCM at rest
- PMS-88 notification_templates CRUD
- PMS-89 `/me/notification-preferences` upsert on `(user_id, event_type)`
- PMS-90 in-app inbox: `GET /notifications` lists `channel_type = in_app` rows for the caller; `POST /notifications/:id/read` stamps `read_at`
- PMS-91 notification_rules CRUD with conditions / channels / recipients
- PMS-92 dispatcher: `NotificationsService::dispatch` looks up active rules, fans out per (recipient, channel) by writing `notifications` rows with `status = pending`. The real SMTP / Slack / etc transports land via a follow-up worker; rows in `pending` are the queue marker. `POST /notifications/dispatch` is the admin manual-trigger entry point.

The host `Mailer` is not wired here yet because the email-infra story (PMS-4) lives on a parallel branch; once both PRs merge, `NotificationsService::with_mailer` will plug the Mailer in for the email channel and flip the row to `sent`.

#PMS-86 State Done
#PMS-87 State Done
#PMS-88 State Done
#PMS-89 State Done
#PMS-90 State Done
#PMS-91 State Done
#PMS-92 State Done
vas2000-work closed this pull request 2026-05-21 02:42:57 +02:00
Some checks are pending
Create release / Create release from merged PR (pull_request) Has been skipped
Check / * (pull_request)
Required
E2E / * (pull_request)
Required

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/mokosh-server!32
No description provided.