chore: sync GovOPlaN module split state
This commit is contained in:
64
docs/RECIPIENT_ADDRESS_BOUNDARY.md
Normal file
64
docs/RECIPIENT_ADDRESS_BOUNDARY.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# Recipient And Address Management Boundary
|
||||
|
||||
Campaigns currently own campaign-local recipient entries because sending and
|
||||
reporting need a frozen recipient snapshot. Long-lived address management is a
|
||||
separate domain and should move to `govoplan-addresses`.
|
||||
|
||||
## `govoplan-campaign` Owns
|
||||
|
||||
- campaign-local recipient entries
|
||||
- campaign-local recipient import mapping and validation
|
||||
- message addressing for a concrete campaign version
|
||||
- send/build/report evidence for the exact recipients used
|
||||
- campaign-local exclusions, warnings, and review status
|
||||
- recipient-specific attachment and template evidence
|
||||
|
||||
Campaign data is immutable once a version is built for sending. Later address
|
||||
book changes must not rewrite historical campaign evidence.
|
||||
|
||||
## `govoplan-addresses` Should Own
|
||||
|
||||
- Adrema-style address management
|
||||
- reusable person, organization, household, and postal-address records
|
||||
- reusable email address lists and segments
|
||||
- postal-letter recipient views
|
||||
- consent, legal-basis, and communication-preference metadata
|
||||
- deduplication and merge workflows
|
||||
- import/export of reusable address directories
|
||||
- address quality checks and change history
|
||||
|
||||
The addresses module should provide stable DTOs and capabilities that campaigns,
|
||||
mail, forms, reporting, portal, and postbox modules can consume without direct
|
||||
imports.
|
||||
|
||||
## Integration Contract
|
||||
|
||||
The campaign module should ask the platform whether the addresses module is
|
||||
installed. When present, campaign can offer address-source choices through a
|
||||
capability such as `addresses.recipientSource`.
|
||||
|
||||
The capability should return snapshots, not live ORM objects:
|
||||
|
||||
- selected source id and display label
|
||||
- normalized recipient rows
|
||||
- provenance fields for source, segment, legal basis, and import time
|
||||
- update markers so campaigns can show whether a draft is based on stale source
|
||||
data
|
||||
|
||||
Campaign stores the resolved snapshot in the campaign version. It may keep a
|
||||
reference to the address source for traceability, but the built campaign remains
|
||||
auditable even if the address source changes later.
|
||||
|
||||
## Non-Goals For Campaign
|
||||
|
||||
Campaign should not become the global address book. It should not own:
|
||||
|
||||
- deduplication across campaigns
|
||||
- consent lifecycle
|
||||
- master-data merge policy
|
||||
- address-directory permissions beyond campaign use
|
||||
- postal address normalization
|
||||
- reusable segmentation rules
|
||||
|
||||
Those belong in `govoplan-addresses` or a dedicated records/identity module when
|
||||
the domain needs stronger governance.
|
||||
Reference in New Issue
Block a user