Verificarea conformității UE
Verificarea conformității UE
qr3.app include un validator UE integrat pentru Digital Product Passports. Acesta verifică DPP-urile tale în raport cu reglementările UE relevante (ESPR, Loi AGEC) și oferă probleme structurate (issues) cu severitate, calea câmpului, indicații și o insignă opțională ESPR-ready.
Există trei puncte de intrare:
- Pe partea de server, DPP-uri deja salvate —
GET /v1/dpp/:id/eu-compliance - Previzualizare live în formularul de creare —
POST /v1/dpp/validate - Simulator live în detaliu —
POST /v1/dpp/:id/validate-update
Toate cele trei returnează aceeași structură EuComplianceResult — deci trebuie să implementezi evaluarea o singură dată.
Structura rezultatului
{ "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⇔ toate câmpurile ESPR-Opt-in sunt setate (vezi DPP Textile)issues[]este sortat stabil după severitate (error→warning→info) și apoi după cod
Niveluri de severitate
| Severitate | Semnificație | Exemplu |
|---|---|---|
error | Blochează conformitatea UE; ar trebui remediat înainte de lansare | TEXTILE_AGEC_REQUIRED dacă FR este pe piață și lanțul de aprovizionare este incomplet |
warning | Recomandare; clientul poate salva, dar ar trebui să acționeze | TEXTILE_GREENWASHING în afara FR |
info | Semnal de stare fără necesitate de acțiune | TEXTILE_ESPR_READY — toate câmpurile ESPR-Opt-in sunt complete |
Catalogul de reguli (Textile + Baterii)
Textile (Q3.3.4)
| Cod | Severitate | Declanșator |
|---|---|---|
TEXTILE_AGEC_REQUIRED | error (FR) · warning (altfel) | Lanțul AGEC (țesut/vopsit/confecționat) este incomplet, FR este pe piață |
TEXTILE_MICROPLASTICS_CONSISTENCY | error | Sintetic ≥ 50% dar contains_microplastics !== true |
TEXTILE_SVHC_THRESHOLD | warning | Înregistrare SVHC fără număr CAS sau concentrație |
TEXTILE_GREENWASHING | error (FR) · warning (altfel) | Termen din lista de interdicții în product_name/material |
TEXTILE_ESPR_READY | info | Toate câmpurile ESPR B7–B15 sunt complete |
Baterii (Faza 4a)
Validatorul verifică valorile limită din Regulamentul UE privind bateriile 2023/1542 (praguri pentru conținutul reciclat, clase de amprentă de carbon, garanție minimă etc.). Detalii în documentația DPP Baterii.
Previzualizare live în formularul de creare
De îndată ce creezi un DPP în panoul de control (/dashboard/dpp/new), același validator rulează stateless la fiecare ciclu de validare — fără ca pașaportul să trebuiască salvat. Secțiunea eu_compliance apare direct sub panoul de validare existent și evidențiază erorile și avertismentele înainte de trimitere (submit).
Acces direct prin API:
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 }] } }'Răspunsul conține:
data.valid— validitate sintactică (Zod)data.errors[]— erori clasice Zoddata.jsonld_preview— previzualizare JSON-LDdata.eu_compliance— rezultatul validatorului UE (nulldacă validarea Zod eșuează)
Dacă eu_compliance.summary.errors > 0, panoul de control randează un banner Save-Guard direct deasupra butonului de trimitere — salvarea nu este blocată, dar vezi consecințele înainte de a face clic.
Simulator live în detaliu
Pe /dashboard/dpp/:dppId există un card de simulator sub secțiunea de conformitate. Acesta permite modificarea celor mai relevante două câmpuri pentru conformitate (status și market_countries) și vizualizarea imediată a impactului — fără a modifica datele existente. Flux tipic:
- Previzualizare: „Ce se întâmplă dacă adaug FR în gamă?” → selectează eticheta „FR” → „Preview EU impact” →
TEXTILE_AGEC_REQUIREDdevine vizibil - Remediere: Finalizarea lanțului de aprovizionare (în afara simulatorului, în fluxul de creare sau bulk)
- Salvare: „Save changes” salvează starea/lista de piețe direct prin
PUT /v1/dpp/:id
Acces direct prin API:
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" }'Răspunsul extinde rezultatul standard cu un obiect 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[] listează doar câmpurile care s-ar schimba efectiv — astfel poți, de exemplu, să evidențiezi în interfață doar etichetele modificate.
Un corp gol (empty body) este permis și returnează evaluarea curentă a conformității (re-verificarea stării actuale).
Automatizare
Pipeline CI
O verificare CI tipică:
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/nullServer MCP
Serverul @qr3/mcp-server inclus oferă, printre altele, un instrument validate_dpp — agenții IA pot folosi acest instrument înainte de apelul de creare pentru a verifica dacă datele existente respectă regulile AGEC.
Erori frecvente
| Problemă | Cauză | Remediere |
|---|---|---|
TEXTILE_MICROPLASTICS_CONSISTENCY | Proporție de poliester ≥ 50%, dar indicatorul este false | Setați contains_microplastics: true |
TEXTILE_AGEC_REQUIRED cu hints.market: "FR" | FR este pe piață, lanțul este incomplet | Setați country_weaving_knitting, country_dyeing_printing, country_assembly |
TEXTILE_GREENWASHING ca error | Termen interzis + FR pe piață | Eliminați termenul din product_name sau ajustați piața |
TEXTILE_SVHC_THRESHOLD | Substanță SVHC fără CAS | Introduceți numărul CAS din lista REACH |
Pașii următori
- DPP Textile — schemă, lanț de aprovizionare, casetă de avertizare microplastic
- DPP Baterii — câmpuri obligatorii pașaport baterie
- Referință API — toate endpoint-urile de conformitate UE în detaliu