Ověření shody s EU
Ověření shody s EU
qr3.app obsahuje integrovaný EU validátor pro digitální pasy produktů (DPP). Kontroluje vaše DPP vůči relevantním předpisům EU (ESPR, Loi AGEC) und poskytuje strukturované problémy (issues) s úrovní závažnosti (severity), cestou k poli, nápovědami a volitelným odznakem ESPR-ready.
Existují tři přístupové body:
- Na straně serveru, již uložené DPP —
GET /v1/dpp/:id/eu-compliance - Živý náhled ve formuláři pro vytvoření —
POST /v1/dpp/validate - Živý simulátor v detailu —
POST /v1/dpp/:id/validate-update
Všechny tři vracejí stejnou strukturu (EuComplianceResult shape) – vyhodnocení tedy stačí implementovat pouze jednou.
Struktura výsledku
{ "compliant": false, "espr_ready": true, "issues": [ { "code": "TEXTILE_AGEC_REQUIRED", "severity": "error", "field": "textile_data.country_weaving_knitting", "message": "AGEC chain country is required for products sold on the French market", "hints": { "market": "FR" } }, { "code": "TEXTILE_GREENWASHING", "severity": "warning", "field": "product_name", "message": "\"natural\" is a prohibited term under AGEC", "hints": { "term": "natural", "locale": "en", "category": "generic" } } ], "summary": { "errors": 1, "warnings": 1, "info": 0 }}compliant: true⇔summary.errors === 0espr_ready: true⇔ jsou nastavena všechna nepovinná pole (opt-in) ESPR (viz Textilní DPP)issues[]je stabilně seřazeno podle závažnosti (error→warning→info) a následně podle kódu
Úrovně závažnosti
| Závažnost | Význam | Příklad |
|---|---|---|
error | Blokuje shodu s EU; měl by být opraven před vydáním | TEXTILE_AGEC_REQUIRED, pokud je FR na trhu a dodavatelský řetězec je neúplný |
warning | Doporučení; uživatel může uložit, ale měl by jednat | TEXTILE_GREENWASHING mimo FR |
info | Stavový signál bez nutnosti akce | TEXTILE_ESPR_READY — všechna nepovinná pole ESPR jsou kompletní |
Katalog pravidel (textil + baterie)
Textil (Q3.3.4)
| Kód | Závažnost | Spouštěč |
|---|---|---|
TEXTILE_AGEC_REQUIRED | error (FR) · warning (ostatní) | Neúplný řetězec AGEC (tkaní/barvení/konfekce), FR je na trhu |
TEXTILE_MICROPLASTICS_CONSISTENCY | error | Syntetika ≥ 50 %, ale contains_microplastics !== true |
TEXTILE_SVHC_THRESHOLD | warning | Záznam SVHC bez čísla CAS nebo koncentrace |
TEXTILE_GREENWASHING | error (FR) · warning (ostatní) | Zakázaný pojem ze seznamu v product_name/material |
TEXTILE_ESPR_READY | info | Všechna ESPR pole B7–B15 jsou kompletní |
Baterie (Fáze 4a)
Validátor kontroluje mezní hodnoty z nařízení EU o bateriích 2023/1542 (prahové hodnoty pro recyklovaný obsah, třídy uhlíkové stopy, minimální záruka atd.). Podrobnosti naleznete v dokumentaci k bateriovým DPP.
Živý náhled ve formuláři pro vytvoření
Jakmile vytvoříte DPP v administraci (/dashboard/dpp/new), běží stejný validátor bezstavově (stateless) při každém ověřovacím cyklu – aniž by bylo nutné pas ukládat. Sekce eu_compliance se zobrazí přímo pod stávajícím validačním panelem a zvýrazní chyby a varování před odesláním (submit).
Přímý přístup přes API:
curl -X POST https://qr3.app/v1/dpp/validate \ -H "Authorization: Bearer $API_KEY" \ -H "X-Workspace-Id: $WS_ID" \ -H "Content-Type: application/json" \ -d '{ "category": "textile", "gtin": "04012345678901", "product_name": "Natural Cotton T-Shirt", "manufacturer": "EcoWear GmbH", "origin_country": "PT", "market_countries": ["FR"], "textile_data": { "fiber_composition": [{ "material": "cotton", "percentage": 100, "recycled_pct": 0 }] } }'Odpověď obsahuje:
data.valid— syntaktická platnost (Zod)data.errors[]— klasické chyby Zoddata.jsonld_preview— náhled JSON-LDdata.eu_compliance— výsledek EU validátoru (null, pokud validace Zod selže)
Pokud je eu_compliance.summary.errors > 0, administrace vykreslí banner Save-Guard přímo nad tlačítkem pro odeslání – uložení není blokováno, ale před kliknutím uvidíte důsledky.
Živý simulátor v detailu
Na adrese /dashboard/dpp/:dppId se pod sekcí compliance nachází karta simulátoru. Umožňuje měnit dvě pole, která jsou pro compliance nejvýznamnější (status a market_countries), a okamžitě vidět dopad – bez zásahu do stávajících dat. Typický postup (flow):
- Náhled: „Co se stane, když do sortimentu přidám FR?“ → vybrat štítek „FR“ → „Preview EU impact“ → zobrazí se
TEXTILE_AGEC_REQUIRED - Oprava: Doplnění dodavatelského řetězce (mimo simulátor v průběhu vytváření nebo hromadného importu)
- Uložení: „Save changes“ uloží stav/seznam trhů přímo přes
PUT /v1/dpp/:id
Přímý přístup přes API:
curl -X POST https://qr3.app/v1/dpp/$DPP_ID/validate-update \ -H "Authorization: Bearer $API_KEY" \ -H "X-Workspace-Id: $WS_ID" \ -H "Content-Type: application/json" \ -d '{ "market_countries": ["DE", "FR"], "status": "live" }'Odpověď rozšiřuje standardní výsledek o objekt preview:
{ "data": { "compliant": false, "espr_ready": false, "issues": [/* … */], "summary": { "errors": 1, "warnings": 0, "info": 0 }, "preview": { "status": "live", "landing_locale": "de", "market_countries": ["DE", "FR"], "changed_fields": ["status", "market_countries"] } }}changed_fields[] uvádí pouze pole, která by se skutečně změnila – v uživatelském rozhraní tak můžete zvýraznit například pouze změněné štítky.
Prázdné tělo (body) je povoleno a vrátí aktuální hodnocení compliance (znovu ověří stávající stav).
Automatizace
CI pipeline
Typická kontrola v rámci CI:
STATUS=$(curl -s -o /tmp/out.json -w "%{http_code}" \ https://qr3.app/v1/dpp/$DPP_ID/eu-compliance \ -H "Authorization: Bearer $API_KEY" \ -H "X-Workspace-Id: $WS_ID")
if [ "$STATUS" != "200" ]; then exit 1fi
jq -e '.data.summary.errors == 0' /tmp/out.json > /dev/nullMCP server
Dodávaný @qr3/mcp-server nabízí mimo jiné nástroj validate_dpp – AI agenti tak mohou před voláním pro vytvoření zkontrolovat, zda poskytnutá data splňují pravidla AGEC.
Časté chyby
| Problém | Příčina | Řešení |
|---|---|---|
TEXTILE_MICROPLASTICS_CONSISTENCY | Podíl polyesteru ≥ 50 %, ale příznak je false | Nastavit contains_microplastics: true |
TEXTILE_AGEC_REQUIRED s hints.market: "FR" | FR je na trhu, řetězec je neúplný | Nastavit country_weaving_knitting, country_dyeing_printing, country_assembly |
TEXTILE_GREENWASHING jako error | Zakázaný pojem + FR na trhu | Odstranit pojem z product_name nebo upravit trh |
TEXTILE_SVHC_THRESHOLD | Látka SVHC bez CAS | Zadat číslo CAS ze seznamu REACH |
Další kroky
- Textilní DPP — schéma, dodavatelský řetězec, varovný box pro mikroplasty
- Bateriový DPP — povinná pole pro bateriový pas
- API reference — detailní přehled všech koncových bodů pro EU compliance