01 — Hranice odpovědnosti mezi systémy
Přehled systémů
┌────────────────────────────────────────────────────────────────┐
│ Economia Ecosystem │
│ │
│ ┌──────────────────────────────┐ ┌──────────────────────┐ │
│ │ Folio CMS │ │ Ecoidentita │ │
│ │ (obsah, šablony, paywall │ │ (SSO provider, │ │
│ │ UI, integrační vrstva) │ │ jednotná identita) │ │
│ └──────────────┬──────────────┘ └──────────┬───────────┘ │
│ │ │ │
│ │ Rails monolith │ │
└─────────────────┼─────────────────────────────┼───────────────┘
│ │
│ HTTP API │ SSO / userinfo
▼ ▼
┌────────────────────────────────────────────────────────────────┐
│ REMP Stack (FatChilli) │
│ │
│ ┌─────────┐ ┌───────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ SSO │ │ Campaign │ │ Mailer │ │ CRM │ │
│ │ (admin │ │ (bannery, │ │ (e-mail, │ │ (users, │ │
│ │ auth) │ │ A/B) │ │ NL) │ │ subs, │ │
│ └─────────┘ └───────────┘ └──────────┘ │ payments, │ │
│ │ products, │ │
│ ┌─────────────────────────┐ │ checkout, │ │
│ │ Beam (fáze 2 — excluded)│ │ self-care, │ │
│ │ (tracking, analytics) │ │ entitlement)│ │
│ └─────────────────────────┘ └──────────────┘ │
└────────────────────────────────────────────────────────────────┘
Matice odpovědností (RACI)
| Oblast | Folio CMS | Ecoidentita | REMP CRM | REMP Campaign | REMP Mailer | REMP SSO |
|---|---|---|---|---|---|---|
| Obsah – články, stránky | R/A | — | — | — | — | — |
| Paywall UI (lock/unlock na frontendu) | R/A | — | C | — | — | — |
| Paywall tagy (označení obsahu) | R/A | — | I | — | — | — |
| Entitlement check (má uživatel přístup?) | C (cache) | — | R/A | — | — | — |
| Produkty, předplatné plány | — | — | R/A | — | — | — |
| Checkout flow | C (UI) | — | R/A | — | — | — |
| Platby, recurring billing | — | — | R/A | — | — | — |
| Self-care uživatele (profil, předplatné) | — | C | R/A | — | — | — |
| Registrace / login čtenáře | C | R/A | C | — | — | — |
| Admin login (REMP nástroje) | — | — | — | — | — | R/A |
| Bannery, onsite kampaně | C (showtime snippet) | — | — | R/A | — | — |
| Segmentace uživatelů | I | — | R/A | C | C | — |
| Newsletter content authoring (WYSIWYG, linky, média) | R/A | — | — | — | C | — |
| Newsletter delivery, recipients, subscriptions | C | — | C (segmenty / user list) | — | R/A | — |
| Transakční e-maily (objednávka, platba) | — | — | R | — | A | — |
| Tracking & analytics (fáze 2) | — | — | — | — | — | — |
R = Responsible, A = Accountable, C = Consulted, I = Informed
Detailní vymezení
1. Folio CMS
Vlastní:
- Redakční workflow (vytváření, editace, publikace článků)
- TipTap obsah a metadata článků
- PaywallTag CRUD a přiřazení k rubrikám, tagům, článkům
- Šablony a layout stránek
- Frontend rendering včetně paywall UI (zamknutý/odemknutý obsah)
- Administrátorská konzole pro redaktory
- Media management
Integrační vrstva (volá REMP API):
- Entitlement cache (Redis) — cachuje výsledek REMP CRM entitlement check pro snížení latence
- User sync — po přihlášení přes Ecoidentita synchronizuje Folio::User → REMP CRM
- Paywall UI rendering — na základě odpovědi z REMP CRM API zobrazí locked/unlocked obsah
- Checkout UI — může poskytnout frontend, ale backend logika (platba, subscription) je v REMP CRM
Deleguje na REMP:
- Rozhodnutí o oprávnění ke čtení (entitlement check) → REMP CRM API
- Produkty, předplatné, platby, recurring billing → REMP CRM
- Self-care (správa předplatného) → REMP CRM
- Showtime bannery → Campaign JS snippet
- Newsletter přihlášky a odesílání → Mailer API
Kód a třídy:
Economia::Article— hlavní model článku (STI)Economia::Article::PaywallTag— asociace paywall tagůFolio::Page— statické stránkyFolio::User— uživatel (staff + reader), sremp_user_idpro mappingEconomia::Remp::EntitlementCache— Redis cache pro entitlement výsledkyEconomia::Remp::UserSyncService— synchronizace uživatelů do CRM
2. Ecoidentita (SSO)
Vlastní:
- SSO redirect + userinfo flow pro čtenáře
- Jednotné přihlášení / registrace across ECO weby (HN, Respekt, …)
- Správa konsentů
Deleguje:
- Po autentizaci vytvoří/nalinkuje uživatele v Folio (
Folio::User) a v REMP CRM
3. REMP CRM (FatChilli — nahrazuje Boutique)
Vlastní (source of truth):
- Uživatelská databáze (sync z Ecoidentita/CMS)
- Definice produktů a předplatných plánů
- Checkout a subscription lifecycle (create/renew/cancel/upgrade)
- Platby a recurring billing
- Self-care uživatele (správa předplatného, profilu)
- Entitlement rules a API (může uživatel X číst obsah Y?)
- Segment provider pro Campaign a Mailer
- Přehled uživatelů, předplatných, plateb v admin panelu
Přijímá data z:
- Ecoidentita/Folio (user created/updated — sync)
Poskytuje data pro:
- Folio CMS (entitlement check API, subscription stav)
- Campaign (segmenty uživatelů)
- Mailer (seznam uživatelů, segmenty)
Kód a moduly:
crm-users-module— uživatelécrm-subscriptions-module— předplatné, entitlementycrm-payments-module— platby, recurring billingcrm-products-module— produkty a plánycrm-segment-module— segmentace
4. REMP Campaign
Vlastní:
- Bannery a kampaně (vytváření, plánování, cílení)
- A/B testing
- Showtime pravidla (kdy, komu, jaký banner)
- Segment cache pro real-time cílení
Přijímá data z:
- REMP CRM (segmenty uživatelů)
- Folio CMS (
remplib.jsna frontendu předáváshowtimedata)
5. REMP Mailer
Vlastní:
- Mail typey (newsletter kategorie)
- Template storage, layouts a renderovací wrapper
- Hromadné odesílání (jobs)
- User subscription na mail typey (kdo odebírá co)
- Hermes queue (Redis) pro async zpracování
- Delivery, unsubscribe logiku a delivery statistiky
Přijímá data z:
- REMP CRM (seznam uživatelů, segmenty)
- Folio CMS (hotový newsletter obsah / HTML / metadata přes API handoff)
Datové toky (hlavní)
Čtenář se registruje/přihlásí
│
▼
Ecoidentita (SSO)
│
├──▶ Folio CMS → vytvoří/nalinkuje Folio::User
│
└──▶ REMP CRM → vytvoří/nalinkuje CRM User
(webhook nebo sync API)
Čtenář kupuje předplatné
│
▼
REMP CRM (checkout, platba, subscription)
│
├──▶ Platební brána (GoPay / Stripe / …)
│
└──▶ Subscription created → entitlement aktivní
CMS cachuje výsledek při dalším page load
Článek je zobrazen
│
▼
Folio CMS frontend
│
├──▶ Server-side: Je paywall?
│ └──▶ REMP CRM API: GET /api/v1/users/{id}/subscriptions
│ └──▶ Vrátí entitlement → render locked / unlocked
│
└──▶ Client-side: remplib.js → Campaign showtime
└──▶ Banner pro nepředplatitele / upsell
Scénáře na hranici systémů
Scénář A: Uživatel přijde na paywallový článek
- Folio CMS zjistí, že článek má
PaywallTag - Folio ověří, zda je uživatel přihlášen (session / Ecoidentita token)
- Pokud přihlášen → Folio zavolá REMP CRM
GET /api/v1/users/{user_id}/access?content_type={tag} - REMP CRM vrátí
{ "has_access": true/false } - Folio renderuje obsah nebo paywall lock
Scénář B: Uživatel dokončí nákup
- Uživatel projde checkout flow v REMP CRM (nebo CMS UI volající CRM API)
- REMP CRM zpracuje platbu přes platební bránu
- REMP CRM vytvoří subscription, aktivuje entitlement
- Při dalším požadavku na paywallový obsah → CMS volá entitlement API → uživatel autorizován
- CMS invaliduje entitlement cache pro daného uživatele
Scénář C: Redaktor vytvoří newsletter
- Redaktor v Folio CMS připraví newsletter po obsahové stránce (text, prolinky, média, výběr článků)
- CMS vyrenderuje email-safe HTML/text a předá template do REMP Mailer API:
POST /api/v1/mailers/templates - CMS vytvoří v Maileru job:
POST /api/v2/mailers/jobs - Mailer vybere příjemce dle vlastních mail types / segmentů / subscription pravidel
- Mailer odešle newsletter přes SMTP a vede delivery statistiky
Scénář D: Návštěvník vidí self-promo / paywall upsell banner
- Stránka Folio CMS obsahuje
remplib.jssnippet - remplib volá Campaign showtime endpoint
- Campaign vyhodnotí segment rules (např. anonymous / subscriber / non-subscriber)
- Vrátí konfiguraci onsite self-promo banneru
- remplib vykreslí upsell / trial / registrační CTA
Poznámka: Toto není totéž co reklamní stack Economia (Yield / Sasic / další adtech). REMP Campaign zde modelujeme jako vrstvu pro onsite self-promo a paywall messaging. Klasická display reklama zůstává v CMS / Yield / Sasic integraci. Pokud některý subscription tier znamená “bez reklam”, musí se tento stav propsat do reklamního stacku odděleně od REMP Campaign.
Dopad na stávající práce (HN.cz epics)
| Epic (HN.cz) | Vztah k REMP integraci |
|---|---|
| 01 – Definice produktu / PaywallTags | Přímo ovlivněno – PaywallTags musí být konzumovatelné REMP CRM |
| 03 – Subscriptions & Recurring | Přechází do REMP CRM (FatChilli); CMS řeší jen integrační vrstvu |
| 06 – Paywall | UI paywall lock/unlock musí volat REMP CRM entitlement API |
| 09 – Email Notifications | Transakční e-maily (objednávka, platba) přes REMP Mailer; systémové e-maily zůstávají v CMS |
| 34 – Ecoidentita | User provisioning do REMP CRM musí být součástí Ecoidentita flow |
| INT-12 – GTM pro web | Koexistence s remplib.js – nesmí se duplikovat tracking |
| HN-13-US01 – Disable ads for subs | Entitlement check z REMP CRM může sloužit i pro ad-blocking logic |