intermittent commit
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
# 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`.
|
||||
Campaigns own campaign-local recipient entries because sending and reporting
|
||||
need a frozen recipient snapshot. Long-lived address management is a separate
|
||||
domain owned by `govoplan-addresses`.
|
||||
|
||||
## `govoplan-campaign` Owns
|
||||
|
||||
@@ -16,7 +16,7 @@ separate domain and should move to `govoplan-addresses`.
|
||||
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
|
||||
## `govoplan-addresses` Owns
|
||||
|
||||
- Adrema-style address management
|
||||
- reusable person, organization, household, and postal-address records
|
||||
@@ -27,15 +27,25 @@ book changes must not rewrite historical campaign evidence.
|
||||
- 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.
|
||||
The addresses module provides the UI/module boundary for this domain and should
|
||||
grow stable DTOs and capabilities that campaigns, mail, forms, reporting,
|
||||
portal, and postbox modules can consume without direct imports.
|
||||
|
||||
## Integration Contract
|
||||
## Current 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 campaign module asks the platform registry for address capabilities and
|
||||
keeps working when they are absent. It must not import `govoplan-addresses`
|
||||
ORM models, services, or WebUI components.
|
||||
|
||||
When `addresses.lookup` is available, campaign recipient address fields use it
|
||||
for autocomplete. The campaign page may warm a small suggestion cache with an
|
||||
empty query and then query by typed text as the user edits sender, reply-to,
|
||||
global recipient, or per-recipient address fields.
|
||||
|
||||
When `addresses.recipient_source` is available, campaign offers a separate
|
||||
address-book/list import flow. This is for importing reusable recipient sources
|
||||
into the campaign recipient table; normal one-off address entry still happens
|
||||
inside the address fields while typing.
|
||||
|
||||
The capability should return snapshots, not live ORM objects:
|
||||
|
||||
@@ -49,6 +59,11 @@ 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.
|
||||
|
||||
If the source revision changes after import, campaign shows a stale-source
|
||||
warning and lets the user reopen the import dialog with that source preselected.
|
||||
The user still chooses append or replace; campaign should not silently rewrite
|
||||
recipient rows.
|
||||
|
||||
## Non-Goals For Campaign
|
||||
|
||||
Campaign should not become the global address book. It should not own:
|
||||
|
||||
Reference in New Issue
Block a user