Přeskočit na obsah

A507 — Vrstvy validace

Pět vrstev kontrol, každá s jedním vlastníkem: tvar, referenční integrita, redakční sémantika, parita tabulky a expanze JSON-LD.

A507Datový model 12 minVývojářMaintainer

Po téhle lekci

  • Přiřadíte typ chyby ke správné vrstvě validace.
  • Vysvětlíte, proč má každé pravidlo právě jednoho vlastníka.
  • Poznáte, co validace principiálně nezachytí.

Kontroly kanonických dat jsou rozdělené do vrstev a každé pravidlo má právě jednoho vlastníka. Kdyby stejnou věc hlídaly dvě vrstvy, jedna by se při změně opravila a druhá ne.

VrstvaCo hlídá
Tvartypy, povinná pole, formáty @id a dat, uzavřené číselníky
Referenční integritaunikátní @id, soulad cesty s @id, odkazy v rámci dossieru, obousměrná vazba tvrzení ↔ zdroj
Redakční sémantikapravidla stavů, autorizace, subjektové uzly grafu, souvislost, jeden vydavatel = jeden hlas
Parita tabulkyřádek přehledu vs. kanonický záznam, byte na byte, 1:1 v obou směrech
Expanze JSON-LDdokument se rozbalí proti lokálnímu kontextu, bez sítě

Všechno spouští jeden příkaz:

npm run data:validate

Pro rychlou smyčku nad jedním záznamem během psaní:

npm run data:validate -- --file data/dossiers/<slug>/claims/clm-NN.json

Dvě sémantická pravidla, která stojí za pozornost

Stav vs. struktura zdrojů. Stav „ověřeno více zdroji“ neprojde bez dvojice lišící se rodinou i registrovanou doménou vydavatele. A naopak: stav „1 zdroj“ neprojde, když taková dvojice existuje. Chybu tedy nejde udělat ani jedním směrem.

Jeden vydavatel = jeden hlas. Porovnává se outlet i doména url. Dva texty téže redakce nezaloží nezávislost, ať mají rodiny jakékoli.

Ověř si, že to sedí

Build spadne na tom, že text tvrzení neodpovídá řádku v tabulce. Která vrstva to hlásí a co je nejspíš příčina?

Zobrazit odpověď

Hlásí to parita tabulky — a příčina je skoro vždycky stejná: změna se udělala na jednom ze dvou míst.

Tvrzení je jediný záznam v celém modelu, který má dvě ručně udržované reprezentace: kanonický JSON a řádek přehledové tabulky v dossier.json. Obě se editují ručně a obě musí souhlasit v textu, stavu, popisku i seznamu zdrojů — a množiny si musí odpovídat 1:1 v obou směrech.

Oprava je mechanická: srovnat obě místa a spustit npm run data:build.

Za pozornost stojí, proč to takhle je. Bylo by snadné tabulku generovat a brány se zbavit. Zůstává ručně psaná schválně, protože je to to, co editor opravdu edituje spolu se záznamy — a brána zaručuje, že se ty dvě věci nemůžou rozejít potichu. Cena je tenhle občasný pád buildu; alternativou by byl čtenář, který vidí v tabulce jiné znění než na stránce tvrzení.

Kanonické znění pojmů

Lekce pojem vysvětluje. Závazná definice je tady — když se rozejdou, platí tahle stránka.