/ REMP integrace Interní dokument

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)

OblastFolio CMSEcoidentitaREMP CRMREMP CampaignREMP MailerREMP SSO
Obsah – články, stránkyR/A
Paywall UI (lock/unlock na frontendu)R/AC
Paywall tagy (označení obsahu)R/AI
Entitlement check (má uživatel přístup?)C (cache)R/A
Produkty, předplatné plányR/A
Checkout flowC (UI)R/A
Platby, recurring billingR/A
Self-care uživatele (profil, předplatné)CR/A
Registrace / login čtenářeCR/AC
Admin login (REMP nástroje)R/A
Bannery, onsite kampaněC (showtime snippet)R/A
Segmentace uživatelůIR/ACC
Newsletter content authoring (WYSIWYG, linky, média)R/AC
Newsletter delivery, recipients, subscriptionsCC (segmenty / user list)R/A
Transakční e-maily (objednávka, platba)RA
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ánky
  • Folio::User — uživatel (staff + reader), s remp_user_id pro mapping
  • Economia::Remp::EntitlementCache — Redis cache pro entitlement výsledky
  • Economia::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é, entitlementy
  • crm-payments-module — platby, recurring billing
  • crm-products-module — produkty a plány
  • crm-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.js na frontendu předává showtime data)

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

  1. Folio CMS zjistí, že článek má PaywallTag
  2. Folio ověří, zda je uživatel přihlášen (session / Ecoidentita token)
  3. Pokud přihlášen → Folio zavolá REMP CRM GET /api/v1/users/{user_id}/access?content_type={tag}
  4. REMP CRM vrátí { "has_access": true/false }
  5. Folio renderuje obsah nebo paywall lock

Scénář B: Uživatel dokončí nákup

  1. Uživatel projde checkout flow v REMP CRM (nebo CMS UI volající CRM API)
  2. REMP CRM zpracuje platbu přes platební bránu
  3. REMP CRM vytvoří subscription, aktivuje entitlement
  4. Při dalším požadavku na paywallový obsah → CMS volá entitlement API → uživatel autorizován
  5. CMS invaliduje entitlement cache pro daného uživatele

Scénář C: Redaktor vytvoří newsletter

  1. Redaktor v Folio CMS připraví newsletter po obsahové stránce (text, prolinky, média, výběr článků)
  2. CMS vyrenderuje email-safe HTML/text a předá template do REMP Mailer API: POST /api/v1/mailers/templates
  3. CMS vytvoří v Maileru job: POST /api/v2/mailers/jobs
  4. Mailer vybere příjemce dle vlastních mail types / segmentů / subscription pravidel
  5. 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

  1. Stránka Folio CMS obsahuje remplib.js snippet
  2. remplib volá Campaign showtime endpoint
  3. Campaign vyhodnotí segment rules (např. anonymous / subscriber / non-subscriber)
  4. Vrátí konfiguraci onsite self-promo banneru
  5. 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 / PaywallTagsPřímo ovlivněno – PaywallTags musí být konzumovatelné REMP CRM
03 – Subscriptions & RecurringPřechází do REMP CRM (FatChilli); CMS řeší jen integrační vrstvu
06 – PaywallUI paywall lock/unlock musí volat REMP CRM entitlement API
09 – Email NotificationsTransakční e-maily (objednávka, platba) přes REMP Mailer; systémové e-maily zůstávají v CMS
34 – EcoidentitaUser provisioning do REMP CRM musí být součástí Ecoidentita flow
INT-12 – GTM pro webKoexistence s remplib.js – nesmí se duplikovat tracking
HN-13-US01 – Disable ads for subsEntitlement check z REMP CRM může sloužit i pro ad-blocking logic