[Debt] Migrate Scheduling WebUI to the interface pattern language #8

Closed
opened 2026-08-03 08:08:45 +02:00 by zemion · 2 comments
Owner

Context

This is the bounded govoplan-scheduling work package for the platform interface pattern-language rollout.

Current generated inventory boundary:

  • Routes: /scheduling
  • Contributed surfaces: scheduling.widget.open-requests

The issue owns only module-provided UI. Shared primitives remain in Core; optional integrations must continue to use declared contracts and capabilities.

Scope

Audit the listed routes and contributed surfaces, classify each by the canonical archetypes in govoplan/docs/INTERFACE_PATTERN_LANGUAGE.md, and migrate deviations without redesigning unrelated behavior.

Acceptance Criteria

  • Inventory the module's routes, panels, dialogs, tables, workflows, and destructive actions and record their archetype and consequence class.
  • Use shared Core components and tokens for equivalent controls, status, dialogs, loading, empty, error, stale, offline, partial, and permission states.
  • Explain disabled or unavailable actions with actor, reason, required action, and destination where applicable.
  • Add stable contextual Docs links for routes, fields, blockers, and consequential actions.
  • Preserve optional-module boundaries; no private imports from sibling modules.
  • Verify keyboard order, focus handling, responsive behavior, localization, privacy-safe rendering, and destructive confirmation behavior.
  • Update the module's user/admin DocumentationTopic contributions and focused regression tests.
  • Record completion evidence in the rollout matrix under govoplan/docs/INTERFACE_SURFACE_INVENTORY.md.

Verification

Run the module's targeted backend/WebUI tests, the manifest-shape check, and the consolidated focused check when shared contracts or optional integrations change.

## Context This is the bounded `govoplan-scheduling` work package for the platform interface pattern-language rollout. - Platform pattern contract: [GovOPlaN #11](https://git.add-ideas.de/GovOPlaN/govoplan/issues/11) Current generated inventory boundary: - Routes: `/scheduling` - Contributed surfaces: `scheduling.widget.open-requests` The issue owns only module-provided UI. Shared primitives remain in Core; optional integrations must continue to use declared contracts and capabilities. ## Scope Audit the listed routes and contributed surfaces, classify each by the canonical archetypes in `govoplan/docs/INTERFACE_PATTERN_LANGUAGE.md`, and migrate deviations without redesigning unrelated behavior. ## Acceptance Criteria - [ ] Inventory the module's routes, panels, dialogs, tables, workflows, and destructive actions and record their archetype and consequence class. - [ ] Use shared Core components and tokens for equivalent controls, status, dialogs, loading, empty, error, stale, offline, partial, and permission states. - [ ] Explain disabled or unavailable actions with actor, reason, required action, and destination where applicable. - [ ] Add stable contextual Docs links for routes, fields, blockers, and consequential actions. - [ ] Preserve optional-module boundaries; no private imports from sibling modules. - [ ] Verify keyboard order, focus handling, responsive behavior, localization, privacy-safe rendering, and destructive confirmation behavior. - [ ] Update the module's user/admin `DocumentationTopic` contributions and focused regression tests. - [ ] Record completion evidence in the rollout matrix under `govoplan/docs/INTERFACE_SURFACE_INVENTORY.md`. ## Verification Run the module's targeted backend/WebUI tests, the manifest-shape check, and the consolidated focused check when shared contracts or optional integrations change.
Author
Owner

Codex State: progress

Summary

  • Implemented the first Scheduling pattern-language slice at commit 3d8272b.
  • The request detail now projects draft/collecting/closed/decided/cancelled states into a shared lifecycle rail without creating a second state machine.
  • Calendar and public-participation limitations use shared actionable blockers with stable configured Docs links.

Changed Files

  • webui/src/features/scheduling/SchedulingPage.tsx
  • webui/src/features/scheduling/schedulingViewModel.ts
  • src/govoplan_scheduling/backend/manifest.py
  • README.md

Verification

  • npm run test:view-model: 13 passed.
  • npm run test:ui-structure passed.
  • Core WebUI TypeScript and structural i18n checks passed.
  • Scheduling backend suite and manifest-shape check passed.

Next / Blocked

  • Keep open for the remaining page/dialog inventory, keyboard/focus/responsive pass, and full destructive/consequence audit.

Suggested status label: status/in-progress

## Codex State: progress ### Summary - Implemented the first Scheduling pattern-language slice at commit 3d8272b. - The request detail now projects draft/collecting/closed/decided/cancelled states into a shared lifecycle rail without creating a second state machine. - Calendar and public-participation limitations use shared actionable blockers with stable configured Docs links. ### Changed Files - `webui/src/features/scheduling/SchedulingPage.tsx` - `webui/src/features/scheduling/schedulingViewModel.ts` - `src/govoplan_scheduling/backend/manifest.py` - `README.md` ### Verification - `npm run test:view-model: 13 passed.` - `npm run test:ui-structure passed.` - `Core WebUI TypeScript and structural i18n checks passed.` - `Scheduling backend suite and manifest-shape check passed.` ### Next / Blocked - Keep open for the remaining page/dialog inventory, keyboard/focus/responsive pass, and full destructive/consequence audit. Suggested status label: `status/in-progress`
Author
Owner

Codex State: done

Summary

  • Completed the Scheduling-owned interface-pattern migration across the authenticated request workspace, public participation page, and dashboard widget.
  • Consequential lifecycle, notification, decision, tentative-hold, final-event, and invitation-revocation actions now use shared confirmation and disabled-reason contracts.
  • Stable configured-system help contexts and a durable module migration record now cover every Scheduling surface.

Changed Files

  • webui/src/features/scheduling/SchedulingPage.tsx
  • webui/src/features/scheduling/SchedulingPublicPage.tsx
  • webui/src/features/scheduling/SchedulingRequestsWidget.tsx
  • src/govoplan_scheduling/backend/manifest.py
  • docs/INTERFACE_PATTERN_MIGRATION.md

Verification

  • 80 Scheduling backend tests passed
  • Scheduling UI structure and view-model suites passed
  • Integrated Core WebUI production build passed for 2,590 modules and bundle budgets
  • Pushed commit c17cbda; meta evidence fa1a4ba
## Codex State: done ### Summary - Completed the Scheduling-owned interface-pattern migration across the authenticated request workspace, public participation page, and dashboard widget. - Consequential lifecycle, notification, decision, tentative-hold, final-event, and invitation-revocation actions now use shared confirmation and disabled-reason contracts. - Stable configured-system help contexts and a durable module migration record now cover every Scheduling surface. ### Changed Files - `webui/src/features/scheduling/SchedulingPage.tsx` - `webui/src/features/scheduling/SchedulingPublicPage.tsx` - `webui/src/features/scheduling/SchedulingRequestsWidget.tsx` - `src/govoplan_scheduling/backend/manifest.py` - `docs/INTERFACE_PATTERN_MIGRATION.md` ### Verification - `80 Scheduling backend tests passed` - `Scheduling UI structure and view-model suites passed` - `Integrated Core WebUI production build passed for 2,590 modules and bundle budgets` - `Pushed commit c17cbda; meta evidence fa1a4ba`
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan-scheduling#8