π¬ Simulate:
Notification Event Logs
Filter panel
Event list
Showing 1β25 of 142 events
| Event type | Recipient | Event time | Channels routed | Delivery status | Read status | |
|---|---|---|---|---|---|---|
| Course Approval | Somchai S. / s***ai@example.com | 2026-06-19 14:32:05 +07 | EmailIn-App | β All Delivered | All Read | Transport log β |
| OTP | Nuan T. / +856 20 *** 4567 | 2026-06-19 13:15:22 +07 | In-App | β Partial Failure | Unread | Transport log β |
| Renewal Reminder | Khamphan V. / k***n@example.com | 2026-06-19 11:00:00 +07 | EmailPush | β All Delivered | Partially Read | Transport log β |
| Certificate Issued | Daovone P. / d***e@example.com | 2026-06-18 16:45:10 +07 | EmailIn-App | β Failed | Unread | Transport log β |
| Forum Reply | Bounmy K. / b***y@example.com | 2026-06-18 09:30:00 +07 | In-App | β All Delivered | All Read | Transport log β |
Page 1 of 6
Screen Flow (from flow.puml):
β filter / search β (stays on this page)
π Spec notes β UC-NOT.01 / SCR-NOT.01 (fields, actions, requirements)
Identity
- Screen: SCR-NOT.01 β Notification Event Log Viewer
- Use case: UC-NOT.01 β View Notification Event Logs
Brief description
Super Admin page for viewing, filtering, and auditing notification events dispatched by the system β filter panel + paginated event list + row action to navigate to delivery transport log (UC-NOT.04). Read-only β no resend, no export. Super Admin sees events across all institutions.
Fields
event_type"Event type" β enum Β· default all Β· Filter panelrecipient_search"Recipient" β text Β· max 100 chars Β· Filter panelchannels"Channel" β enum [all, email, push, in_app] Β· Filter paneldate_from"Event date from" β datetime Β· default now-7days Β·NotificationEvent.created_atΒ· Filter paneldate_to"Event date to" β datetime Β· default now Β·NotificationEvent.created_atΒ· Filter paneldelivery_status"Delivery status" β enum [all, all_delivered, partial_failure, failed, pending] Β· Filter panelread_status"Read status" β enum [all, all_read, partially_read, unread] Β· Filter panelrow_event_type"Event type" β text Β·NotificationEvent.event_typeΒ· read-only Β· Event listrow_recipient"Recipient" β computed: User.full_name + masked contact Β· always masked Β· read-only Β· Event listrow_event_timestamp"Event time" β datetime Β·NotificationEvent.created_atΒ· UTC stored, +07 displayed Β· read-only Β· Event listrow_channels"Channels routed" β computed: [Email, Push, In-App]; SMS excluded Β· read-only Β· Event listrow_delivery_status"Delivery status" β enum aggregate Β· read-only Β· Event listrow_read_status"Read status" β enum aggregate [all_read, partially_read, unread, na] Β· read-only Β· Event list
Actions
apply_filter"Search" β always enabled Β· triggers UC-NOT.01-M-3clear_filter"Clear filter" β enabled when any filter changed from defaultview_transport_log"Transport log β" β always enabled Β· navigates to UC-NOT.04page_prev"β Previous" β enabled when current_page > 1page_next"Next β" β enabled when has_next_page
Additional requirements
- Event log is read-only β no edit, delete, or resend.
- Recipient contact always partially masked. No unmask.
- Super Admin sees all institutions β no institution scope filter.
- Timestamps: UTC stored, Asia/Vientiane (+07:00) displayed; tooltip shows UTC + relative time.
- Empty state: icon + "No events foundβ¦" + [Clear filter].
- WCAG-AA: label-input pairing; status columns use color + icon; row striping β₯ 4.5:1. [refs: NFR-09]
- Responsive min 1024px; horizontal scroll below that. [refs: NFR-08]
- SMS not surfaced β Channel filter excludes SMS; Channels cell shows "β" if all channels are SMS.