3 Commits
Author SHA1 Message Date
zemion fb6ab64e82 docs: complete German structured documentation
Module Package Release / publish-packages (push) Successful in 10s
2026-08-24 01:15:32 +02:00
zemion aff4df9e6b docs: complete public documentation baseline
Module Package Release / publish-packages (push) Successful in 10s
2026-08-22 07:55:18 +02:00
zemion c86c322408 Release v0.1.18
Module Package Release / publish-packages (push) Successful in 11s
2026-08-05 21:07:44 +02:00
5 changed files with 45 additions and 5 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@govoplan/consultation",
"version": "0.1.17",
"version": "0.1.20",
"private": true,
"description": "GovOPlaN Consultation platform module seed.",
"type": "module",
+3 -3
View File
@@ -4,15 +4,15 @@ build-backend = "setuptools.build_meta"
[project]
name = "govoplan-consultation"
version = "0.1.17"
version = "0.1.20"
description = "GovOPlaN Consultation platform module seed."
readme = "README.md"
requires-python = ">=3.12"
license = { file = "LICENSE" }
authors = [{ name = "GovOPlaN" }]
dependencies = [
"govoplan-core>=0.1.17",
"govoplan-access>=0.1.17",
"govoplan-core>=0.1.18",
"govoplan-access>=0.1.18",
]
[tool.setuptools.packages.find]
@@ -0,0 +1,12 @@
"""German translations for public structured documentation metadata."""
from __future__ import annotations
from typing import Any
GERMAN_STRUCTURED_TRANSLATIONS: dict[str, dict[str, Any]] = {'consultation.module-boundary': {'consequence_classes': {'seed_boundary': 'Erklärt nur Besitz und '
'Berechtigungen an; es '
'ist noch kein '
'Laufzeit-Workflow '
'verfügbar.'}}}
+20 -1
View File
@@ -1,12 +1,15 @@
from __future__ import annotations
from govoplan_core.core.modules import with_documentation_structured_translations
from govoplan_consultation.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.modules import DocumentationLink, DocumentationTopic, ModuleManifest, PermissionDefinition, RoleTemplate
from govoplan_core.core.provider_governance import declared_module_architecture
MODULE_ID = "consultation"
MODULE_NAME = "Consultation"
MODULE_VERSION = "0.1.17"
MODULE_VERSION = "0.1.20"
READ_SCOPE = "consultation:workspace:read"
WRITE_SCOPE = "consultation:workspace:write"
ADMIN_SCOPE = "consultation:workspace:admin"
@@ -68,6 +71,13 @@ DOCUMENTATION = (
layer="available",
documentation_types=("admin", "user"),
audience=("user", "operator", "module_admin", "product_owner"),
translations={
"de": {
"title": "Modulgrenze von Consultation",
"summary": "Öffentliche Konsultationen, Anhörungen, Rückmeldungen von Interessengruppen, förmliche Stellungnahmen, Erwiderungsmatrizen und Veröffentlichung von Ergebnissen.",
"body": "Dieses Repository ist derzeit ein Grundgerüst für ein Plattformmodul. Es registriert die Fachgrenze, Berechtigungsoberfläche, Rollenvorlagen und Dokumentationsmetadaten, bevor Laufzeit-APIs, Datenbankmodelle, Migrationen und WebUI-Routen eingeführt werden.",
}
},
order=100,
related_modules=OPTIONAL_DEPENDENCIES,
links=(
@@ -78,7 +88,11 @@ DOCUMENTATION = (
),
),
metadata={
"kind": "reference",
"seed": True,
"consequence_classes": {
"seed_boundary": "Declares ownership and permissions only; no runtime workflow is available yet.",
},
"domain_objects": ['consultation processes', 'hearing events', 'stakeholder feedback', 'formal comments', 'response matrices', 'publication state'],
"first_slice": "Define consultation, phase, stakeholder, comment, response, publication, and record-link concepts.",
},
@@ -107,5 +121,10 @@ manifest = ModuleManifest(
)
manifest = with_documentation_structured_translations(
manifest, locale="de", translations=GERMAN_STRUCTURED_TRANSLATIONS
)
def get_manifest() -> ModuleManifest:
return manifest
+9
View File
@@ -15,6 +15,15 @@ class ManifestSeedTests(unittest.TestCase):
self.assertEqual({permission.scope for permission in manifest.permissions}, {READ_SCOPE, WRITE_SCOPE, ADMIN_SCOPE})
self.assertEqual({role.slug for role in manifest.role_templates}, {"consultation_manager", "consultation_viewer"})
self.assertTrue(manifest.documentation)
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")
)
)
self.assertIsNone(manifest.route_factory)
self.assertIsNone(manifest.migration_spec)
self.assertIsNone(manifest.frontend)