feat(templates): add localized push templates and actions

Share template keys across email and push with independent editors and revisions. Render localized actions and preserve version-one delivery.

Ref: IT-1627
This commit is contained in:
2026-10-31 09:38:05 +02:00
parent d4ee8fc0c8
commit aba4173827
79 changed files with 3906 additions and 104 deletions
+25
View File
@@ -166,3 +166,28 @@ runtime validation remain separate pending work. TeamCity main triggers include
checks, image publication, Contracts publication and production deployment. The owner
explicitly authorized this automatic production consequence for the Notification Service
delivery on 2026-10-24. It does not authorize delivery of the remaining Invemory repositories.
## Template action increment — 2026-10-31 (historical initial implementation)
The new template worker emits FCM data version 2 with localized buttons and a
primary action, each carrying an opaque action key and objectId. This supersedes
the ready-made title/body/route send format above for current Notification Service
source. The owner explicitly chose no old-format compatibility branches. The
installed Invemory client and its producers are not updated in this increment;
version 2 action display/tap handling must be implemented before activating the new
producer. See [channel templates](channel-template-model.md) for the full contract.
### Superseding compatibility decision
The owner subsequently required compatibility within the same Firebase channel.
Requests with no version or version=1 again accept ready-made title/body and emit
the original version=1, route=/home data envelope. Only explicit version=2 renders
templates and action metadata; unknown versions fail. Section actions allow missing
objectId. Android's current version=1 validator remains unchanged and supported.
Channel test-send now selects legacy simple notification or version 2 with one
localized button. The latter requires a real installation binding and a
consumer-supported section action key; it uses the new data-envelope format and
does not claim old clients can show buttons. Both modes use the same saved or
unsaved Firebase credentials and never modify the channel. Capability registration
and installation-based producer routing are deferred to Invemory integration.