Проверка на съответствието с изискванията на ЕС
Проверка на съответствието с изискванията на ЕС
qr3.app съдържа интегриран ЕС валидатор за Digital Product Passports. Той проверява вашите DPP спрямо съответните регулации на ЕС (ESPR, Loi AGEC) и предоставя структурирани проблеми (Issues) с ниво на сериозност (Severity), път до полето, указания и незадължителна значка ESPR-ready.
Съществуват три входни точки:
- От страна на сървъра, вече запазени DPP —
GET /v1/dpp/:id/eu-compliance - Преглед в реално време във формата за създаване —
POST /v1/dpp/validate - Подробен симулатор в реално време —
POST /v1/dpp/:id/validate-update
И трите връщат една и съща структура EuComplianceResult — така че трябва да имплементирате обработката само веднъж.
Структура на резултата
{ "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⇔ всички ESPR-Opt-in полета са зададени (вижте Текстилен DPP)issues[]е стабилно сортиран по сериозност (error→warning→info) и след това по код
Нива на сериозност (Severity)
| Сериозност (Severity) | Значение | Пример |
|---|---|---|
error | Блокира съответствието с изискванията на ЕС; трябва да бъде коригирано преди пускане | TEXTILE_AGEC_REQUIRED, ако FR е на пазара и веригата на произход е непълна |
warning | Препоръка; клиентът може да запази, но трябва да предприеме действия | TEXTILE_GREENWASHING извън FR |
info | Сигнал за статус без необходимост от действие | TEXTILE_ESPR_READY — всички ESPR-Opt-in полета са попълнени |
Каталог с правила (Текстил + Батерии)
Текстил (Q3.3.4)
| Код | Ниво на сериозност | Спусък (Auslöser) |
|---|---|---|
TEXTILE_AGEC_REQUIRED | error (FR) · warning (в противен случай) | Непълна AGEC верига (тъкане/боядисване/конфекциониране), FR е на пазара |
TEXTILE_MICROPLASTICS_CONSISTENCY | error | Синтетика ≥ 50 %, но contains_microplastics !== true |
TEXTILE_SVHC_THRESHOLD | warning | Запис за SVHC без CAS номер или концентрация |
TEXTILE_GREENWASHING | error (FR) · warning (в противен случай) | Термин от списъка със забранени думи в product_name/material |
TEXTILE_ESPR_READY | info | Всички ESPR полета B7–B15 са попълнени |
Батерии (Фаза 4a)
Валидаторът проверява граничните стойности от Регламента на ЕС за батериите 2023/1542 (прагове за рециклирано съдържание, класове на въглероден отпечатък, минимална гаранция и др.). Подробности в документацията за DPP за батерии.
Преглед в реално време (Live-Preview) във формата за създаване
Веднага след като създадете DPP в таблото за управление (/dashboard/dpp/new), същият валидатор работи без състояние (stateless) при всяко валидиране (Validate-Roundtrip) — без да е необходимо паспортът да бъде запазван. Секцията eu_compliance се появява директно под съществуващия панел за валидиране и подчертава грешките и предупрежденията преди изпращането (Submit).
Директен достъп до 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 }] } }'Отговорът съдържа:
data.valid— синтактична валидност (Zod)data.errors[]— класически Zod грешкиdata.jsonld_preview— JSON-LD прегледdata.eu_compliance— резултат от ЕС валидатора (null, ако Zod валидирането се провали)
Ако eu_compliance.summary.errors > 0, таблото за управление изобразява банер Save-Guard непосредствено над бутона за изпращане — запазването не се блокира, но виждате последствията преди кликването.
Подробен симулатор в реално време (Live-Simulator)
В /dashboard/dpp/:dppId, под секцията за съответствие, има картичка на симулатора (Simulator-Karte). Тя позволява да променяте двете най-важни за съответствието полета (status и market_countries) и веднага да виждате ефекта — без да променяте съществуващите данни. Типичен процес (Flow):
- Преглед (Preview): „Какво ще стане, ако добавя FR към асортимента?“ → избор на чип „FR“ → „Preview EU impact“ →
TEXTILE_AGEC_REQUIREDстава видим - Корекция (Fix): Попълване на веригата на произход (извън симулатора в процеса на създаване или групово качване)
- Запазване (Save): „Save changes“ запазва статуса/списъка с пазари директно чрез
PUT /v1/dpp/:id
Директен достъп до 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" }'Отговорът (Response) разширява стандартния резултат с обект 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[] изброява само полета, които действително биха се променили — така можете например в потребителския интерфейс (UI) да откроите само променените чипове.
Позволено е изпращането на празно тяло (leerer Body), което връща текущата оценка на съответствието (повторна проверка на текущото състояние).
Автоматизация
CI пайплайн
Типична CI проверка:
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 сървър
Предоставеният @qr3/mcp-server предлага, наред с други неща, инструмент validate_dpp — по този начин AI агентите могат да проверят преди извикването за създаване (Create-Call) дали наличните данни отговарят на правилата на AGEC.
Често срещани грешки
| Проблем (Issue) | Причина | Корекция (Fix) |
|---|---|---|
TEXTILE_MICROPLASTICS_CONSISTENCY | Дял на полиестер ≥ 50 %, но флагът е false | Задаване на contains_microplastics: true |
TEXTILE_AGEC_REQUIRED с hints.market: "FR" | FR е на пазара, веригата е непълна | Задаване на country_weaving_knitting, country_dyeing_printing, country_assembly |
TEXTILE_GREENWASHING като error | Забранен термин + FR на пазара | Премахване на термина от product_name или коригиране на пазара |
TEXTILE_SVHC_THRESHOLD | SVHC вещество без CAS | Въвеждане на CAS номер от списъка REACH |
Следващи стъпки
- Текстилен DPP — схема, верига на произход, предупредително поле за микропластмаса
- DPP за батерии — задължителни полета за паспорт на батерия
- Справка за API — подробна информация за всички крайни точки за съответствие с изискванията на ЕС