Model scheduling as poll-backed workflow
This commit is contained in:
@@ -75,6 +75,13 @@ The Scheduling manifest declares `poll` as a required dependency because
|
||||
availability collection and option/date poll primitives belong in
|
||||
`govoplan-poll`.
|
||||
|
||||
Scheduling should model each meeting-finding flow as a poll-backed workflow:
|
||||
Poll owns candidate options, signed participation links, responses, visibility,
|
||||
and result aggregation. Scheduling stores the scheduling-specific context and
|
||||
uses Poll context fields to point back to its request or proposal resource.
|
||||
Typical workflow steps are collect availability, rank candidates, decide, notify
|
||||
participants, and hand off to Calendar or Appointments.
|
||||
|
||||
The manifest declares `access` and `evaluation` as optional dependencies.
|
||||
Scheduling may use Access for identity, groups, and permissions, and may trigger
|
||||
post-event or post-appointment feedback through Evaluation. It must not require
|
||||
|
||||
@@ -63,7 +63,8 @@ DOCUMENTATION = (
|
||||
body=(
|
||||
"Scheduling owns meeting scheduling workflows, candidate slots, participant availability "
|
||||
"collection, conflict explanation, reminders, and decision handoff. It depends on Poll "
|
||||
"for reusable availability matrices and can optionally trigger Evaluation for post-event feedback. "
|
||||
"for reusable availability matrices and poll-backed workflow context, and can optionally "
|
||||
"trigger Evaluation for post-event feedback. "
|
||||
"Access is optional: when installed, Scheduling can use principal resolution, permission "
|
||||
"evaluation, groups, and role templates; without it, reduced signed-link or local organizer "
|
||||
"flows remain possible."
|
||||
@@ -89,6 +90,8 @@ manifest = ModuleManifest(
|
||||
),
|
||||
requires_interfaces=(
|
||||
ModuleInterfaceRequirement(name="poll.availability_matrix", version_min="0.1.8", version_max_exclusive="0.2.0"),
|
||||
ModuleInterfaceRequirement(name="poll.workflow_context", version_min="0.1.8", version_max_exclusive="0.2.0"),
|
||||
ModuleInterfaceRequirement(name="poll.signed_participation", version_min="0.1.8", version_max_exclusive="0.2.0", optional=True),
|
||||
ModuleInterfaceRequirement(name="evaluation.feedback", version_min="0.1.8", version_max_exclusive="0.2.0", optional=True),
|
||||
),
|
||||
permissions=PERMISSIONS,
|
||||
|
||||
@@ -19,6 +19,8 @@ class SchedulingManifestTests(unittest.TestCase):
|
||||
self.assertIn("auth.principalResolver", manifest.optional_capabilities)
|
||||
self.assertIn("evaluation", manifest.optional_dependencies)
|
||||
self.assertIn("poll.availability_matrix", {interface.name for interface in manifest.requires_interfaces})
|
||||
self.assertIn("poll.workflow_context", {interface.name for interface in manifest.requires_interfaces})
|
||||
self.assertIn("poll.signed_participation", {interface.name for interface in manifest.requires_interfaces})
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user