Migrate Notifications interface patterns

This commit is contained in:
2026-08-03 15:33:49 +02:00
parent 3b1a87b3e2
commit ad6a31f68b
13 changed files with 825 additions and 104 deletions
+88 -4
View File
@@ -103,7 +103,23 @@ manifest = ModuleManifest(
documentation_types=("user",),
audience=("user",),
related_modules=("mail", "calendar", "scheduling", "workflow_engine"),
metadata={"kind": "reference"},
metadata={
"kind": "reference",
"help_contexts": [
"notifications.route.notifications",
"notifications.page.inbox",
"notifications.page.detail",
"notifications.settings.preferences",
"notifications.widget.summary",
"notifications.state.read-only",
],
"consequence_classes": {
"mark_read": "record the notification as read for the current recipient",
"acknowledge": "record explicit recipient acknowledgement in addition to read state",
"cancel": "stop an eligible notification before provider acceptance without claiming remote recall",
"update_preferences": "replace the current user's badge, channel, digest, and source-muting preferences",
},
},
),
DocumentationTopic(
id="notifications.delivery-operations",
@@ -113,7 +129,18 @@ manifest = ModuleManifest(
documentation_types=("admin",),
audience=("tenant_admin", "operator", "module_admin"),
related_modules=("mail", "audit", "ops"),
metadata={"kind": "reference"},
metadata={
"kind": "reference",
"help_contexts": [
"notifications.page.delivery",
"notifications.action.dispatch",
"notifications.state.delivery-unavailable",
],
"consequence_classes": {
"dispatch_pending": "attempt delivery for up to the requested number of eligible tenant notifications",
"inspect_attempts": "read sanitized provider, status, timing, and error evidence for the selected notification",
},
},
),
),
frontend=FrontendModule(
@@ -125,22 +152,79 @@ manifest = ModuleManifest(
component="NotificationCenterPage",
required_any=(READ_SCOPE,),
order=59,
surface_id="notifications.route.notifications",
),
),
view_surfaces=(
ViewSurface(
id="notifications.page.inbox",
module_id=MODULE_ID,
kind="section",
label="Notification inbox",
parent_id="notifications.route.notifications",
order=20,
),
ViewSurface(
id="notifications.page.detail",
module_id=MODULE_ID,
kind="section",
label="Notification details",
parent_id="notifications.route.notifications",
order=30,
),
ViewSurface(
id="notifications.page.delivery",
module_id=MODULE_ID,
kind="section",
label="Notification delivery evidence",
parent_id="notifications.page.detail",
order=40,
),
ViewSurface(
id="notifications.action.mark-read",
module_id=MODULE_ID,
kind="action",
label="Mark notification as read",
parent_id="notifications.page.detail",
order=50,
),
ViewSurface(
id="notifications.action.acknowledge",
module_id=MODULE_ID,
kind="action",
label="Acknowledge notification",
parent_id="notifications.page.detail",
order=60,
),
ViewSurface(
id="notifications.action.cancel",
module_id=MODULE_ID,
kind="action",
label="Cancel notification delivery",
parent_id="notifications.page.delivery",
order=70,
),
ViewSurface(
id="notifications.action.dispatch",
module_id=MODULE_ID,
kind="action",
label="Dispatch pending notifications",
parent_id="notifications.page.delivery",
order=80,
),
ViewSurface(
id="notifications.widget.summary",
module_id=MODULE_ID,
kind="section",
label="Notification summary widget",
order=30,
order=90,
),
ViewSurface(
id="notifications.settings.preferences",
module_id=MODULE_ID,
kind="section",
label="Notification preferences",
order=40,
order=100,
),
),
),