Migrate Postbox interface patterns
This commit is contained in:
@@ -17,6 +17,7 @@ from govoplan_core.core.module_guards import (
|
||||
persistent_table_uninstall_guard,
|
||||
)
|
||||
from govoplan_core.core.modules import (
|
||||
DocumentationLink,
|
||||
DocumentationTopic,
|
||||
FrontendModule,
|
||||
FrontendRoute,
|
||||
@@ -375,8 +376,8 @@ manifest = ModuleManifest(
|
||||
"reassignment. Current access combines a generic Postbox "
|
||||
"permission with effective IDM assignment context. Templates "
|
||||
"can lazily materialize unit-specific addresses, while exact "
|
||||
"postboxes cover exceptional responsibilities. The first "
|
||||
"Plaintext Postboxes remain available without Encryption. A "
|
||||
"postboxes cover exceptional responsibilities. Plaintext "
|
||||
"Postboxes remain available without Encryption. A "
|
||||
"server-envelope profile stores message bodies as ciphertext and "
|
||||
"uses the optional Encryption capability for authorized reads. "
|
||||
"External ciphertext profiles retain producer-managed references "
|
||||
@@ -393,8 +394,102 @@ manifest = ModuleManifest(
|
||||
"files",
|
||||
"notifications",
|
||||
),
|
||||
links=(
|
||||
DocumentationLink(
|
||||
label="Postbox inbox",
|
||||
href="/postbox",
|
||||
kind="runtime",
|
||||
),
|
||||
DocumentationLink(
|
||||
label="Postbox directory API",
|
||||
href="/api/v1/postbox/directory",
|
||||
kind="api",
|
||||
),
|
||||
),
|
||||
metadata={
|
||||
"kind": "guide",
|
||||
"help_contexts": [
|
||||
"postbox.inbox.directory",
|
||||
"postbox.inbox.messages",
|
||||
"postbox.widget.inbox",
|
||||
"postbox.admin.templates",
|
||||
"postbox.blocker.assignment",
|
||||
"postbox.state.unavailable",
|
||||
],
|
||||
"privacy_notes": [
|
||||
"Directory access is derived from current effective function assignments.",
|
||||
"Unavailable message states reveal only retained audit metadata permitted to the current actor.",
|
||||
"Subjects, participants, routing facts, and attachment references remain observable metadata.",
|
||||
],
|
||||
},
|
||||
order=35,
|
||||
),
|
||||
DocumentationTopic(
|
||||
id="postbox.reference.fields-and-consequences",
|
||||
title="Postbox fields and consequences",
|
||||
summary=(
|
||||
"Reference for address, template, routing, message, grouping, "
|
||||
"classification, retention, and lifecycle fields."
|
||||
),
|
||||
body=(
|
||||
"A Postbox address is durable and bound to an organization function. "
|
||||
"Template revisions are immutable after publication; retiring a template "
|
||||
"does not remove materialized addresses. Archiving an address stops new "
|
||||
"delivery while retaining messages and evidence. Unified inbox views are "
|
||||
"personal projections only and never move or delete source messages. "
|
||||
"Classification limits eligible delivery and hierarchy-copy targets. "
|
||||
"Hierarchy copies are independent deliveries with their own evidence; "
|
||||
"vacancy escalation is delayed and separately auditable. Message expiry "
|
||||
"or withdrawal blocks future content access but cannot retract plaintext "
|
||||
"already copied, exported, or printed."
|
||||
),
|
||||
layer="configured",
|
||||
documentation_types=("admin", "user"),
|
||||
audience=("administrator", "user", "campaign_manager"),
|
||||
related_modules=(
|
||||
"organizations",
|
||||
"idm",
|
||||
"policy",
|
||||
"audit",
|
||||
"encryption",
|
||||
),
|
||||
links=(
|
||||
DocumentationLink(
|
||||
label="Postbox administration",
|
||||
href="/admin?section=postbox",
|
||||
kind="runtime",
|
||||
),
|
||||
DocumentationLink(
|
||||
label="Postbox concept",
|
||||
href="docs/POSTBOX_CONCEPT.md",
|
||||
kind="source",
|
||||
),
|
||||
),
|
||||
metadata={
|
||||
"kind": "reference",
|
||||
"help_contexts": [
|
||||
"postbox.field.address",
|
||||
"postbox.field.function",
|
||||
"postbox.field.scope",
|
||||
"postbox.field.classification",
|
||||
"postbox.field.retention",
|
||||
"postbox.field.hierarchy-routing",
|
||||
"postbox.field.recipients",
|
||||
"postbox.action.archive",
|
||||
"postbox.action.retire-template",
|
||||
"postbox.action.delete-grouping",
|
||||
],
|
||||
"consequence_classes": {
|
||||
"publish_template": "Freezes an immutable address and routing revision for future materialization.",
|
||||
"retire_template": "Stops new revisions and materialization while retaining existing addresses.",
|
||||
"archive_postbox": "Stops new delivery while retaining messages, receipts, and evidence.",
|
||||
"delete_grouping": "Deletes only the personal projection; source Postboxes and messages remain unchanged.",
|
||||
"route_copy": "Creates a separately retained delivery and evidence record at each bounded target.",
|
||||
"withdraw_or_expire": "Blocks future content access while retaining permitted audit metadata.",
|
||||
},
|
||||
},
|
||||
order=36,
|
||||
),
|
||||
),
|
||||
architecture=declared_module_architecture(
|
||||
layer="communication_participation",
|
||||
|
||||
Reference in New Issue
Block a user