docs(tenancy): complete German reference coverage
Module Package Release / publish-packages (push) Successful in 12s

This commit is contained in:
2026-08-23 20:27:26 +02:00
parent c558621550
commit 2cac95fa3e
5 changed files with 133 additions and 17 deletions
+112 -12
View File
@@ -6,7 +6,14 @@ from govoplan_core.core.access import (
CAPABILITY_AUTH_TENANT_CONTEXT_SWITCHER,
CAPABILITY_TENANCY_TENANT_RESOLVER,
)
from govoplan_core.core.modules import DocumentationLink, DocumentationTopic, FrontendModule, ModuleContext, ModuleManifest
from govoplan_core.core.modules import (
DocumentationCondition,
DocumentationLink,
DocumentationTopic,
FrontendModule,
ModuleContext,
ModuleManifest,
)
from govoplan_core.core.provider_governance import declared_module_architecture
from govoplan_core.core.views import ViewSurface
@@ -32,7 +39,7 @@ def _route_factory(context: ModuleContext):
manifest = ModuleManifest(
id="tenancy",
name="Tenancy",
version="0.1.18",
version="0.1.19",
required_capabilities=(
CAPABILITY_AUTH_PRINCIPAL_RESOLVER,
CAPABILITY_AUTH_PERMISSION_EVALUATOR,
@@ -51,6 +58,20 @@ manifest = ModuleManifest(
documentation_types=("user",),
audience=("user", "tenant_admin"),
related_modules=("access",),
translations={
"de": {
"title": "Im richtigen Mandantenkontext arbeiten",
"summary": (
"Der aktive Mandant bestimmt, welche mandantenbezogenen Daten, Rollen, Einstellungen und Modulkonfigurationen für eine "
"Anfrage sichtbar sind."
),
"body": (
"Konten mit Zugriff auf mehrere Mandanten können den Kontext über die Mandantenauswahl der Plattform wechseln. Der "
"Wechsel ändert den aktiven Geltungsbereich; er kopiert keine Daten und gewährt keine neue Befugnis. Prüfen Sie den "
"ausgewählten Mandanten immer, bevor Sie mandanteneigene Datensätze anlegen oder ändern."
),
}
},
metadata={
"kind": "reference",
"help_contexts": ["tenancy.current-context", "tenancy.selector"],
@@ -61,16 +82,64 @@ manifest = ModuleManifest(
title="Administer tenant lifecycle and settings",
summary="Tenancy adds explicit tenant creation, activation, context resolution, and tenant-owned settings over Core's shared scope storage.",
body="A tenant is a concrete administrative and data boundary. Tenant lifecycle changes must preserve ownership and recovery guarantees for module-owned records. New tenants default to the German reference language unless the administrator selects another enabled system language; existing tenant and user preferences remain unchanged. Tenant administrators can inherit or override the system side-rail order and visibility and can lock entries visible for users; system locks remain effective. Personal navigation preferences still take precedence except that they cannot hide locked entries. Tenant appearance likewise inherits the system palette until explicitly selected; an unlocked tenant default permits a personal palette, while a policy-authorized tenant lock suppresses it and a system lock always wins. Resetting the tenant palette restores inheritance rather than copying the current system value. When the system permits advanced personal color overrides, a policy-authorized tenant administrator may inherit, allow, or block them; the tenant cannot enable a system-denied policy, and palette locks still suppress the editor. Advanced documents cover both light and dark modes and are validated atomically by Core. Navigation and appearance changes never grant module entitlement, View visibility, or permissions. Tenancy contributes system tenant management and tenant settings to the shared administration workspace; without this module, the Core and Access baseline can operate in single-scope compatibility mode. Core-reserved module entitlement settings are managed only through the Admin module's tenant-module policy endpoints and are preserved when generic tenant settings are replaced.",
documentation_types=("admin",),
documentation_types=("admin", "user"),
audience=("system_admin", "tenant_admin", "operator"),
related_modules=("access", "admin", "audit"),
links=(
DocumentationLink(label="Tenant administration", href="/admin", kind="runtime"),
DocumentationLink(label="Tenant registry API", href="/api/v1/admin/tenants", kind="api"),
DocumentationLink(label="Tenant settings API", href="/api/v1/admin/tenant/settings", kind="api"),
conditions=(
DocumentationCondition(
required_modules=("tenancy", "access"),
any_scopes=(
"access:tenant:read",
"access:tenant:update",
"access:setting:read",
"access:setting:write",
),
),
),
links=(
DocumentationLink(
label="Tenant administration", href="/admin", kind="runtime"
),
DocumentationLink(
label="Tenant registry API",
href="/api/v1/admin/tenants",
kind="api",
),
DocumentationLink(
label="Tenant settings API",
href="/api/v1/admin/tenant/settings",
kind="api",
),
),
translations={
"de": {
"title": "Mandantenlebenszyklus und -einstellungen administrieren",
"summary": (
"Tenancy ergänzt ausdrückliche Mandantenanlage, Aktivierung, Kontextauflösung und mandanteneigene Einstellungen über "
"Cores gemeinsamen Bereichsspeicher."
),
"body": (
"Ein Mandant ist eine konkrete Administrations- und Datengrenze. Änderungen am Mandantenlebenszyklus müssen Eigentums- "
"und Wiederherstellungsgarantien für modulbezogene Datensätze bewahren. Neue Mandanten verwenden standardmäßig die "
"deutsche Referenzsprache, sofern keine andere aktivierte Systemsprache gewählt wird; bestehende Mandanten- und "
"Benutzerpräferenzen bleiben unverändert. Mandantenadministrierende können systemweite Reihenfolge und Sichtbarkeit der "
"Seitenleiste erben oder überschreiben und Einträge für Benutzende sichtbar sperren; Systemsperren bleiben wirksam. "
"Persönliche Navigationspräferenzen behalten Vorrang, können gesperrte Einträge aber nicht ausblenden. Das Erscheinungsbild "
"erbt ebenfalls die Systempalette, bis es ausdrücklich gewählt wird. Ein ungesperrter Mandantenstandard erlaubt eine "
"persönliche Palette; eine richtlinienautorisierte Mandantensperre unterdrückt sie, und eine Systemsperre hat immer Vorrang. "
"Zurücksetzen stellt Vererbung wieder her, statt den aktuellen Systemwert zu kopieren. Erlaubt das System erweiterte "
"persönliche Farbanpassungen, darf eine richtlinienautorisierte Mandantenadministration sie erben, erlauben oder blockieren; "
"eine systemweite Ablehnung kann nicht gelockert werden und Palettensperren unterdrücken den Editor weiterhin. Erweiterte "
"Dokumente umfassen hellen und dunklen Modus und werden von Core atomar validiert. Navigation und Erscheinungsbild gewähren "
"niemals Modulberechtigung, View-Sichtbarkeit oder Zugriffsrechte. Tenancy trägt systemweite Mandantenverwaltung und "
"Mandanteneinstellungen zum gemeinsamen Admin-Arbeitsbereich bei; ohne das Modul können Core und Access in einem "
"Einzelbereichskompatibilitätsmodus arbeiten. Für Core reservierte Modulberechtigungseinstellungen werden ausschließlich "
"über Admins Mandanten-Modulrichtlinienendpunkte verwaltet und beim Ersetzen allgemeiner Mandanteneinstellungen bewahrt."
),
}
},
metadata={
"kind": "reference",
"kind": "workflow",
"help_contexts": [
"tenancy.admin.system-tenants",
"tenancy.admin.tenant-settings",
@@ -88,9 +157,34 @@ manifest = ModuleManifest(
audience=("system_admin", "tenant_admin", "operator"),
related_modules=("access", "admin", "audit"),
links=(
DocumentationLink(label="Tenant administration", href="/admin", kind="runtime"),
DocumentationLink(label="Tenant registry API", href="/api/v1/admin/tenants", kind="api"),
DocumentationLink(
label="Tenant administration", href="/admin", kind="runtime"
),
DocumentationLink(
label="Tenant registry API",
href="/api/v1/admin/tenants",
kind="api",
),
),
translations={
"de": {
"title": "Felder und Folgen der Mandantenadministration",
"summary": (
"Mandantenidentität, Eigentum, Sprache, Governance-Überschreibungen und Lebenszykluszustand haben unterschiedliche "
"Änderungs- und Wiederherstellungsfolgen."
),
"body": (
"Der Slug eines Mandanten ist nach der Anlage unveränderlich und bezeichnet die Administrationsgrenze. Der erste Owner "
"erhält die geschützte Tenant-Owner-Rolle. Deutsch ist Referenz und Standard für neue Mandanten; Spracheinstellung und "
"aktivierte Sprachen werden durch Systemsprachpakete begrenzt und können ausdrücklich geändert werden. Navigation und "
"Erscheinungsbild erben ihre Systemebenen, bis sie gespeichert werden. Paletten verwenden nur validierte Core-Vorgaben. "
"Eine Mandantensperre des Erscheinungsbilds verlangt Richtlinienschreibberechtigung, unterdrückt persönliche Paletten und "
"kann keine Systemsperre lockern. Governance-Überschreibungen dürfen eine Systemerlaubnis einschränken, aber eine "
"Systemablehnung nicht lockern. Eine Suspendierung bewahrt mandanteneigene Daten und Auditnachweise, verhindert jedoch die "
"normale Nutzung; die Betriebsperson muss vor der Suspendierung aus dem aktiven Mandanten wechseln."
),
}
},
metadata={
"kind": "reference",
"help_contexts": [
@@ -136,9 +230,15 @@ manifest = ModuleManifest(
maturity="vertical_slice",
documentation_ref="docs/TENANCY_MODULE_BOUNDARY.md",
test_ref="tests/test_tenant_lifecycle.py",
known_limits=("Cross-region tenant relocation and complete major-version recovery evidence are not implemented.",),
known_limits=(
"Cross-region tenant relocation and complete major-version recovery evidence are not implemented.",
),
owned_concepts=("tenant lifecycle", "tenant context", "tenant settings"),
non_owned_concepts=("account authorization", "organization hierarchy", "module-owned tenant data"),
non_owned_concepts=(
"account authorization",
"organization hierarchy",
"module-owned tenant data",
),
recovery_docs=("docs/TENANCY_MODULE_BOUNDARY.md",),
security_docs=("docs/TENANCY_MODULE_BOUNDARY.md",),
),