Přeskočit na obsah

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:

  1. Na straně serveru, již uložené DPPGET /v1/dpp/:id/eu-compliance
  2. Živý náhled ve formuláři pro vytvořeníPOST /v1/dpp/validate
  3. Živý simulátor v detailuPOST /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: truesummary.errors === 0
  • espr_ready: true ⇔ jsou nastavena všechna nepovinná pole (opt-in) ESPR (viz Textilní DPP)
  • issues[] je stabilně seřazeno podle závažnosti (errorwarninginfo) a následně podle kódu

Úrovně závažnosti

ZávažnostVýznamPříklad
errorBlokuje shodu s EU; měl by být opraven před vydánímTEXTILE_AGEC_REQUIRED, pokud je FR na trhu a dodavatelský řetězec je neúplný
warningDoporučení; uživatel může uložit, ale měl by jednatTEXTILE_GREENWASHING mimo FR
infoStavový signál bez nutnosti akceTEXTILE_ESPR_READY — všechna nepovinná pole ESPR jsou kompletní

Katalog pravidel (textil + baterie)

Textil (Q3.3.4)

KódZávažnostSpouštěč
TEXTILE_AGEC_REQUIREDerror (FR) · warning (ostatní)Neúplný řetězec AGEC (tkaní/barvení/konfekce), FR je na trhu
TEXTILE_MICROPLASTICS_CONSISTENCYerrorSyntetika ≥ 50 %, ale contains_microplastics !== true
TEXTILE_SVHC_THRESHOLDwarningZáznam SVHC bez čísla CAS nebo koncentrace
TEXTILE_GREENWASHINGerror (FR) · warning (ostatní)Zakázaný pojem ze seznamu v product_name/material
TEXTILE_ESPR_READYinfoVš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:

Terminál
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 Zod
  • data.jsonld_preview — náhled JSON-LD
  • data.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):

  1. Náhled: „Co se stane, když do sortimentu přidám FR?“ → vybrat štítek „FR“ → „Preview EU impact“ → zobrazí se TEXTILE_AGEC_REQUIRED
  2. Oprava: Doplnění dodavatelského řetězce (mimo simulátor v průběhu vytváření nebo hromadného importu)
  3. Uložení: „Save changes“ uloží stav/seznam trhů přímo přes PUT /v1/dpp/:id

Přímý přístup přes API:

Terminál
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:

Terminál
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 1
fi
jq -e '.data.summary.errors == 0' /tmp/out.json > /dev/null

MCP 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émPříčinaŘešení
TEXTILE_MICROPLASTICS_CONSISTENCYPodíl polyesteru ≥ 50 %, ale příznak je falseNastavit 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 errorZakázaný pojem + FR na trhuOdstranit pojem z product_name nebo upravit trh
TEXTILE_SVHC_THRESHOLDLátka SVHC bez CASZadat čí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