Migrate Cases interface patterns

This commit is contained in:
2026-08-03 14:43:37 +02:00
parent c7821a5cb0
commit 43b4cc8b86
10 changed files with 639 additions and 48 deletions
+106
View File
@@ -213,6 +213,14 @@ manifest = ModuleManifest(
label="Case list",
order=20,
),
ViewSurface(
id="cases.list.filters",
module_id=MODULE_ID,
kind="section",
label="Case search and filters",
parent_id="cases.list",
order=10,
),
ViewSurface(
id="cases.detail",
module_id=MODULE_ID,
@@ -220,6 +228,54 @@ manifest = ModuleManifest(
label="Case details",
order=30,
),
ViewSurface(
id="cases.detail.summary",
module_id=MODULE_ID,
kind="section",
label="Case summary",
parent_id="cases.detail",
order=10,
),
ViewSurface(
id="cases.detail.editor",
module_id=MODULE_ID,
kind="section",
label="Case lifecycle editor",
parent_id="cases.detail",
order=20,
),
ViewSurface(
id="cases.detail.references",
module_id=MODULE_ID,
kind="section",
label="Institutional references",
parent_id="cases.detail",
order=30,
),
ViewSurface(
id="cases.detail.timeline",
module_id=MODULE_ID,
kind="section",
label="Case timeline",
parent_id="cases.detail",
order=40,
),
ViewSurface(
id="cases.detail.history",
module_id=MODULE_ID,
kind="section",
label="Immutable case history",
parent_id="cases.detail",
order=50,
),
ViewSurface(
id="cases.detail.access",
module_id=MODULE_ID,
kind="action",
label="Case access",
parent_id="cases.detail",
order=60,
),
),
),
provides_interfaces=(
@@ -313,6 +369,56 @@ manifest = ModuleManifest(
kind="repository",
),
),
metadata={
"help_contexts": [
"cases.list",
"cases.detail",
"cases.state.read-only",
"cases.state.restricted",
],
},
),
DocumentationTopic(
id="cases.reference.lifecycle-access-and-evidence",
title="Case lifecycle, access, and evidence reference",
summary="Explains revision, status, access, and reference fields together with their durable consequences.",
body=(
"Title and status changes append an immutable case revision guarded by the "
"expected revision and a stable idempotency key. Every accepted change also "
"appends a timeline entry with actor, time, and change reason; a terminal "
"status additionally requires the case-close permission. Case visibility is "
"tenant-wide or restricted. Restricted cases remain visible only through "
"administrative authority, assignment or unit context, creator authority, or "
"an explicit account/group grant. Access changes append another immutable "
"revision and require confirmation. Service, party, assignment, Decision, and "
"record references identify provider-owned objects; Cases preserves their "
"stable identifiers and versions without copying or silently changing them."
),
layer="available",
documentation_types=("admin", "user"),
audience=("user", "operator", "module_admin"),
links=(
DocumentationLink(
label="Cases interface pattern migration",
href="govoplan-cases/docs/INTERFACE_PATTERN_MIGRATION.md",
kind="repository",
),
),
metadata={
"help_contexts": [
"cases.field.title",
"cases.field.status",
"cases.field.change-reason",
"cases.field.visibility",
"cases.field.access-grant",
"cases.state.close-unavailable",
],
"consequence_classes": {
"update_case": "append an OCC-guarded immutable revision and timeline event",
"close_case": "append a terminal revision after close-scope authorization",
"change_access": "append a confirmed visibility/grant revision and timeline event",
},
},
),
),
architecture=ModuleArchitectureDeclaration(