Kontrollera EU-efterlevnad
Kontrollera EU-efterlevnad
qr3.app innehåller en integrerad EU-validator för Digital Product Passports. Den testar dina DPP:er mot relevanta EU-regelverk (ESPR, Loi AGEC) und levererar strukturerade problem med allvarlighetsgrad, fältbana, tips och en valfri ESPR-ready-badge.
Det finns tre ingångspunkter:
- Serversidan, redan sparade DPP:er —
GET /v1/dpp/:id/eu-compliance - Live-förhandsvisning i Create-formuläret —
POST /v1/dpp/validate - Live-simulator i detalj —
POST /v1/dpp/:id/validate-update
Alla tre levererar samma EuComplianceResult-struktur — du behöver alltså bara implementera utvärderingen en gång.
Resultatets struktur
{ "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⇔ alla ESPR-opt-in-fält är ifyllda (se Textil-DPP)issues[]är stabilt sorterad efter allvarlighetsgrad (error→warning→info) och därefter efter kod
Allvarlighetsgrader
| Severity | Betydelse | Exempel |
|---|---|---|
error | Blockerar EU-konformitet; bör åtgärdas före lansering | TEXTILE_AGEC_REQUIRED om FR finns på marknaden och ursprungskedjan är ofullständig |
warning | Rekommendation; kunden kan spara, men bör agera | TEXTILE_GREENWASHING utanför FR |
info | Statussignal utan åtgärdsbehov | TEXTILE_ESPR_READY — alla ESPR-opt-in-fält är fullständiga |
Regelkatalog (Textil + Batteri)
Textil (Q3.3.4)
| Kod | Allvarlighetsgrad | Utlösare |
|---|---|---|
TEXTILE_AGEC_REQUIRED | error (FR) · warning (annars) | AGEC-kedja (vävning/färgning/konfektion) ofullständig, FR på marknaden |
TEXTILE_MICROPLASTICS_CONSISTENCY | error | Syntetmaterial ≥ 50 % men contains_microplastics !== true |
TEXTILE_SVHC_THRESHOLD | warning | SVHC-post utan CAS-nummer eller koncentration |
TEXTILE_GREENWASHING | error (FR) · warning (annars) | Term från förbudslistan i product_name/material |
TEXTILE_ESPR_READY | info | Alla ESPR-fält B7–B15 är fullständiga |
Batteri (Fas 4a)
Validatorn kontrollerar gränsvärden från EU-batteriförordningen 2023/1542 (tröskelvärden för återvunnet innehåll, koldioxidavtrycksklasser, minimigaranti etc.). Detaljer finns i Batteri-DPP-dokumentationen.
Live-förhandsvisning i Create-formuläret
Så snart du skapar en DPP i instrumentpanelen (/dashboard/dpp/new), körs samma validator stateless vid varje valideringsrunda — utan att passet behöver sparas. Sektionen eu_compliance visas direkt under den befintliga valideringspanelen och lyfter fram fel och varningar före inskickning.
Direkt API-åtkomst:
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 }] } }'Svaret innehåller:
data.valid— syntaktisk giltighet (Zod)data.errors[]— klassiska Zod-feldata.jsonld_preview— JSON-LD-förhandsvisningdata.eu_compliance— EU-validatorresultat (nullom Zod-valideringen misslyckas)
Om eu_compliance.summary.errors > 0, renderar instrumentpanelen en Save-Guard-banner precis ovanför Submit-knappen — sparandet blockeras inte, men du ser konsekvenserna före klicket.
Live-simulator i detalj
På /dashboard/dpp/:dppId finns det ett simulatorkort under compliance-sektionen. Det gör det möjligt att ändra de två mest compliance-relevanta fälten (status och market_countries) och omedelbart se effekten — utan att röra befintliga data. Typiskt flöde:
- Preview: “Vad händer om jag tar med FR i sortimentet?” → Välj chip “FR” → “Preview EU impact” →
TEXTILE_AGEC_REQUIREDblir synlig - Fix: Komplettera ursprungskedjan (utanför simulatorn i Create- eller Bulk-flödet)
- Save: “Save changes” sparar status/marknadslista direkt via
PUT /v1/dpp/:id
Direkt API-åtkomst:
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" }'Svaret utökar standardresultatet med ett preview-objekt:
{ "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[] listar endast fält som faktiskt skulle ändras — på så sätt kan du t.ex. i ett gränssnitt endast markera de ändrade chippen.
En tom body är tillåten och levererar den aktuella compliance-bedömningen (kontrollera nuvarande tillstånd på nytt).
Automatisering
CI-pipeline
En typisk CI-kontroll:
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
Den medföljande @qr3/mcp-server erbjuder bland annat ett validate_dpp-verktyg — AI-agenter kan använda det före Create-anropet för att kontrollera om tillgängliga data uppfyller AGEC-reglerna.
Vanliga fel
| Problem | Orsak | Åtgärd |
|---|---|---|
TEXTILE_MICROPLASTICS_CONSISTENCY | Polyesterandel ≥ 50 %, men flaggan är false | Sätt contains_microplastics: true |
TEXTILE_AGEC_REQUIRED med hints.market: "FR" | FR på marknaden, kedjan ofullständig | Ange country_weaving_knitting, country_dyeing_printing, country_assembly |
TEXTILE_GREENWASHING som error | Förbjuden term + FR på marknaden | Ta bort termen från product_name eller anpassa marknaden |
TEXTILE_SVHC_THRESHOLD | SVHC-ämne utan CAS | Ange CAS-nummer från REACH-listan |
Nästa steg
- Textil-DPP — schema, ursprungskedja, varningsruta för mikroplaster
- Batteri-DPP — obligatoriska fält för batteripass
- API-referens — alla EU-compliance-slutpunkter i detalj