Provjera EU sukladnosti
Provjera EU sukladnosti
qr3.app sadrži integrirani EU validator za Digital Product Passports. On provjerava tvoje DPP-ove u odnosu na relevantne EU propise (ESPR, Loi AGEC) i pruža strukturirane probleme (Issues) s razinom ozbiljnosti (Severity), putanjom polja, napomenama i neobaveznom značkom ESPR-ready.
Postoje tri pristupne točke:
- Na strani poslužitelja, već spremljeni DPP-ovi —
GET /v1/dpp/:id/eu-compliance - Pregled uživo u obrascu za izradu —
POST /v1/dpp/validate - Simulator uživo u detaljima —
POST /v1/dpp/:id/validate-update
Sve tri točke vraćaju isti oblik EuComplianceResult — tako da evaluaciju moraš implementirati samo jednom.
Oblik rezultata
{ "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⇔ sva ESPR-Opt-in polja su postavljena (vidi Tekstilni DPP)issues[]je stabilno sortiran prema razini ozbiljnosti (error→warning→info), a zatim prema kodu
Razine ozbiljnosti
| Severity | Značenje | Primjer |
|---|---|---|
error | Blokira EU sukladnost; trebalo bi ispraviti prije objave | TEXTILE_AGEC_REQUIRED ako je FR na tržištu, a lanac podrijetla je nepotpun |
warning | Preporuka; korisnik može spremiti, ali bi trebao reagirati | TEXTILE_GREENWASHING izvan FR |
info | Statusni signal bez potrebe za djelovanjem | TEXTILE_ESPR_READY — sva ESPR-Opt-in polja su potpuna |
Katalog pravila (Tekstil + Baterija)
Tekstil (Q3.3.4)
| Code | Razina ozbiljnosti | Okidač |
|---|---|---|
TEXTILE_AGEC_REQUIRED | error (FR) · warning (inače) | AGEC lanac (tkanje/bojenje/konfekcija) nepotpun, FR na tržištu |
TEXTILE_MICROPLASTICS_CONSISTENCY | error | Sintetika ≥ 50 %, ali contains_microplastics !== true |
TEXTILE_SVHC_THRESHOLD | warning | SVHC unos bez CAS broja ili koncentracije |
TEXTILE_GREENWASHING | error (FR) · warning (inače) | Pojam s popisa zabranjenih riječi u product_name/material |
TEXTILE_ESPR_READY | info | Sva ESPR polja B7–B15 potpuna |
Baterija (Faza 4a)
Validator provjerava granične vrijednosti iz EU Uredbe o baterijama 2023/1542 (pragovi za reciklirani sadržaj, klase ugljičnog otiska, minimalno jamstvo itd.). Detalji u dokumentaciji za baterijski DPP.
Pregled uživo u obrascu za izradu
Čim izradiš DPP na upravljačkoj ploči (/dashboard/dpp/new), isti validator radi bez stanja (stateless) pri svakom krugu provjere (Validate-Roundtrip) — bez potrebe za spremanjem putovnice. Sekcija eu_compliance pojavljuje se izravno ispod postojećeg panela za validaciju i ističe pogreške i upozorenja prije slanja (Submit).
Izravan pristup API-ju:
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 }] } }'Odgovor sadrži:
data.valid— sintaktička valjanost (Zod)data.errors[]— klasične Zod pogreškedata.jsonld_preview— JSON-LD pregleddata.eu_compliance— rezultat EU validatora (nullako Zod validacija ne uspije)
Ako je eu_compliance.summary.errors > 0, upravljačka ploča prikazuje Save-Guard natpis neposredno iznad gumba za slanje — spremanje nije blokirano, ali vidiš posljedice prije klika.
Simulator uživo u detaljima
Na /dashboard/dpp/:dppId, ispod sekcije za sukladnost, nalazi se kartica simulatora. Ona omogućuje promjenu dvaju polja koja su najvažnija za sukladnost (status i market_countries) te trenutačni prikaz učinka — bez mijenjanja postojećih podataka. Tipičan tijek rada:
- Pregled: “Što se događa ako uvrstim FR u asortiman?” → odaberi oznaku “FR” → “Preview EU impact” →
TEXTILE_AGEC_REQUIREDpostaje vidljiv - Ispravak: upotpuni lanac podrijetla (izvan simulatora u tijeku za izradu ili masovni unos)
- Spremanje: “Save changes” sprema status/popis tržišta izravno putem
PUT /v1/dpp/:id
Izravan pristup API-ju:
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" }'Odgovor proširuje standardni rezultat objektom 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[] navodi samo polja koja bi se stvarno promijenila — tako, na primjer, u korisničkom sučelju možeš istaknuti samo izmijenjene oznake.
Dopušteno je poslati prazno tijelo (body), što vraća trenutačnu procjenu sukladnosti (ponovna provjera stvarnog stanja).
Automatizacija
CI cjevovod
Tipična CI provjera:
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 poslužitelj
Isporučeni @qr3/mcp-server nudi, između ostalog, alat validate_dpp — AI agenti ga mogu koristiti prije poziva za izradu kako bi provjerili jesu li dostupni podaci u skladu s AGEC pravilima.
Česte pogreške
| Problem (Issue) | Uzrok | Rješenje (Fix) |
|---|---|---|
TEXTILE_MICROPLASTICS_CONSISTENCY | Udio poliestera ≥ 50 %, ali je zastavica false | Postavi contains_microplastics: true |
TEXTILE_AGEC_REQUIRED s hints.market: "FR" | FR na tržištu, lanac nepotpun | Postavi country_weaving_knitting, country_dyeing_printing, country_assembly |
TEXTILE_GREENWASHING kao error | Zabranjeni pojam + FR na tržištu | Ukloni pojam iz product_name ili prilagodi tržište |
TEXTILE_SVHC_THRESHOLD | SVHC tvar bez CAS broja | Unesi CAS broj s REACH popisa |
Sljedeći koraci
- Tekstilni DPP — shema, lanac podrijetla, okvir s upozorenjem o mikroplastici
- Baterijski DPP — obvezna polja za baterijsku putovnicu
- API referenca — svi EU-Compliance krajnji točke u detalje