docs(erp): complete German reference contract
Module Package Release / publish-packages (push) Successful in 10s
Module Package Release / publish-packages (push) Successful in 10s
This commit is contained in:
+1
-1
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "govoplan-erp"
|
||||
version = "0.1.19"
|
||||
version = "0.1.20"
|
||||
description = "GovOPlaN governed ERP payable export and reconciliation module."
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.12"
|
||||
|
||||
@@ -26,7 +26,7 @@ from govoplan_core.core.provider_governance import (
|
||||
|
||||
|
||||
MODULE_ID = "erp"
|
||||
MODULE_VERSION = "0.1.19"
|
||||
MODULE_VERSION = "0.1.20"
|
||||
READ_SCOPE = "erp:payables:read"
|
||||
PLAN_SCOPE = "erp:payables:plan"
|
||||
RECONCILE_SCOPE = "erp:bookings:reconcile"
|
||||
@@ -211,6 +211,7 @@ manifest = ModuleManifest(
|
||||
"body": "ERP verantwortet Produktprofile, Zuordnung und Transportpläne, Korrelation sowie externe Buchungsbeobachtungen. Procurement, Payments und Ledger bleiben für Freigaben, Verbindlichkeiten, Zahlungen und Buchhaltungsprojektionen zuständig. Ein Übergabeplan ist kein Buchungsnachweis; eine unkonfigurierte Anbieterdeklaration ist keine produktive Integration.",
|
||||
}
|
||||
},
|
||||
metadata={"kind": "reference"},
|
||||
order=90,
|
||||
),
|
||||
DocumentationTopic(
|
||||
@@ -276,6 +277,31 @@ manifest = ModuleManifest(
|
||||
"Reversals remain linked outcomes rather than destructive status replacement.",
|
||||
],
|
||||
},
|
||||
structured_translation_version="1",
|
||||
structured_translations={
|
||||
"de": {
|
||||
"prerequisites": [
|
||||
"Das fachlich verantwortliche Finanzmodul liefert eine freigegebene unveränderliche Verbindlichkeitsrevision.",
|
||||
"Eine administrierende Person hat Zielschema und Rohstatuszuordnung geprüft.",
|
||||
"Die Verbindungsreferenz wird über eine installationsverantwortete Berechtigungsgrenze aufgelöst.",
|
||||
],
|
||||
"steps": [
|
||||
"Exakte kanonische Übergabenutzdaten und Planprüfsummen erzeugen und prüfen.",
|
||||
"Nur über einen getrennt am Ziel geprüften Adapter versenden.",
|
||||
"Die Buchung nach Erfolg, Zeitüberschreitung oder Wiederholung über die stabile Plankorrelation lesen.",
|
||||
"Die deterministische Abgleichentscheidung erfassen, abwarten oder isolieren.",
|
||||
],
|
||||
"limitations": [
|
||||
"Diese Version wählt weder ERP-Produkt, Schema, Endpunkt noch Transport aus.",
|
||||
"Pläne können nicht versenden und Beobachtungen werden von diesem Modul nicht gespeichert.",
|
||||
],
|
||||
"consequences": [
|
||||
"Eine Änderung an Verbindlichkeit oder Zuordnung erzeugt einen neuen Plan und eine neue Idempotenzidentität.",
|
||||
"Eine Zeitüberschreitung bedeutet weder Erfolg noch Fehlschlag.",
|
||||
"Stornos bleiben verknüpfte Ergebnisse, statt den ursprünglichen Status destruktiv zu ersetzen.",
|
||||
],
|
||||
}
|
||||
},
|
||||
order=100,
|
||||
),
|
||||
),
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from govoplan_core.core.modules import documentation_structured_translation_issues
|
||||
from govoplan_erp.backend.manifest import manifest
|
||||
|
||||
|
||||
def test_erp_german_reference_contract_is_complete() -> None:
|
||||
topics = {topic.id: topic for topic in manifest.documentation}
|
||||
assert topics["erp.boundary"].metadata["kind"] == "reference"
|
||||
workflow = topics["erp.payable-reconciliation"]
|
||||
assert workflow.metadata["kind"] == "workflow"
|
||||
assert workflow.structured_translation_version == "1"
|
||||
assert "de" in workflow.structured_translations
|
||||
assert documentation_structured_translation_issues(workflow) == ()
|
||||
for topic in topics.values():
|
||||
assert all(topic.translations["de"].get(key) for key in ("title", "summary", "body"))
|
||||
@@ -129,7 +129,7 @@ def test_unknown_or_wrong_plan_observation_is_quarantined() -> None:
|
||||
|
||||
def test_manifest_documents_unconfigured_provider_and_german_workflow() -> None:
|
||||
manifest = get_manifest()
|
||||
assert manifest.version == "0.1.19"
|
||||
assert manifest.version == "0.1.20"
|
||||
assert manifest.external_providers[0].id == "erp.payables_target"
|
||||
assert manifest.architecture is not None
|
||||
assert manifest.architecture.target_tested_providers == ()
|
||||
|
||||
Reference in New Issue
Block a user