Tarkista EU-vaatimustenmukaisuus
Tarkista EU-vaatimustenmukaisuus
qr3.app sisältää integroidun EU-validaattorin digitaalisille tuotepasseille (Digital Product Passports). Se tarkistaa DPP-passisi asiaankuuluvia EU-säädöksiä (ESPR, Loi AGEC) vastaan ja tuottaa jäsenneltyjä huomioita (Issues), joissa on vakavuustaso (Severity), kenttäpolku, vihjeitä sekä valinnainen ESPR-ready-merkki.
Käyttöpisteitä on kolme:
- Palvelinpuoli, jo tallennetut DPP-passit —
GET /v1/dpp/:id/eu-compliance - Live-esikatselu luontilomakkeessa —
POST /v1/dpp/validate - Live-simulaattori tiedoissa —
POST /v1/dpp/:id/validate-update
Kaikki kolme palauttavat saman EuComplianceResult-rakenteen — sinun tarvitsee siis toteuttaa tulkinta vain kerran.
Tuloksen rakenne
{ "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⇔ kaikki ESPR-opt-in-kentät on asetettu (katso Tekstiili-DPP)issues[]on lajiteltu vakaasti vakavuustason (error→warning→info) ja sen jälkeen koodin mukaan
Vakavuustasot
| Severity | Merkitys | Esimerkki |
|---|---|---|
error | Estää EU-vaatimustenmukaisuuden; tulisi korjata ennen julkaisua | TEXTILE_AGEC_REQUIRED, jos FR on markkina-alueena ja alkuperäketju on puutteellinen |
warning | Suositus; asiakas voi tallentaa, mutta toimenpiteitä suositellaan | TEXTILE_GREENWASHING Ranskan (FR) ulkopuolella |
info | Tilasignaali ilman toimenpidevaatimuksia | TEXTILE_ESPR_READY — kaikki ESPR-opt-in-kentät täytetty |
Sääntöluettelo (Tekstiilit + Akut)
Tekstiilit (Q3.3.4)
| Koodi | Vakavuustaso | Laukaisija |
|---|---|---|
TEXTILE_AGEC_REQUIRED | error (FR) · warning (muutoin) | AGEC-ketju (kudonta/värjäys/kokoonpano) puutteellinen, FR markkina-alueena |
TEXTILE_MICROPLASTICS_CONSISTENCY | error | Synteettinen materiaali ≥ 50 %, mutta contains_microplastics !== true |
TEXTILE_SVHC_THRESHOLD | warning | SVHC-merkintä ilman CAS-numeroa tai pitoisuutta |
TEXTILE_GREENWASHING | error (FR) · warning (muutoin) | Kiellettyjen termien luettelossa oleva sana kentässä product_name/material |
TEXTILE_ESPR_READY | info | Kaikki ESPR-kentät B7–B15 täytetty |
Akut (Vaihe 4a)
Validaattori tarkistaa raja-arvot EU:n akkuasetuksesta 2023/1542 (kierrätetyn sisällön kynnysarvot, hiilijalanjälkiluokat, vähimmäistakuu jne.). Lisätietoja on Akku-DPP-dokumentaatiossa.
Live-esikatselu luontilomakkeessa
Heti kun luot DPP-passin hallintapaneelissa (/dashboard/dpp/new), sama validaattori suoritetaan tilattomasti jokaisen validointikierroksen yhteydessä — ilman, että passia tarvitsee tallentaa. eu_compliance-osio ilmestyy suoraan olemassa olevan validointipaneelin alapuolelle ja korostaa virheet ja varoitukset ennen lähettämistä.
Suora API-yhteys:
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 }] } }'Vastaus sisältää:
data.valid— syntaktinen kelpoisuus (Zod)data.errors[]— perinteiset Zod-virheetdata.jsonld_preview— JSON-LD-esikatseludata.eu_compliance— EU-validaattorin tulos (null, jos Zod-validointi epäonnistuu)
Jos eu_compliance.summary.errors > 0, hallintapaneeli näyttää Save-Guard-bannerin suoraan lähetyspainikkeen yläpuolella — tallennusta ei estetä, mutta näet seuraukset ennen klikkaamista.
Live-simulaattori tiedoissa
Sivulla /dashboard/dpp/:dppId on vaatimustenmukaisuusosion alapuolella simulaattorikortti. Sen avulla voit muuttaa kahta vaatimustenmukaisuuden kannalta tärkeintä kenttää (status ja market_countries) ja nähdä vaikutukset välittömästi — koskematta olemassa oleviin tietoihin. Tyypillinen kulku:
- Esikatselu: “Mitä tapahtuu, jos otan Ranskan (FR) valikoimaan?” → Valitse valintamerkki “FR” → “Preview EU impact” →
TEXTILE_AGEC_REQUIREDtulee näkyviin - Korjaus: Täydennä alkuperäketju (simulaattorin ulkopuolella luonti- tai massatoimintovaiheessa)
- Tallennus: “Save changes” tallentaa tilan/markkina-alueluettelon suoraan osoitteeseen
PUT /v1/dpp/:id
Suora API-yhteys:
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" }'Vastaus laajentaa vakiotulosta preview-objektilla:
{ "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[] luettelee vain kentät, jotka todella muuttuisivat — näin voit esimerkiksi käyttöliittymässä korostaa vain muuttuneet valinnat.
Tyhjä runko on sallittu ja se palauttaa nykyisen vaatimustenmukaisuusarvioinnin (nykytilan uudelleentarkistus).
Automaatio
CI-putki
Tyypillinen CI-tarkistus:
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-palvelin
Mukana toimitettava @qr3/mcp-server tarjoaa muun muassa validate_dpp-työkalun — tekoälyagentit voivat käyttää sitä ennen luontikutsua tarkistaakseen, täyttävätkö olemassa olevat tiedot AGEC-säännöt.
Yleiset virheet
| Huomio (Issue) | Syy | Korjaus |
|---|---|---|
TEXTILE_MICROPLASTICS_CONSISTENCY | Polyesteriosuus ≥ 50 %, mutta lippu on false | Aseta contains_microplastics: true |
TEXTILE_AGEC_REQUIRED arvolla hints.market: "FR" | FR markkina-alueena, ketju puutteellinen | Aseta country_weaving_knitting, country_dyeing_printing, country_assembly |
TEXTILE_GREENWASHING tilassa error | Kielletty termi + FR markkina-alueena | Poista termi kentästä product_name tai muuta markkina-aluetta |
TEXTILE_SVHC_THRESHOLD | SVHC-aine ilman CAS-numeroa | Syötä CAS-numero REACH-luettelosta |
Seuraavat vaiheet
- Tekstiili-DPP — skeema, alkuperäketju, mikromuovivaroituslaatikko
- Akku-DPP — akkupassin pakolliset kentät
- API-viite — kaikki EU-vaatimustenmukaisuuden päätepisteet yksityiskohtaisesti