[Feature] Mirror campaign invitations and track attendee answers #5

Closed
opened 2026-07-07 13:55:25 +02:00 by zemion · 2 comments
Owner

Goal

Let calendar represent campaign-generated invitations and track attendee answers so campaign reports can include RSVP state.

Scope

  • Define a calendar invite capability/API usable by campaign without module imports.
  • Create/update VEVENT invitations for campaign recipients where appropriate.
  • Track attendee participation status and response timestamps.
  • Expose answer state back to campaign reporting.
  • Reconcile mail-delivered replies or iCalendar REPLY messages when mail integration is present.

Acceptance Criteria

  • Campaign-created invitations appear as calendar invitations/events when calendar is enabled.
  • RSVP/answer state is stored in calendar and can be queried by campaign correlation IDs.
  • Calendar behavior degrades clearly when recurrence/CalDAV/REPLY support is incomplete.

Core tracking issue: add-ideas/govoplan-core#205

## Goal Let calendar represent campaign-generated invitations and track attendee answers so campaign reports can include RSVP state. ## Scope - Define a calendar invite capability/API usable by campaign without module imports. - Create/update VEVENT invitations for campaign recipients where appropriate. - Track attendee participation status and response timestamps. - Expose answer state back to campaign reporting. - Reconcile mail-delivered replies or iCalendar REPLY messages when mail integration is present. ## Acceptance Criteria - Campaign-created invitations appear as calendar invitations/events when calendar is enabled. - RSVP/answer state is stored in calendar and can be queried by campaign correlation IDs. - Calendar behavior degrades clearly when recurrence/CalDAV/REPLY support is incomplete. Core tracking issue: https://git.add-ideas.de/add-ideas/govoplan-core/issues/205 <!-- codex-fingerprint: bulk-invite-calendar-module -->
Author
Owner

Implemented and published the Calendar-owned capability slice in GovOPlaN/govoplan-calendar@ccdf121 with the Core contract in GovOPlaN/govoplan-core@b65b488.

Calendar now upserts deterministic correlated VEVENT invitations, stores producer/correlation identity, preserves existing attendee responses on update, records RSVP state/timestamp/evidence by correlation ID or UID, and exposes explicit degradation for recurrence and missing Mail REPLY ingress. Focused tests and a fresh all-module migration/startup smoke passed.

Keep this cross-module issue open until Campaign #48 consumes the capability and Mail supplies an iCalendar REPLY adapter; the Calendar provider itself is ready.

Implemented and published the Calendar-owned capability slice in GovOPlaN/govoplan-calendar@ccdf121 with the Core contract in GovOPlaN/govoplan-core@b65b488. Calendar now upserts deterministic correlated VEVENT invitations, stores producer/correlation identity, preserves existing attendee responses on update, records RSVP state/timestamp/evidence by correlation ID or UID, and exposes explicit degradation for recurrence and missing Mail REPLY ingress. Focused tests and a fresh all-module migration/startup smoke passed. Keep this cross-module issue open until Campaign #48 consumes the capability and Mail supplies an iCalendar REPLY adapter; the Calendar provider itself is ready.
zemion added
status
in-progress
and removed
status
ready
labels 2026-07-31 22:54:52 +02:00
Author
Owner

Implemented across Core 435b924, Calendar 56d7b21, Mail ff3aa06, and Campaign bf6e07f. Campaign now freezes individualized METHOD:REQUEST attachments, mirrors only accepted deliveries, and exposes live batched RSVP state. Calendar owns correlated VEVENT/PARTSTAT state with idempotent reply reconciliation; Mail forwards bounded METHOD:REPLY parts from configured IMAP sources. Focused unit tests, manifest/contract validation, dependency boundaries, and WebUI type-check passed.

Implemented across Core 435b924, Calendar 56d7b21, Mail ff3aa06, and Campaign bf6e07f. Campaign now freezes individualized METHOD:REQUEST attachments, mirrors only accepted deliveries, and exposes live batched RSVP state. Calendar owns correlated VEVENT/PARTSTAT state with idempotent reply reconciliation; Mail forwards bounded METHOD:REPLY parts from configured IMAP sources. Focused unit tests, manifest/contract validation, dependency boundaries, and WebUI type-check passed.
zemion removed the codex/ready
status
in-progress
labels 2026-08-02 17:32:18 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan-calendar#5