Přeskočit na obsah
Společný návrh kalkulaček

Sjednocení úrazového a cestovního srovnávače: rozhodovací podklad

Stav k 2. 11. 2026 · Travel 0.21.2 · Úraz 0.14.1

Srovnání úrazu 0.14.1 a travelu 0.21.2 a návrh pravidel pro další verze. Výsledky slouží k rozhodnutí o společném designu a přípravě na Ferdu.

Původní WordPress stylopis · Aktuální pravidla vývoje

Shrnutí

Směry A / B / C

Jde o návrhy pro rozhodnutí, nikoli o schválené řešení.

A · Cílené opravy

Upravit jednotlivé texty, chyby a nápadné odchylky v nových samostatných verzích.

Přínos: Rychlé snížení rizika zavádějícího modelového potvrzení a drobných UI rozdílů.

Náklady: Každou změnu je třeba udržovat ve dvou rendererech.

Riziko: Další CSS vrstvy a výjimky zvýší drift.

Doporučení: Vhodná první etapa i při volbě B; sama nestačí jako dlouhodobý systém.

B · Sdílené komponenty a kontrakty

Společné významové tokeny, hlavička, fáze a podkroky, Field, Action, Offer, Summary, Dialog a patička; produktové modely zůstávají oddělené.

Přínos: Menší drift vzhledu i chování a jedna přejímací sada pro společné role.

Náklady: Vyžaduje vlastníka komponent, mapu CSS kaskády a migraci po částech.

Riziko: Neověřený společný renderer by mohl změnit validaci a návrat mezi kroky.

Doporučení: Doporučený směr, pouze po schválení; pilotovat malé společné role a měřit regresi v obou produktech.

C · Univerzální průchod

Jeden router a datový model s produktovými konfiguracemi pro oba srovnávače.

Přínos: Potenciálně jeden runtime a méně duplikace navigační logiky.

Náklady: Velká migrace dat, dokumentů, výpočtů a všech stavových přechodů.

Riziko: Konfigurace skryje podstatně odlišné produktové otázky a rozšíří testovací matici.

Doporučení: Nyní nevolit; nejprve prokázat potřebu sdílet procesní logiku, nejen vzhled.

Vzájemné srovnání

OblastDoménaPriorita / typÚrazTravelNávrh cíleStav a důkazy
Oblast:
CMP-01
Hlavička
Doména:
Layout
Priorita:
P3
Již společné
Úraz:
Travelová hlavička s úrazovým e-mailem.
Travel:
Výchozí hlavička s cestovním e-mailem.
Návrh:
Udržovat jednu vizuální roli a produktový kontakt; žádný odkaz na galerii v travelu.
Stav:
Oblast:
CMP-02
Hero a produktový příslib
Doména:
Obsah + vzhled
Priorita:
P2
Sjednotit
Úraz:
48/34 px, váha 600; dvě výhody viditelné i na 375 px.
Travel:
48/34 px, váha 600; na mobilu výhody skryté a před formulářem pozvánka Alexe.
Návrh:
Společný hero layout a role textů; produktové sliby a alternativní vstup ponechat.
Stav:
Oblast:
CMP-03
Plochy a patička
Doména:
Vzhled
Priorita:
P3
Již společné
Úraz:
Šedá stránka, bílé panely a patička #003B71.
Travel:
Stejné základní plochy a patička #003B71.
Návrh:
Stabilní tokeny, kontrola všech stavů; modrý footer je uzavřené zadání.
Stav:
Oblast:
CMP-04
Malý sekční nadpis
Doména:
Vzhled
Priorita:
P3
Již společné
Úraz:
Červený #F42534 po poslední akcentové vrstvě.
Travel:
Stejný červený #F42534 včetně dynamických kroků.
Návrh:
Držet samostatnou roli kicker; nesměšovat s cenou ani chybou.
Stav:
Oblast:
CMP-05
Hlavní a vedlejší akce
Doména:
Interakce
Priorita:
P1
Sjednotit
Úraz:
Zelené pokračování s bílým textem; navy sekundární akce.
Travel:
Stejné role, ale různé stavy hover/fokus.
Návrh:
Jeden Action kontrakt včetně disabled důvodu, fokusu a názvu účinku; bílý text zůstává.
Stav:
Oblast:
CMP-06
Čtyři fáze a podkroky
Doména:
Navigace
Priorita:
P2
Sjednotit
Úraz:
Čtyři fáze; mobil ukazuje i podkrok typu Úprava nabídky.
Travel:
Čtyři fáze; mobil častěji zobrazuje jen fázi 1/4, uvnitř více než jednu obrazovku.
Návrh:
Fáze i podkrok mají mít pravdivý název, návrat a uchovaný stav.
Stav:
Oblast:
CMP-07
Rozsah prvního formuláře
Doména:
Formulář
Priorita:
P2
Ponechat produktové
Úraz:
Věk, zaměstnání a kontakt; krytí později.
Travel:
Destinace, termín, čtyři věkové kategorie, zvířata, storno a doprava před výsledky.
Návrh:
Sdílet pravidla pro skupiny a CTA; počet otázek odpovídá výpočtu produktu.
Stav:
Oblast:
CMP-08
Pole a čitelnost na mobilu
Doména:
Formulář
Priorita:
P2
Sjednotit
Úraz:
Jméno a věk 16 px/8 px, výška 48 px.
Travel:
Jméno 14 px/7 px; datum 12 px/7 px, výška 48 px.
Návrh:
Rozhodnout nový společný Field, navržených 16 px/8 px; ověřit nativní datum na telefonu.
Stav:
Oblast:
CMP-09
Chybové a podmíněné stavy
Doména:
Přístupnost
Priorita:
P1
Sjednotit
Úraz:
Vlastní `shared/ui.js` vytváří aria-invalid a vazby chyb; profesi lze hledat lokálně.
Travel:
`assets/app.js` přesouvá fokus na první chybu; Jiná země otevře povinný select, jeho popis chyby je třeba prověřit.
Návrh:
Kontrakt label–hint–error, oprava a návrat fokusu; skryté pole nesmí blokovat.
Stav:
Oblast:
CMP-10
Časování kontaktu
Doména:
Produktová politika
Priorita:
P1
Ověřit
Úraz:
E-mail povinný před výběrem krytí, telefon nepovinný.
Travel:
Kontakt až po výběru nabídky; telefon povinný.
Návrh:
Rozhodnout účel a povinnost podle procesu, ne podle vizuální shody. Model nic neodesílá.
Stav:
Oblast:
CMP-11
Volby produktu
Doména:
Výpočet + obsah
Priorita:
P2
Ponechat produktové
Úraz:
Rizika, částky, frekvence placení, případně obmyšlené osoby.
Travel:
Země, délka cesty, cestující, zvířata, aktivity a storno.
Návrh:
Společné Choice/Counter vzory, produktové číselníky a výpočet nedotýkat.
Stav:
Oblast:
CMP-12
AI a přímá cesta
Doména:
Průchod
Priorita:
P1
Již společné
Úraz:
Úrazový model funguje bez živé integrace.
Travel:
Travel má Alexe a DNA, ale také klasický formulář a přímou offline mapu rizik.
Návrh:
Každá prezentovaná větev musí mít místní/ruční výsledek a pokračování.
Stav:
Oblast:
CMP-13
Seznam nabídek
Doména:
Nabídky
Priorita:
P2
Ponechat produktové
Úraz:
Porovnávací tabulka podle rizik a nastavení vybrané pojišťovny.
Travel:
22 modelových variant v trojsloupcové mřížce; mobilní dlouhý sloupec.
Návrh:
Společná kostra Offer, ale produktové pořadí, limity a časová jednotka ceny.
Stav:
Oblast:
CMP-14
Detail a akce nabídky
Doména:
Nabídky + text
Priorita:
P1
Sjednotit
Úraz:
Vybraná nabídka vede k doladění krytí a placení.
Travel:
Výchozí karta má Vybrat; detail obsahuje Sjednat tuto variantu, přesto následují údaje.
Návrh:
Výběr označit jako výběr, sjednání neuvádět před skutečným účinkem; detail musí mít podklady.
Stav:
Oblast:
CMP-15
Porovnání bez AI
Doména:
Nabídky
Priorita:
P2
Sjednotit
Úraz:
Riziková matice a podklady dávají srovnání bez AI.
Travel:
Porovnat vedle sebe je vedle volitelného Alexova vysvětlení.
Návrh:
Porovnání nesmí být závislé na AI; disabled stav vysvětluje potřebný výběr 2–3 variant.
Stav:
Oblast:
CMP-16
Vybraná společnost a cena
Doména:
Nabídky
Priorita:
P2
Sjednotit
Úraz:
Úraz `checkout-offer-header strong` má cenu modrou rgb(0,59,113).
Travel:
Travel `.selected-summary__price` je modrá rgb(0,46,95); cena za celou cestu.
Návrh:
Ukázat logo, produkt, cenu s jednotkou, změnu výběru a modelový původ dat.
Stav:
Oblast:
CMP-17
Osoby a pojistník
Doména:
Formulář
Priorita:
P2
Ponechat produktové
Úraz:
Jeden pojištěný, případně jiný pojistník a další otázky.
Travel:
Opakovaní cestující; pojistník může být zároveň cestující.
Návrh:
Sdílet pole, validaci a vysvětlení rolí; opakování a podmínky jsou produktové.
Stav:
Oblast:
CMP-18
Rekapitulační gramatika
Doména:
Rekapitulace
Priorita:
P2
Sjednotit
Úraz:
Samostatné bílé panely, krátké červené linky pod sekčními titulky.
Travel:
Jedna bílá karta, šedé skupiny, delší červené linky.
Návrh:
Zvolit společný Summary vzor s produktem specifickými sekcemi a ověřit skenování na mobilu.
Stav:
Oblast:
CMP-19
Barva hlavní ceny
Doména:
Vzhled
Priorita:
P2
Ověřit
Úraz:
Rekapitulace `.price-summary > strong` modrá rgb(0,46,95).
Travel:
Výsledky/údaje modré, rekapitulace `.recap-product > strong` červená rgb(244,37,52).
Návrh:
Výjimku travelové ceny rozhodnout výslovně; červený kicker zůstává uzavřený.
Stav:
Oblast:
CMP-20
Dialogy na mobilu
Doména:
Dialog
Priorita:
P2
Sjednotit
Úraz:
Nativní `#detail-dialog` je na 375 px spodní panel; fokus se vrací na kartu.
Travel:
Travel `#activity-editor-modal` zůstává středový; jiné detailové dialogy jsou spodní panel.
Návrh:
Jednotný dialogový kontrakt; mobilní polohu volit podle délky a úkolu.
Stav:
Oblast:
CMP-21
Modelové dokončení
Doména:
Pravdivost
Priorita:
P1
Sjednotit
Úraz:
Konec říká Vše je připravené; explicitní modelovost je v jiných krocích.
Travel:
Pojištění je sjednáno, e-mail jsme poslali a GoPay; integrace je vypnutá.
Návrh:
Na kritických obrazovkách pojmenovat simulaci a neprohlašovat skutečný právní ani finanční účinek.
Stav:
Oblast:
CMP-22
Indexační politika náhledů
Doména:
Metadata
Priorita:
P2
Ověřit
Úraz:
Veřejné HTML nemá noindex ani X-Robots-Tag v ověřené odpovědi.
Travel:
HTML má noindex,nofollow; odpověď nemá X-Robots-Tag.
Návrh:
Rozhodnout jednotnou politiku prototypů; noindex není řízení přístupu.
Stav:

Rozhodnutí k projednání

Pracovní volby nejsou schválení. Zůstávají v tomto prohlížeči; export se uloží jako místní soubor, nic se neodesílá.
D01 · Rozsah sjednocení

Vizuální podobnost sama nepotvrzuje potřebu jednoho procesu; varianty jsou zatím neschválené.

Priorita: P1

D02 · Kontrast při bílém textu a červeném kickeru

Červený kicker a bílé písmo na zelené jsou potvrzené vizuální role. Dnešní #F42534 a #00B53B mají doložený kontrastní rozpor. Změna konkrétních odstínů je nový návrh k výslovnému schválení; audit ji neprovádí.

Priorita: P1 · Závislosti: D01

D03 · Kdy a proč sbírat kontakt

Úraz vyžaduje e-mail před krytím, travel žádá telefon až po výběru. Účel a povinnost nejsou vizuální token.

Priorita: P1 · Závislosti: D10

D04 · Mobilní fáze a podkrok

Čtyři fáze jsou rozhodnuté, ale mobilní štítky nyní různě vyjadřují vnitřní krok.

Priorita: P2 · Závislosti: D01

D05 · Společná podoba a chování pole

Travel na 375 px používá 12/14 px a radius 7, úraz 16 px/radius 8; obě mají 48px příklady.

Priorita: P2 · Závislosti: D01

D06 · Zobrazení všech travelových nabídek

Jedna mobilní stránka s 22 modelovými variantami je dlouhá; všechny musí zůstat dostupné.

Priorita: P2 · Závislosti: D01

D07 · Rekapitulace a cena

Jedna karta versus více panelů a červená travelová cena mezi jinak modrými cenami vyžadují explicitní volbu.

Priorita: P2 · Závislosti: D01

D08 · Mobilní podoba dialogu

Cestovní editor aktivit je středový, úrazové riziko spodní panel; obě polohy mohou být oprávněné.

Priorita: P2 · Závislosti: D01

D09 · Podoba modelového označení a názvů akcí

Pravdivý popis simulace je již daný rozsahem prototypu. Rozhoduje se způsob jeho zobrazení, nikoli možnost slibovat skutečnou smlouvu nebo e-mail.

Priorita: P1 · Závislosti: D01

D10 · Samostatná brána pro pilot Ferdy

Aktuální produkční integrační smlouva Ferdy nebyla ověřena; místní modelový průchod nesmí začít záviset na živé službě.

Priorita: P1 · Závislosti: D01, D09

D11 · Indexace a přístup k prototypům

Travel má meta noindex,nofollow, úraz ani ověřená odpovědní hlavička noindex nemají. Aktuální indexaci neznáme; noindex není ochrana důvěrných údajů.

Priorita: P1

Pracovní volby se ukládají pouze v tomto prohlížeči.

Obrazové porovnání

Úvod a formulář

Stejná velikost hero, odlišný mobilní obsah a délka prvního zadání.

Výsledky a konfigurace

Jde o produktově různé okamžiky: výběr travel variant a doladění úrazové nabídky.

Údaje osob

Společná pole a validace, rozdílný počet osob a produktové podmínky.

Rekapitulace

Samostatné bílé panely proti jedné kartě se šedými skupinami; travel cena je červenou výjimkou.

Modelové dokončení

Travel zobrazuje formulaci skutečného sjednání, úraz neurčité připravení; oba konce mají říci pravdu o modelu.

Navržený postup

0. Potvrdit rozhodnutí

Výstupy
  • Schválit rozsah A/B/C, modelový jazyk, kontakt, kontrast, Field, nabídky a rekapitulaci.
  • Přiřadit vlastníka každé společné role a zdokumentovat produktové výjimky.
Převzetí
  • Rozhodnutí mají ID, důvod, dopad na oba produkty a datum; pevné uživatelské preference se neotevírají znovu.

1. Cílená oprava P1

Výstupy
  • V nových verzích upravit modelové texty plateb, e-mailů a dokončení.
  • Sjednotit názvy výběru, účel kontaktu a chybové vazby bez změny produktových výpočtů.
Převzetí
  • Demo i prázdný start dokončí průchod offline; žádná obrazovka netvrdí uskutečněné odeslání, platbu ani vznik smlouvy.

2. Pilot sdílených komponent

Výstupy
  • Kontrakt tokenů, Action, Field, hlavičky, fází a patičky.
  • Poté Offer, Summary a Dialog s oddělenými produktovými adaptéry.
Převzetí
  • 375/1440 px, obě aplikace, chybové stavy, klávesnice, mobilní dialogy, návrat a zachování voleb; červené kickery a bílé zelené CTA trvají.

3. Regrese a samostatné nové vydání

Výstupy
  • Reprodukovatelný build, screenshoty, měření, kontrola odkazů a hashů ZIP.
  • Samostatně vyhodnotit Ferda pilot a indexační politiku prototypů.
Převzetí
  • Starší vydání i kořenový /cmp_uraz/ zůstanou byte shodné; žádné síťové API, skutečné smlouvy, zprávy ani platby v modelu.

Hranice návaznosti na Ferdu

Doloženo

  • Současné místní prototypy mají oddělený offline model a úrazový zdrojový vzor CMPFerda.toFerdaDraft; jde o hranici UI, nikoli ověřený request.
  • Historický implementační podklad uvádí identity 130/132/142 a záměry Calc/Buy/Order pro tehdy zkoumanou variantu; neprokazuje aktuální schéma.

Neověřeno

  • Aktuální vlastník, endpointy, autentizace, produktové číselníky, serverová validace, dokumenty, platba a životní cyklus nabídky.
  • Právní a provozní účinek stavů, kontaktní účely a marketingové sliby v reálném procesu.

Další ověření

  • Nejprve čtecí inventura aktuálního vlastníka a smlouvy dat; pak samostatný návrh verzovaného integračního adaptéru.
  • Kontraktní testy Calc/Buy/Order pouze v určeném neprodukčním prostředí po výslovném rozsahu a schválení; selhání adaptéru nesmí zablokovat lokální demo.

Hranice

  • Tento audit nemění kalkulačky, shared build, stará vydání ani kořenový /cmp_uraz/.
  • Neprovádí se skutečné odeslání, platba, smlouva, zpráva ani napojení na živou Ferdu; devel publikace reportu je oddělený úkol.

Metoda, meze a zdroje

Chrome lokálně: 124 zaznamenaných kontextů, 8 modelových průchodů (oba produkty × oba starty × 375 / 1440 px), 22 snímků. Jde o vybrané scénáře, ne úplný audit ani test fyzického telefonu, Safari či čtečky.

Konkrétní příkladTravelÚrazZdroj
Hero H1 · 375 pxPísmo: 34px
Váha: 600
Řádkování: 40.8px
Text: rgb(0, 59, 113)
Písmo: 34px
Váha: 600
Řádkování: 40.8px
Text: rgb(0, 59, 113)
Měření
Pracovní H1 u osob · 375 pxPísmo: 26px
Váha: 600
Řádkování: 33.8px
Text: rgb(0, 59, 113)
Písmo: 26px
Váha: 600
Řádkování: 33.8px
Text: rgb(0, 59, 113)
Měření
Pole: travel datum proti úrazovému věku · 375 pxSelektor: #trip-date-from
Písmo: 12px
Váha: 400
Radius: 7px
Min. výška: 48px
Text: rgb(35, 31, 32)
Pozadí: rgb(255, 255, 255)
Selektor: #profile-age
Písmo: 16px
Váha: 400
Radius: 8px
Min. výška: 48px
Text: rgb(35, 31, 32)
Pozadí: rgb(255, 255, 255)
Měření
Pole: první osobní údaj · 375 pxSelektor: input.
Písmo: 14px
Váha: 400
Radius: 7px
Min. výška: 48px
Text: rgb(35, 31, 32)
Pozadí: rgb(255, 255, 255)
Selektor: #person-first
Písmo: 16px
Váha: 400
Radius: 8px
Min. výška: 48px
Text: rgb(35, 31, 32)
Pozadí: rgb(255, 255, 255)
Měření
Úvodní hlavní akce · 375 pxSelektor: button.button.button--primary.button--large.button--full
Písmo: 16px
Váha: 600
Radius: 8px
Min. výška: 54px
Text: rgb(255, 255, 255)
Pozadí: rgb(0, 181, 59)
Selektor: button.button
Písmo: 17px
Váha: 600
Radius: 8px
Min. výška: 54px
Text: rgb(255, 255, 255)
Pozadí: rgb(0, 181, 59)
Měření
Hero H1 · 1440 pxPísmo: 48px
Váha: 600
Řádkování: 57.6px
Text: rgb(0, 59, 113)
Písmo: 48px
Váha: 600
Řádkování: 55.2px
Text: rgb(0, 59, 113)
Měření
Pracovní H1 u osob · 1440 pxPísmo: 32px
Váha: 600
Řádkování: 41.6px
Text: rgb(0, 59, 113)
Písmo: 32px
Váha: 600
Řádkování: 41.6px
Text: rgb(0, 59, 113)
Měření
Pole: travel datum proti úrazovému věku · 1440 pxSelektor: #trip-date-from
Písmo: 16px
Váha: 400
Radius: 7px
Min. výška: 48px
Text: rgb(35, 31, 32)
Pozadí: rgb(255, 255, 255)
Selektor: #profile-age
Písmo: 16px
Váha: 400
Radius: 8px
Min. výška: 48px
Text: rgb(35, 31, 32)
Pozadí: rgb(255, 255, 255)
Měření
Pole: první osobní údaj · 1440 pxSelektor: input.
Písmo: 16px
Váha: 400
Radius: 7px
Min. výška: 48px
Text: rgb(35, 31, 32)
Pozadí: rgb(255, 255, 255)
Selektor: #person-first
Písmo: 16px
Váha: 400
Radius: 8px
Min. výška: 48px
Text: rgb(35, 31, 32)
Pozadí: rgb(255, 255, 255)
Měření
Úvodní hlavní akce · 1440 pxSelektor: button.button.button--primary.button--large.button--full
Písmo: 16px
Váha: 600
Radius: 8px
Min. výška: 58px
Text: rgb(255, 255, 255)
Pozadí: rgb(0, 181, 59)
Selektor: button.button
Písmo: 17px
Váha: 600
Radius: 8px
Min. výška: 54px
Text: rgb(255, 255, 255)
Pozadí: rgb(0, 181, 59)
Měření

Příklad datum proti věku srovnává různé typy polí. Strojově čitelný souhrn a podrobná měření.

Úplné nezávislé posudky jsou na stránce Odborníci; pravidla jsou verzovaný snímek.