Co jsou pravidla oceňování?
Pravidla oceňování (pricing rules) jsou záznamy, které říkají enginu: „Pro tohoto zákazníka (nebo skupinu), v tomto časovém okně, použij tento ceník." Propojují zákazníka nebo skupinu zákazníků s konkrétním ceníkem a určují kategorii ceny — například zda jde o maloobchodní cenu, velkoobchodní sazbu nebo interní nákladovou cenu.
Pravidlo neobsahuje žádné podmínky nad atributy datového záznamu. Výběr konkrétní položky ceníku provede rating engine automaticky podle kódu (code) datového záznamu.
Struktura pravidla oceňování
Pravidlo oceňování se skládá z těchto polí:
| Pole | Povinné | Popis |
|---|---|---|
name | ✓ | Srozumitelný název pravidla |
code | ✓ | Kód pravidla (identifikuje kategorii služby) |
billing_category | ✓ | Typ ceny: cost, retail, wholesale, reseller |
price_list_id | ✓ | ID ceníku, který se použije |
valid_from | ✓ | Začátek platnosti pravidla (ISO datum) |
valid_to | Konec platnosti (NULL = platí neomezeně) | |
customer_id | ID konkrétního zákazníka (NULL = platí pro všechny) | |
group_id | ID skupiny zákazníků | |
priority | Celé číslo, výchozí 0 — vyšší číslo = vyšší priorita | |
scope | self (výchozí), children, subtree | |
is_active | Boolean, výchozí true |
Příklad vytvoření pravidla přes API:
POST /api/v1/pricing-rules
Content-Type: application/json
{
"name": "VIP zákazníci — maloobchodní ceny 2026",
"code": "VIP-RETAIL-2026",
"billing_category": "retail",
"price_list_id": "uuid-cenik-vip",
"group_id": "uuid-skupina-vip",
"priority": 100,
"valid_from": "2026-01-01",
"valid_to": null
}
Jak engine vybírá pravidla?
Při ohodnocování každého datového záznamu (DR) engine projde tyto kroky:
1. Načte skupiny zákazníka Zjistí, do kterých skupin zákazník patří.
2. Načte všechna aktivní pravidla partnera
Filtruje jen pravidla s is_active = true.
3. Vyfiltruje applicable pravidla Pravidlo se považuje za aplikovatelné, pokud splňuje jedno z těchto kritérií:
rule.customer_idodpovídá ID zákazníka DR → pravidlo pro konkrétního zákazníkarule.group_idje ve skupinách zákazníka → pravidlo pro skupinurule.customer_idirule.group_idjsou NULL → výchozí pravidlo (platí pro všechny)
A zároveň musí být DR v časovém okně pravidla:
valid_from ≤ čas DR ≤ valid_to
4. Seřadí podle priority sestupně Pravidlo s nejvyšším číslem priority se zpracuje jako první.
5. Pro každé applicable pravidlo zkusí najít ceníkovou položku
Hledá položku ceníku se stejným code jako má datový záznam (dr.code → price_list_item.code). Pokud existuje, vypočítá cenu a vytvoří ohodnocený záznam. Pokud ne, přeskočí na další pravidlo.
Více ohodnocení jednoho záznamu
Důležitá vlastnost: engine nepřestane po prvním matchujícím pravidle. Projde všechna applicable pravidla a pro každé, kde nalezne odpovídající ceníkovou položku, vytvoří samostatný ohodnocený záznam.
To umožňuje, aby jeden DR dostal zároveň:
- nákladovou cenu (co operátor zaplatí poskytovateli) —
billing_category: "cost" - maloobchodní cenu (co operátor vyúčtuje zákazníkovi) —
billing_category: "retail"
Oba záznamy vzniknou z téhož DR, každý s jiným pravidlem a jiným ceníkem.
Billing category
Pole billing_category definuje typ cenové hladiny. Podporované hodnoty:
| Hodnota | Použití |
|---|---|
cost | Nákladová cena — co operátor platí dodavateli |
retail | Maloobchodní cena — co zákazník platí operátorovi |
wholesale | Velkoobchodní cena — pro B2B prodej |
reseller | Cena pro prodejce (resellery) |
Typická konfigurace pro telekomunikačního operátora má pro každý typ záznamu dvě pravidla: jedno cost (odkaz na nákladový ceník) a jedno retail (odkaz na zákaznický ceník). Tím vzniká kompletní pohled na marži.
Priorita
Priorita je celé číslo — vyšší číslo znamená vyšší prioritu, pravidla se vyhodnocují sestupně. Výchozí hodnota je 0.
Příklad hierarchie:
| Priorita | Zákazník / skupina | Billing category | Ceník |
|---|---|---|---|
| 200 | konkrétní zákazník | retail | Individuální ceník |
| 100 | skupina VIP | retail | VIP ceník |
| 10 | (výchozí) | retail | Standardní ceník |
| 5 | (výchozí) | cost | Nákladový ceník |
Zákazník s individuálním pravidlem dostane prioritu 200 před skupinovým pravidlem s prioritou 100.
Časová platnost pravidla
Na rozdíl od ceníkových verzí má pravidlo oceňování vlastní časové okno: valid_from a valid_to. Díky tomu lze:
- Vytvořit pravidlo pro sezónní akci (
valid_from: "2026-06-01",valid_to: "2026-08-31") - Ukončit platnost starého pravidla bez jeho smazání (nastavit
valid_to) - Nachystat pravidla dopředu — engine je začne aplikovat automaticky ke dni
valid_from
Kombinace valid_from/valid_to na pravidle a valid_from/valid_to na verzi ceníku umožňuje velmi přesné řízení toho, která cena platí v jakém čase.
Deaktivace pravidla
Pokud potřebujete pravidlo dočasně vypnout bez smazání, nastavte is_active: false:
PUT /api/v1/pricing-rules/{id}
Content-Type: application/json
{ "is_active": false }
Deaktivované pravidlo engine při načítání přeskočí. Reaktivace je symetrická: is_active: true.
Výchozí pravidlo (fallback)
Pravidlo bez customer_id i group_id platí pro všechny zákazníky partnera. Slouží jako záchytná síť pro zákazníky, kteří nejsou v žádné specifické skupině:
{
"name": "Standardní retail — všichni zákazníci",
"code": "DEFAULT-RETAIL",
"billing_category": "retail",
"price_list_id": "uuid-standardni-cenik",
"customer_id": null,
"group_id": null,
"priority": 0,
"valid_from": "2026-01-01"
}
Doporučené postupy
Vždy mějte výchozí pravidlo. Zákazník bez jakéhokoliv matchujícího pravidla dostane prázdné ohodnocení — to se projeví jako chyba v reportingu. Výchozí pravidlo s prioritou 0 tuto situaci zachytí.
Nastavujte priority systematicky. Doporučujeme definovat konvenci: např. 1–9 výchozí, 10–99 skupinová, 100+ individuální zákaznická pravidla.
Používejte valid_to místo mazání. Pravidlo s valid_to v minulosti je historicky dohledatelné. Smazané pravidlo v historii chybí.
Pojmenovávejte pravidla srozumitelně. Název "VIP skupina — retail Q1 2026" je za rok stále pochopitelný. "pravidlo_42" není.
Testujte kombinace. Při více applicable pravidlech zkontrolujte, zda kombinace billing categories a ceníků dává smysl — zejména zda každý DR dostane právě jedno retail ohodnocení.
Závěr
Pravidla oceňování jsou flexibilním nástrojem pro přiřazení ceníků zákazníkům a skupinám s podporou více cenových kategorií, časové platnosti a priority. Na rozdíl od systémů s dynamickými podmínkami fungují na principu přímého propojení zákazník/skupina → ceník — jednoduše, přehledně a bez vedlejších efektů. V Kapitole 3 se podíváme na skupiny zákazníků, které tvoří základ segmentace.