3 Commits
Author SHA1 Message Date
zemion 8882442c09 docs: complete German structured documentation
Module Package Release / publish-packages (push) Successful in 10s
2026-08-24 01:15:33 +02:00
zemion 4d44357745 docs: complete public documentation baseline
Module Package Release / publish-packages (push) Successful in 10s
2026-08-22 07:55:18 +02:00
zemion 97dfed5764 Release v0.1.18
Module Package Release / publish-packages (push) Successful in 10s
2026-08-05 21:07:46 +02:00
5 changed files with 51 additions and 5 deletions
+2 -2
View File
@@ -4,14 +4,14 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "govoplan-evaluation" name = "govoplan-evaluation"
version = "0.1.17" version = "0.1.20"
description = "GovOPlaN structured evaluation, feedback, scoring, and survey module seed." description = "GovOPlaN structured evaluation, feedback, scoring, and survey module seed."
readme = "README.md" readme = "README.md"
requires-python = ">=3.12" requires-python = ">=3.12"
license = { file = "LICENSE" } license = { file = "LICENSE" }
authors = [{ name = "GovOPlaN" }] authors = [{ name = "GovOPlaN" }]
dependencies = [ dependencies = [
"govoplan-core>=0.1.17", "govoplan-core>=0.1.18",
] ]
[tool.setuptools.packages.find] [tool.setuptools.packages.find]
+1 -1
View File
@@ -2,4 +2,4 @@
__all__ = ["__version__"] __all__ = ["__version__"]
__version__ = "0.1.17" __version__ = "0.1.20"
@@ -0,0 +1,13 @@
"""German translations for public structured documentation metadata."""
from __future__ import annotations
from typing import Any
GERMAN_STRUCTURED_TRANSLATIONS: dict[str, dict[str, Any]] = {'evaluation.module-boundary': {'consequence_classes': {'seed_boundary': 'Deklariert Besitz und '
'optionale '
'Integrationsgrenzen; es '
'ist noch kein '
'Laufzeit-Workflow '
'verfügbar.'}}}
+26 -2
View File
@@ -1,5 +1,8 @@
from __future__ import annotations from __future__ import annotations
from govoplan_core.core.modules import with_documentation_structured_translations
from govoplan_evaluation.backend.german_structured_documentation import GERMAN_STRUCTURED_TRANSLATIONS
from govoplan_core.core.access import CAPABILITY_AUTH_PERMISSION_EVALUATOR, CAPABILITY_AUTH_PRINCIPAL_RESOLVER from govoplan_core.core.access import CAPABILITY_AUTH_PERMISSION_EVALUATOR, CAPABILITY_AUTH_PRINCIPAL_RESOLVER
from govoplan_core.core.modules import ( from govoplan_core.core.modules import (
DocumentationTopic, DocumentationTopic,
@@ -13,7 +16,7 @@ from govoplan_core.core.provider_governance import declared_module_architecture
MODULE_ID = "evaluation" MODULE_ID = "evaluation"
MODULE_NAME = "Evaluation" MODULE_NAME = "Evaluation"
MODULE_VERSION = "0.1.17" MODULE_VERSION = "0.1.20"
READ_SCOPE = "evaluation:evaluation:read" READ_SCOPE = "evaluation:evaluation:read"
WRITE_SCOPE = "evaluation:evaluation:write" WRITE_SCOPE = "evaluation:evaluation:write"
ADMIN_SCOPE = "evaluation:evaluation:admin" ADMIN_SCOPE = "evaluation:evaluation:admin"
@@ -74,8 +77,24 @@ DOCUMENTATION = (
layer="available", layer="available",
documentation_types=("admin", "user"), documentation_types=("admin", "user"),
audience=("user", "operator", "module_admin", "product_owner"), audience=("user", "operator", "module_admin", "product_owner"),
translations={
"de": {
"title": "Modulgrenze von Evaluation",
"summary": "Strukturierte Fragebögen, Rückmeldungen, Bewertungsraster, Punktevergaben, Aggregationen und berichtsfertige Evaluationsergebnisse.",
"body": (
"Evaluation verwaltet strukturierte Rückmeldungen nach einem Verfahren, Befragungen, Punktevergaben, Bewertungsraster, wiederkehrende Evaluationsläufe, Aggregationen und exportfähige Ergebnisse. "
"Antwortsammlungen aus Poll können als Kontext übernommen werden; einfache Entscheidungs- und Verfügbarkeitsumfragen verbleiben jedoch bei Poll. Access ist optional: Ist es installiert, kann Evaluation Identitätsauflösung, Berechtigungsprüfung und Rollenvorlagen verwenden; ohne Access bleiben reduzierte lokale Antwortabläufe oder Abläufe über öffentliche Links möglich."
),
}
},
related_modules=("poll", "scheduling", "calendar", "campaigns", "forms", "forms_runtime", "reporting"), related_modules=("poll", "scheduling", "calendar", "campaigns", "forms", "forms_runtime", "reporting"),
metadata={"seed": True}, metadata={
"kind": "reference",
"seed": True,
"consequence_classes": {
"seed_boundary": "Declares ownership and optional integration boundaries; no runtime workflow is available yet.",
},
},
), ),
) )
@@ -109,5 +128,10 @@ manifest = ModuleManifest(
) )
manifest = with_documentation_structured_translations(
manifest, locale="de", translations=GERMAN_STRUCTURED_TRANSLATIONS
)
def get_manifest() -> ModuleManifest: def get_manifest() -> ModuleManifest:
return manifest return manifest
+9
View File
@@ -19,6 +19,15 @@ class EvaluationManifestTests(unittest.TestCase):
self.assertIn("poll", manifest.optional_dependencies) self.assertIn("poll", manifest.optional_dependencies)
self.assertIn("evaluation.result_aggregation", {interface.name for interface in manifest.provides_interfaces}) self.assertIn("evaluation.result_aggregation", {interface.name for interface in manifest.provides_interfaces})
self.assertIn("poll.response_collection", {interface.name for interface in manifest.requires_interfaces}) self.assertIn("poll.response_collection", {interface.name for interface in manifest.requires_interfaces})
topic = manifest.documentation[0]
self.assertEqual("reference", topic.metadata["kind"])
self.assertIn("seed_boundary", topic.metadata["consequence_classes"])
self.assertTrue(
all(
topic.translations.get("de", {}).get(field)
for field in ("title", "summary", "body")
)
)
if __name__ == "__main__": if __name__ == "__main__":