docs(tasks): complete German workflow coverage

This commit is contained in:
2026-08-22 06:50:34 +02:00
parent 88bd0e6aae
commit 9a9b72bb5a
7 changed files with 55 additions and 10 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "@govoplan/tasks", "name": "@govoplan/tasks",
"version": "0.1.19", "version": "0.1.20",
"private": true, "private": true,
"description": "Governed work items and unified work inbox for GovOPlaN.", "description": "Governed work items and unified work inbox for GovOPlaN.",
"type": "module", "type": "module",
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "govoplan-tasks" name = "govoplan-tasks"
version = "0.1.19" version = "0.1.20"
description = "Governed work items and unified work inbox for GovOPlaN." description = "Governed work items and unified work inbox for GovOPlaN."
readme = "README.md" readme = "README.md"
requires-python = ">=3.12" requires-python = ">=3.12"
+1 -1
View File
@@ -1,3 +1,3 @@
"""GovOPlaN Tasks module.""" """GovOPlaN Tasks module."""
__version__ = "0.1.19" __version__ = "0.1.20"
+35 -5
View File
@@ -12,6 +12,7 @@ from govoplan_core.core.module_guards import (
) )
from govoplan_core.core.modules import ( from govoplan_core.core.modules import (
CapabilityDocumentation, CapabilityDocumentation,
DocumentationCondition,
DocumentationLink, DocumentationLink,
DocumentationTopic, DocumentationTopic,
FrontendModule, FrontendModule,
@@ -43,7 +44,7 @@ from govoplan_tasks.backend.service import SqlTaskService
MODULE_ID = "tasks" MODULE_ID = "tasks"
MODULE_NAME = "Tasks" MODULE_NAME = "Tasks"
MODULE_VERSION = "0.1.19" MODULE_VERSION = "0.1.20"
READ_SCOPE = "tasks:item:read" READ_SCOPE = "tasks:item:read"
WRITE_SCOPE = "tasks:item:write" WRITE_SCOPE = "tasks:item:write"
ADMIN_SCOPE = "tasks:item:admin" ADMIN_SCOPE = "tasks:item:admin"
@@ -157,6 +158,28 @@ DOCUMENTATION = (
documentation_types=("admin", "user"), documentation_types=("admin", "user"),
audience=("user", "tenant_admin", "operator", "auditor"), audience=("user", "tenant_admin", "operator", "auditor"),
related_modules=("core", "workflow_engine", "approvals", "notifications"), related_modules=("core", "workflow_engine", "approvals", "notifications"),
translations={
"de": {
"title": "Betroffenenanfragen für Aufgaben",
"summary": (
"Kontobezogene Aufgabendaten und Lebenszykluszuordnungen exportieren, "
"während gemeinsam verantwortete institutionelle Arbeit der fachlichen Prüfung unterliegt."
),
"body": (
"Tasks gleicht ausschließlich exakte Konto- und Akteurskennungen innerhalb des aktiven Mandanten ab. "
"Direkt einem Konto zugewiesene Aufgaben tragen begrenzte Angaben zu Titel, Zusammenfassung, erforderlicher "
"Handlung, Lebenszyklusstatus, Fristen, exakter Kontozuweisung, Quellverweisen sowie vom Betroffenen ausgeführten "
"Erstellungs-, Änderungs- oder Abschlussaktivitäten bei. Sichtbarkeit für Gruppen, Rollen, Funktionen oder alle "
"wird nicht aus externen Verzeichnissen abgeleitet; andere Zuweisungsziele bleiben ausgeschlossen. Hat die "
"betroffene Person an einer Aufgabe gehandelt, ohne deren direkte Kontozuweisung zu sein, werden nur minimierte "
"Lebenszykluszuordnung und Quellidentität exportiert. Herkunftsmetadaten, beliebige Metadaten, Anfrage-Hashes, "
"Idempotenzschlüssel und Nutzdaten des Quellmoduls bleiben ausgeschlossen; Quellverweise werden niemals verfolgt. "
"Aufgabenzuordnungen bleiben als unveränderlicher Verantwortungsnachweis erhalten. Die Löschung einer Zuweisung "
"oder von Inhalten erfordert eine manuelle Prüfung durch Quellverantwortliche und Aufbewahrungsstelle, da eine "
"Aufgabe gemeinsam verantwortete institutionelle Arbeit sein kann; der Anbieter nimmt keine automatische Änderung vor."
),
}
},
metadata={ metadata={
"help_contexts": [ "help_contexts": [
"tasks.page.inbox", "tasks.page.inbox",
@@ -230,6 +253,12 @@ DOCUMENTATION = (
"views", "views",
"dashboard", "dashboard",
), ),
conditions=(
DocumentationCondition(
required_modules=("tasks",),
required_scopes=(READ_SCOPE,),
),
),
links=( links=(
DocumentationLink( DocumentationLink(
label="Tasks domain", label="Tasks domain",
@@ -240,16 +269,17 @@ DOCUMENTATION = (
translations={ translations={
"de": { "de": {
"title": "Gemeinsamer Arbeitsvorrat", "title": "Gemeinsamer Arbeitsvorrat",
"summary": "Explizite Aufgaben und Arbeitsvorgaenge anderer Module sicher fortsetzen.", "summary": "Explizite Aufgaben und Arbeitsvorgänge anderer Module sicher fortsetzen.",
"body": ( "body": (
"Der Arbeitsvorrat verbindet explizite Aufgaben mit Arbeitsobjekten aktivierter Module. " "Der Arbeitsvorrat verbindet explizite Aufgaben mit Arbeitsobjekten aktivierter Module. "
"Jede Quelle behaelt die Verantwortung fuer Befehle und Abschlussstatus. Tasks kopiert " "Jede Quelle behält die Verantwortung für Befehle und Abschlussstatus. Tasks kopiert "
"keine Workflow-Uebergabe, Postfachnachricht, Freigabe oder Benachrichtigung in einen " "keine Workflow-Übergabe, Postfachnachricht, Freigabe oder Benachrichtigung in einen "
"zweiten Fachzustand. Filter, Fristen, Prioritaeten und Quellverweise helfen beim sicheren Fortsetzen." "zweiten Fachzustand. Filter, Fristen, Prioritäten und Quellverweise helfen beim sicheren Fortsetzen."
), ),
} }
}, },
metadata={ metadata={
"kind": "workflow",
"help_contexts": [ "help_contexts": [
"tasks.route.work", "tasks.route.work",
"tasks.page.inbox", "tasks.page.inbox",
+15
View File
@@ -10,6 +10,21 @@ REPOSITORY_ROOT = Path(__file__).resolve().parents[1]
class TasksQuickAccessContractTests(unittest.TestCase): class TasksQuickAccessContractTests(unittest.TestCase):
def test_public_topics_have_complete_german_workflow_and_reference_coverage(
self,
) -> None:
topics = get_manifest().documentation
kinds = {topic.metadata.get("kind", "system") for topic in topics}
self.assertEqual(3, len(topics))
self.assertTrue({"workflow", "reference"}.issubset(kinds))
for topic in topics:
translation = topic.translations["de"]
self.assertEqual({"title", "summary", "body"}, set(translation))
self.assertTrue(
all(str(translation[field]).strip() for field in translation)
)
def test_manifest_declares_typed_work_result_and_help(self) -> None: def test_manifest_declares_typed_work_result_and_help(self) -> None:
tool = get_manifest().frontend.quick_access_tools[0] tool = get_manifest().frontend.quick_access_tools[0]
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "@govoplan/tasks-webui", "name": "@govoplan/tasks-webui",
"version": "0.1.19", "version": "0.1.20",
"private": true, "private": true,
"type": "module", "type": "module",
"main": "src/index.ts", "main": "src/index.ts",
+1 -1
View File
@@ -44,7 +44,7 @@ const quickAccessTools: QuickAccessToolsUiCapability = {
export const tasksModule: PlatformWebModule = { export const tasksModule: PlatformWebModule = {
id: "tasks", id: "tasks",
label: "i18n:govoplan-tasks.work", label: "i18n:govoplan-tasks.work",
version: "0.1.19", version: "0.1.20",
dependencies: ["access"], dependencies: ["access"],
optionalDependencies: ["idm", "organizations", "workflow_engine", "workflow", "notifications", "postbox", "approvals", "views", "dashboard", "search"], optionalDependencies: ["idm", "organizations", "workflow_engine", "workflow", "notifications", "postbox", "approvals", "views", "dashboard", "search"],
translations: generatedTranslations, translations: generatedTranslations,