Hoppa till innehåll

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:

  1. Serversidan, redan sparade DPP:erGET /v1/dpp/:id/eu-compliance
  2. Live-förhandsvisning i Create-formuläretPOST /v1/dpp/validate
  3. Live-simulator i detaljPOST /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: truesummary.errors === 0
  • espr_ready: true ⇔ alla ESPR-opt-in-fält är ifyllda (se Textil-DPP)
  • issues[] är stabilt sorterad efter allvarlighetsgrad (errorwarninginfo) och därefter efter kod

Allvarlighetsgrader

SeverityBetydelseExempel
errorBlockerar EU-konformitet; bör åtgärdas före lanseringTEXTILE_AGEC_REQUIRED om FR finns på marknaden och ursprungskedjan är ofullständig
warningRekommendation; kunden kan spara, men bör ageraTEXTILE_GREENWASHING utanför FR
infoStatussignal utan åtgärdsbehovTEXTILE_ESPR_READY — alla ESPR-opt-in-fält är fullständiga

Regelkatalog (Textil + Batteri)

Textil (Q3.3.4)

KodAllvarlighetsgradUtlösare
TEXTILE_AGEC_REQUIREDerror (FR) · warning (annars)AGEC-kedja (vävning/färgning/konfektion) ofullständig, FR på marknaden
TEXTILE_MICROPLASTICS_CONSISTENCYerrorSyntetmaterial ≥ 50 % men contains_microplastics !== true
TEXTILE_SVHC_THRESHOLDwarningSVHC-post utan CAS-nummer eller koncentration
TEXTILE_GREENWASHINGerror (FR) · warning (annars)Term från förbudslistan i product_name/material
TEXTILE_ESPR_READYinfoAlla 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:

Terminal window
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-fel
  • data.jsonld_preview — JSON-LD-förhandsvisning
  • data.eu_compliance — EU-validatorresultat (null om 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

/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:

  1. Preview: “Vad händer om jag tar med FR i sortimentet?” → Välj chip “FR” → “Preview EU impact” → TEXTILE_AGEC_REQUIRED blir synlig
  2. Fix: Komplettera ursprungskedjan (utanför simulatorn i Create- eller Bulk-flödet)
  3. Save: “Save changes” sparar status/marknadslista direkt via PUT /v1/dpp/:id

Direkt API-åtkomst:

Terminal window
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:

Terminal window
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

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

ProblemOrsakÅtgärd
TEXTILE_MICROPLASTICS_CONSISTENCYPolyesterandel ≥ 50 %, men flaggan är falseSätt contains_microplastics: true
TEXTILE_AGEC_REQUIRED med hints.market: "FR"FR på marknaden, kedjan ofullständigAnge country_weaving_knitting, country_dyeing_printing, country_assembly
TEXTILE_GREENWASHING som errorFörbjuden term + FR på marknadenTa bort termen från product_name eller anpassa marknaden
TEXTILE_SVHC_THRESHOLDSVHC-ämne utan CASAnge 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