Notification Event Logs
🎬 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 panel
  • recipient_search "Recipient" β€” text Β· max 100 chars Β· Filter panel
  • channels "Channel" β€” enum [all, email, push, in_app] Β· Filter panel
  • date_from "Event date from" β€” datetime Β· default now-7days Β· NotificationEvent.created_at Β· Filter panel
  • date_to "Event date to" β€” datetime Β· default now Β· NotificationEvent.created_at Β· Filter panel
  • delivery_status "Delivery status" β€” enum [all, all_delivered, partial_failure, failed, pending] Β· Filter panel
  • read_status "Read status" β€” enum [all, all_read, partially_read, unread] Β· Filter panel
  • row_event_type "Event type" β€” text Β· NotificationEvent.event_type Β· read-only Β· Event list
  • row_recipient "Recipient" β€” computed: User.full_name + masked contact Β· always masked Β· read-only Β· Event list
  • row_event_timestamp "Event time" β€” datetime Β· NotificationEvent.created_at Β· UTC stored, +07 displayed Β· read-only Β· Event list
  • row_channels "Channels routed" β€” computed: [Email, Push, In-App]; SMS excluded Β· read-only Β· Event list
  • row_delivery_status "Delivery status" β€” enum aggregate Β· read-only Β· Event list
  • row_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-3
  • clear_filter "Clear filter" β€” enabled when any filter changed from default
  • view_transport_log "Transport log β†’" β€” always enabled Β· navigates to UC-NOT.04
  • page_prev "← Previous" β€” enabled when current_page > 1
  • page_next "Next β†’" β€” enabled when has_next_page
Additional requirements
  1. Event log is read-only β€” no edit, delete, or resend.
  2. Recipient contact always partially masked. No unmask.
  3. Super Admin sees all institutions β€” no institution scope filter.
  4. Timestamps: UTC stored, Asia/Vientiane (+07:00) displayed; tooltip shows UTC + relative time.
  5. Empty state: icon + "No events found…" + [Clear filter].
  6. WCAG-AA: label-input pairing; status columns use color + icon; row striping β‰₯ 4.5:1. [refs: NFR-09]
  7. Responsive min 1024px; horizontal scroll below that. [refs: NFR-08]
  8. SMS not surfaced β€” Channel filter excludes SMS; Channels cell shows "β€”" if all channels are SMS.