Skip to content

Проверка на съответствието с изискванията на ЕС

Проверка на съответствието с изискванията на ЕС

qr3.app съдържа интегриран ЕС валидатор за Digital Product Passports. Той проверява вашите DPP спрямо съответните регулации на ЕС (ESPR, Loi AGEC) и предоставя структурирани проблеми (Issues) с ниво на сериозност (Severity), път до полето, указания и незадължителна значка ESPR-ready.

Съществуват три входни точки:

  1. От страна на сървъра, вече запазени DPPGET /v1/dpp/:id/eu-compliance
  2. Преглед в реално време във формата за създаванеPOST /v1/dpp/validate
  3. Подробен симулатор в реално време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: truesummary.errors === 0
  • espr_ready: true ⇔ всички ESPR-Opt-in полета са зададени (вижте Текстилен DPP)
  • issues[] е стабилно сортиран по сериозност (errorwarninginfo) и след това по код

Нива на сериозност (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_REQUIREDerror (FR) · warning (в противен случай)Непълна AGEC верига (тъкане/боядисване/конфекциониране), FR е на пазара
TEXTILE_MICROPLASTICS_CONSISTENCYerrorСинтетика ≥ 50 %, но contains_microplastics !== true
TEXTILE_SVHC_THRESHOLDwarningЗапис за SVHC без CAS номер или концентрация
TEXTILE_GREENWASHINGerror (FR) · warning (в противен случай)Термин от списъка със забранени думи в product_name/material
TEXTILE_ESPR_READYinfoВсички ESPR полета B7–B15 са попълнени

Батерии (Фаза 4a)

Валидаторът проверява граничните стойности от Регламента на ЕС за батериите 2023/1542 (прагове за рециклирано съдържание, класове на въглероден отпечатък, минимална гаранция и др.). Подробности в документацията за DPP за батерии.

Преглед в реално време (Live-Preview) във формата за създаване

Веднага след като създадете DPP в таблото за управление (/dashboard/dpp/new), същият валидатор работи без състояние (stateless) при всяко валидиране (Validate-Roundtrip) — без да е необходимо паспортът да бъде запазван. Секцията eu_compliance се появява директно под съществуващия панел за валидиране и подчертава грешките и предупрежденията преди изпращането (Submit).

Директен достъп до API:

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 }] }
}'

Отговорът съдържа:

  • 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):

  1. Преглед (Preview): „Какво ще стане, ако добавя FR към асортимента?“ → избор на чип „FR“ → „Preview EU impact“ → TEXTILE_AGEC_REQUIRED става видим
  2. Корекция (Fix): Попълване на веригата на произход (извън симулатора в процеса на създаване или групово качване)
  3. Запазване (Save): „Save changes“ запазва статуса/списъка с пазари директно чрез PUT /v1/dpp/:id

Директен достъп до API:

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" }'

Отговорът (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 проверка:

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 сървър

Предоставеният @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_THRESHOLDSVHC вещество без CASВъвеждане на CAS номер от списъка REACH

Следващи стъпки

  • Текстилен DPP — схема, верига на произход, предупредително поле за микропластмаса
  • DPP за батерии — задължителни полета за паспорт на батерия
  • Справка за API — подробна информация за всички крайни точки за съответствие с изискванията на ЕС