docs(fit-connect): complete German reference contract
Module Package Release / publish-packages (push) Successful in 11s

This commit is contained in:
2026-08-23 19:31:23 +02:00
parent ded8509ae7
commit d1bf9500b7
4 changed files with 46 additions and 3 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "govoplan-fit-connect"
version = "0.1.19"
version = "0.1.20"
description = "GovOPlaN FIT-Connect inbound receipt and acknowledgement connector."
readme = "README.md"
requires-python = ">=3.12"
+28 -1
View File
@@ -26,7 +26,7 @@ from govoplan_core.core.provider_governance import (
MODULE_ID = "fit_connect"
MODULE_VERSION = "0.1.19"
MODULE_VERSION = "0.1.20"
READ_SCOPE = "fit_connect:submissions:read"
VERIFY_SCOPE = "fit_connect:submissions:verify"
ACK_SCOPE = "fit_connect:acknowledgements:plan"
@@ -212,6 +212,7 @@ manifest = ModuleManifest(
"body": "FIT-Connect verantwortet Zustellpunkt- und Abonnentenprofile, begrenzte Transportbelege, Prüfnachweise und Pläne für technische Bestätigungen. Antragssemantik, Fallentscheidungen, Kommunikation mit Antragstellenden und fachliche Annahme gehören nicht zum Modul. Ein technisches accept-submission-Ereignis belegt ausschließlich Empfang und technische Verarbeitbarkeit.",
}
},
metadata={"kind": "reference"},
order=90,
),
DocumentationTopic(
@@ -280,6 +281,32 @@ manifest = ModuleManifest(
"Technical problem details are operator evidence and must not be exposed directly to applicants.",
],
},
structured_translation_version="1",
structured_translations={
"de": {
"prerequisites": [
"Ein Zustellpunkt und ein Abonnentenclient bestehen in einer freigegebenen FIT-Connect-Umgebung.",
"Die Installation kann Verweise auf Entschlüsselungs- und Ereignissignaturschlüssel auflösen.",
"Ein fachlich verantwortlicher Service-, Formular- oder Fallablauf kann die exakte Einreichung dauerhaft übernehmen.",
],
"steps": [
"Alle verschlüsselten Komponenten und Anlagen für die exakte Einreichungs-ID abrufen.",
"Metadaten, Fachdaten, Anlagen und Authentifizierungs-Tags entschlüsseln und prüfen.",
"Vor der Bestätigung eine prüfsummengebundene Übergabe im fachlich verantwortlichen Ablauf speichern.",
"Annahme, Ablehnung oder Aufschub planen und jedes versendete SET im Ereignisprotokoll abgleichen.",
],
"limitations": [
"Standardmäßig werden weder Umgebung, Journey, Zustellpunkt, API-Profil noch Zugangsdaten aktiviert.",
"Diese Version erzeugt Belege und Bestätigungspläne, aber keine signierten SETs und versendet sie nicht.",
"Eine technische Bestätigung ist niemals die fachliche Annahme des Antrags.",
],
"consequences": [
"Erfolgreiche Annahme- oder Ablehnungsverarbeitung kann die Einreichung aus dem Zustelldienst entfernen.",
"Unvollständige lokale Dauerhaftigkeit verschiebt das Ereignis und bewahrt Wiederherstellungsoptionen.",
"Technische Problemdetails sind Betriebsnachweise und dürfen Antragstellenden nicht unmittelbar angezeigt werden.",
],
}
},
order=100,
),
),
+16
View File
@@ -0,0 +1,16 @@
from __future__ import annotations
from govoplan_core.core.modules import documentation_structured_translation_issues
from govoplan_fit_connect.backend.manifest import manifest
def test_fit_connect_german_reference_contract_is_complete() -> None:
topics = {topic.id: topic for topic in manifest.documentation}
assert topics["fit-connect.boundary"].metadata["kind"] == "reference"
workflow = topics["fit-connect.inbound-receipt"]
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"))
+1 -1
View File
@@ -176,7 +176,7 @@ def test_receipt_from_another_submission_is_rejected() -> None:
def test_manifest_declares_no_active_target_and_has_german_documentation() -> None:
manifest = get_manifest()
assert manifest.version == "0.1.19"
assert manifest.version == "0.1.20"
assert manifest.external_providers[0].id == "fit_connect.submission_api"
assert manifest.architecture is not None
assert manifest.architecture.target_tested_providers == ()