Integrate Payments operator WebUI
Dependency Audit / dependency-audit (push) Successful in 1m54s
Deployment Installer / deployment-installer (push) Successful in 7s
Security Audit / security-audit (push) Successful in 11m59s

This commit is contained in:
2026-08-19 13:33:51 +02:00
parent f8b06887d2
commit d0ff2f1510
5 changed files with 27 additions and 18 deletions
+1 -1
View File
@@ -57,7 +57,7 @@ full = [
"govoplan-mandates==0.1.18", "govoplan-mandates==0.1.18",
"govoplan-notifications==0.1.18", "govoplan-notifications==0.1.18",
"govoplan-parties==0.1.18", "govoplan-parties==0.1.18",
"govoplan-payments==0.1.19", "govoplan-payments==0.1.20",
"govoplan-permits==0.1.18", "govoplan-permits==0.1.18",
"govoplan-poll==0.1.18", "govoplan-poll==0.1.18",
"govoplan-portal==0.1.18", "govoplan-portal==0.1.18",
+6
View File
@@ -103,6 +103,7 @@ PY
"$PYTHON" -m unittest discover -s /mnt/DATA/git/govoplan-dashboard/tests "$PYTHON" -m unittest discover -s /mnt/DATA/git/govoplan-dashboard/tests
"$PYTHON" -m unittest discover -s /mnt/DATA/git/govoplan-postbox/tests "$PYTHON" -m unittest discover -s /mnt/DATA/git/govoplan-postbox/tests
"$PYTHON" -m unittest discover -s /mnt/DATA/git/govoplan-portal/tests "$PYTHON" -m unittest discover -s /mnt/DATA/git/govoplan-portal/tests
"$PYTHON" -m unittest discover -s /mnt/DATA/git/govoplan-payments/tests
"$PYTHON" -m unittest discover -s /mnt/DATA/git/govoplan-forms/tests "$PYTHON" -m unittest discover -s /mnt/DATA/git/govoplan-forms/tests
"$PYTHON" -m unittest discover -s /mnt/DATA/git/govoplan-forms-runtime/tests "$PYTHON" -m unittest discover -s /mnt/DATA/git/govoplan-forms-runtime/tests
"$PYTHON" -m unittest discover -s /mnt/DATA/git/govoplan-cases/tests "$PYTHON" -m unittest discover -s /mnt/DATA/git/govoplan-cases/tests
@@ -124,6 +125,11 @@ cd "$ROOT/webui"
"$NPM" run test:module-permutations "$NPM" run test:module-permutations
"$NPM" run test:conformance "$NPM" run test:conformance
"$WEBUI_BIN/tsc" -p /mnt/DATA/git/govoplan-payments/webui/tsconfig.json
cd /mnt/DATA/git/govoplan-payments/webui
"$NPM" run test:interface-pattern
cd /mnt/DATA/git/govoplan-dataflow/webui cd /mnt/DATA/git/govoplan-dataflow/webui
"$NPM" run test:structure "$NPM" run test:structure
@@ -49,6 +49,7 @@ REQUIRED_CONSUMERS = (
pathlib.Path("govoplan-core/webui/src/features/settings/SettingsPage.tsx"), pathlib.Path("govoplan-core/webui/src/features/settings/SettingsPage.tsx"),
pathlib.Path("govoplan-docs/webui/src/features/docs/DocsPage.tsx"), pathlib.Path("govoplan-docs/webui/src/features/docs/DocsPage.tsx"),
pathlib.Path("govoplan-mail/webui/src/features/mail/MailBouncePage.tsx"), pathlib.Path("govoplan-mail/webui/src/features/mail/MailBouncePage.tsx"),
pathlib.Path("govoplan-payments/webui/src/features/payments/PaymentsPage.tsx"),
) )
REQUIRED_WORKSPACE_CONSUMERS = ( REQUIRED_WORKSPACE_CONSUMERS = (
pathlib.Path("govoplan-campaign/webui/src/features/campaigns/CampaignWorkspace.tsx"), pathlib.Path("govoplan-campaign/webui/src/features/campaigns/CampaignWorkspace.tsx"),
@@ -30,6 +30,9 @@ LEGACY_LAYOUT_TOKENS = {
"metric-grid", "metric-grid",
} }
CENTRAL_COMPONENTS = { CENTRAL_COMPONENTS = {
"PageActionBar": pathlib.Path(
"govoplan-core/webui/src/components/PageActionBar.tsx"
),
"ActionToolbar": pathlib.Path( "ActionToolbar": pathlib.Path(
"govoplan-core/webui/src/components/ActionToolbar.tsx" "govoplan-core/webui/src/components/ActionToolbar.tsx"
), ),
@@ -115,6 +118,9 @@ CENTRAL_COMPONENTS = {
), ),
} }
REQUIRED_CONSUMERS = { REQUIRED_CONSUMERS = {
"PageActionBar": (
pathlib.Path("govoplan-payments/webui/src/features/payments/PaymentsPage.tsx"),
),
"ActionToolbar": ( "ActionToolbar": (
pathlib.Path("govoplan-core/webui/src/components/WysiwygEditor.tsx"), pathlib.Path("govoplan-core/webui/src/components/WysiwygEditor.tsx"),
pathlib.Path("govoplan-calendar/webui/src/features/calendar/CalendarPage.tsx"), pathlib.Path("govoplan-calendar/webui/src/features/calendar/CalendarPage.tsx"),
@@ -432,7 +438,7 @@ def main() -> int:
migrated = ", ".join( migrated = ", ".join(
f"{name}={usage_counts[name]} files" f"{name}={usage_counts[name]} files"
for name in ("ActionToolbar", "WorkspaceFrame", "WorkspaceLayout", "FilterBar", "StatePanel", "SelectionList", "CountBadge", "DefinitionPalette", "DefinitionNodeIcon", "FloatingStatus", "ContentSection", "ContentGrid", "FormGrid", "FormSection", "DialogForm", "DialogSection", "MetricGrid", "MetricCard", "DescriptionList") for name in ("PageActionBar", "ActionToolbar", "WorkspaceFrame", "WorkspaceLayout", "FilterBar", "StatePanel", "SelectionList", "CountBadge", "DefinitionPalette", "DefinitionNodeIcon", "FloatingStatus", "ContentSection", "ContentGrid", "FormGrid", "FormSection", "DialogForm", "DialogSection", "MetricGrid", "MetricCard", "DescriptionList")
) )
print(f"Shared WebUI primitive contract passed: {migrated}; {len(dialog_exceptions)} reviewed dialog width exceptions; no raw legacy anatomy.") print(f"Shared WebUI primitive contract passed: {migrated}; {len(dialog_exceptions)} reviewed dialog width exceptions; no raw legacy anatomy.")
return 0 return 0
@@ -1147,36 +1147,32 @@
"repository": "govoplan-parties" "repository": "govoplan-parties"
}, },
{ {
"category": "missing_ui", "category": "ui_reachable",
"method": "GET", "method": "GET",
"path": "/payments/requests", "path": "/payments/requests",
"rationale": "The first payment vertical slice is capability-first; its guided operator workspace will adopt the centralized layout usage contract.", "rationale": "The Payments workspace lists obligations, preserves stale data on refresh failure, and offers explicit retry.",
"repository": "govoplan-payments", "repository": "govoplan-payments"
"tracking_issue": "https://git.add-ideas.de/GovOPlaN/govoplan-payments/issues/1"
}, },
{ {
"category": "missing_ui", "category": "ui_reachable",
"method": "POST", "method": "POST",
"path": "/payments/requests", "path": "/payments/requests",
"rationale": "The first payment vertical slice is capability-first; its guided operator workspace will adopt the centralized layout usage contract.", "rationale": "The guided Payments request dialog creates fixed, source-bound obligations with an explicit replay key.",
"repository": "govoplan-payments", "repository": "govoplan-payments"
"tracking_issue": "https://git.add-ideas.de/GovOPlaN/govoplan-payments/issues/1"
}, },
{ {
"category": "missing_ui", "category": "intentionally_headless",
"method": "GET", "method": "GET",
"path": "/payments/requests/{}", "path": "/payments/requests/{}",
"rationale": "The first payment vertical slice is capability-first; its guided operator workspace will adopt the centralized layout usage contract.", "rationale": "The operator list response already carries the complete detail projection; the single-object endpoint remains available to capability consumers without duplicating a detail fetch in the workspace.",
"repository": "govoplan-payments", "repository": "govoplan-payments"
"tracking_issue": "https://git.add-ideas.de/GovOPlaN/govoplan-payments/issues/1"
}, },
{ {
"category": "missing_ui", "category": "ui_reachable",
"method": "POST", "method": "POST",
"path": "/payments/requests/{}/manual-reconciliations", "path": "/payments/requests/{}/manual-reconciliations",
"rationale": "The first payment vertical slice is capability-first; its guided operator workspace will adopt the centralized layout usage contract.", "rationale": "The separate manual reconciliation dialog fixes amount and currency and captures transaction and immutable evidence references.",
"repository": "govoplan-payments", "repository": "govoplan-payments"
"tracking_issue": "https://git.add-ideas.de/GovOPlaN/govoplan-payments/issues/1"
}, },
{ {
"category": "intentionally_headless", "category": "intentionally_headless",