Tekstil-DPP er live: tjek EU-compliance på sekunder — før du gemmer

qr3.app understøtter nu komplette tekstilpas under Frankrigs Loi AGEC + ESPR. Nyhed: en live-validator og simulator, der markerer AGEC-overtrædelser, greenwashing og ESPR-parathed direkte i formularen — før du gemmer.

af qr3.app Team

Tekstil-DPP er live: tjek EU-compliance på sekunder — før du gemmer

Oven i batteri-sporet leverer qr3.app nu en anden komplet DPP-kategori: tekstiler under Frankrigs Loi AGEC (Décret 2022-748) og udkastet til ESPR's delegerede retsakt. Samtidig har vi bygget en live EU-validator ind, som kører direkte i dashboardet — før du gemmer et pas og før du lancerer et produkt på et nyt marked.

Kort fortalt — tre ting, du ikke får på typiske QR-platforme:

  1. Et komplet tekstil-DPP-skema, inklusive AGEC's obligatoriske kæde og ESPR opt-in.
  2. En live-forhåndsvisning inde i opret-formularen, der øjeblikkeligt markerer AGEC-overtrædelser og greenwashing.
  3. En compliance-simulator på detaljesiden, der besvarer: "hvad sker der, hvis jeg tilføjer Frankrig til mine markeder i morgen?"

Hvorfor tekstil-DPP'en er vigtig allerede i dag

ESPR's delegerede retsakt for tekstiler er stadig på udkaststadiet — det centrale EU-DPP-register går live 2026-07-19. Du kan ikke vente til da, for en del af reguleringen er allerede juridisk bindende i dag:

  • Loi AGEC (Frankrig, siden 2023-01-01): obligatorisk oprindelseskæde, advarsel om mikroplast, REACH-SVHC-gennemsigtighed, forbud mod vage miljøpåstande.
  • Fra 2025 gælder AGEC for tekstilsælgere med over 10 mio. € i omsætning eller over 10.000 enheder. Mindre producenter følger i 2027, og næsten alle i 2028.
  • Antallet af påbud mod greenwashing nåede et rekordniveau i Frankrig i 2024 — "naturlig", "biologisk nedbrydelig" eller "écologique" uden dokumentation er dyrere end en dokumentationssprint.

Hvis du sender tekstiler ind i EU (eller bare til Frankrig), er det billigere at få din DPP-stak på plads nu end at lave en panikmigrering i 2027.

Tekstil-skemaet i overblik

Vi bygger direkte på AGEC's katalog over obligatoriske felter:

{
  "category": "textile",
  "gtin": "04012345678901",
  "product_name": "Organic Cotton T-Shirt",
  "manufacturer": "EcoWear GmbH",
  "origin_country": "PT",
  "market_countries": ["DE", "AT", "FR"],
  "textile_data": {
    "fiber_composition": [
      { "material": "cotton", "percentage": 95, "origin_country": "TR", "recycled_pct": 0 },
      { "material": "elastane", "percentage": 5, "origin_country": "IT", "recycled_pct": 0 }
    ],
    "country_weaving_knitting": "PT",
    "country_dyeing_printing": "PT",
    "country_assembly": "PT",
    "contains_microplastics": false
  }
}

De obligatoriske felter dækker de fire AGEC-regler, som de franske myndigheder oftest håndhæver:

AGEC-artikel Felt Hvad validatoren gør
A1 fiber_composition[].recycled_pct Alle fiberprocenter skal samlet give 100 %
A2–A4 country_weaving_knitting / dyeing_printing / assembly Tre lande kræves, så snart FR er på markedslisten
A5 contains_microplastics Tvinges til true, når syntetiske fibre udgør ≥ 50 %
A6 svhc_substances[] CAS-nummer + koncentration kræves fra 0,1 %

Oven i det understøtter vi valgfrie ESPR-felter (holdbarhed, PEF CO₂, reparations-URL, deadline for reservedele, genanvendelsesklasse). Når alle er udfyldt, viser dashboardet et ESPR-ready-mærke — perfekt for producenter, der investerer tid nu for at kunne lancere i 2027 uden en migrering.

Live-forhåndsvisning: se fejl, før du gemmer

Det typiske flow plejede at være: udfyld formularen → gem → hop til detaljesiden → læs compliance-fejlene → tilbage til formularen. Det gør ondt i det øjeblik, du opretter et batch.

Siden denne udgivelse kører EU-validatoren statelessly inde i opret-formularen:

  • POST /v1/dpp/validate returnerer nu et ekstra eu_compliance-felt med compliant, espr_ready, issues[] og et resumé grupperet efter alvorlighedsgrad, ud over Zod-valideringen.
  • Dashboardet viser issues direkte under valideringspanelet, grupperet efter fejl / advarsel / info.
  • Et gem-vagt-banner dukker op over send-knapperne ("2 fejl og 1 advarsel — gem alligevel?"), når der stadig er issues. Gemningen er ikke blokeret, men du ser sort på hvidt, hvad du accepterer.

For dig som udvikler betyder det: du kan bruge validatoren overalt — inde i dit eget importflow, i et CI-tjek, i et Cursor-agent-hook.

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 @textile-payload.json | jq '.data.eu_compliance.summary'

Compliance-simulatoren: "hvad nu hvis jeg tilføjer Frankrig?"

Den funktion, jeg personligt ønskede mig mest, er compliance-simulatoren på detaljesiden for et eksisterende DPP. Typisk scenarie:

Du har 500 tekstilpas i systemet, alle til det tyske marked. Salg kommer ind: "Vi ekspanderer til Frankrig i næste måned." Spørgsmål: hvilke af dine pas bryder pludselig AGEC?

Åbn et pas i dashboardet, og et nyt kort dukker op under EU-compliance-sektionen: Compliance-simulator.

  • Klik på chippen FR (ved siden af presets DE/AT/FR/IT/ES/NL) eller indtast en brugerdefineret ISO-kode.
  • Valgfrit: skift status fra draft til live.
  • Knap Forhåndsvis EU-effekt.

Brugerfladen viser dig øjeblikkeligt, uden at gemme passet:

  • Nye fejlkort (f.eks. TEXTILE_AGEC_REQUIRED på feltstien textile_data.country_weaving_knitting).
  • En greenwashing-advarsel, der eskalerer fra warning til error, fordi FR er på markedslisten.
  • Et preview.changed_fields-tag, der præcist udpeger, hvilke felter der ville ændre sig.

Når du er tilfreds, sender Gem ændringer deltaen videre via PUT /v1/dpp/:id. Hvis ikke — Nulstil, og intet skete.

Under motorhjelmen er dette ét nyt endpoint:

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

Workeren fletter patchet sammen med det eksisterende DPP i hukommelsen og kører EU-validatoren over resultatet — uden skriveadgang. En tom body er tilladt og returnerer den aktuelle vurdering.

Hvorfor det er mere end et "nice to have"

Tre grunde til, at simulatoren ikke er en gimmick:

  1. Pre-sales-tjek til markedsekspansion. Salg kan på 60 sekunder svare på, hvilke produkter der er FR-klare, og hvor dyr en udrulning ville være.
  2. Afkobl dataarbejdet fra compliance-arbejdet. Compliance jagter ikke længere hver eneste datafejl — kør simulatoren én gang, filtrér rent, opret tickets.
  3. AI-agent-venligt. Endpointet har præcis samme form som POST /v1/dpp/validate. En Cursor- eller Claude-agent kan kalde det direkte fra en opgave som "find FR-klare pas" — uden et mini-script imellem.

Stadig API-first

Alt, der er synligt i dashboardet, kan nås via API'et:

  • POST /v1/dpp/validate — stateless validator til opret-flows.
  • POST /v1/dpp/:id/validate-update — stateless validator til delvise opdateringer (simulatoren).
  • GET /v1/dpp/:id/eu-compliance — vedvarende tjek af eksisterende pas (perfekt til CI).
  • POST /v1/dpp/import — bulk-import via CSV/XLSX med nye tekstilskabeloner (GET /v1/dpp/import/templates/textile?format=xlsx).
  • GET /01/{GTIN}/21/{SERIAL} — forbrugervisning med AGEC-mikroplastadvarselsboks, oprindelseskæde, SVHC-liste og holdbarhedssektion.

Alle tre validator-endpoints returnerer den samme EuComplianceResult-form. Så du bygger gruppering af issues og rendering af alvorlighedsgrader præcis én gang.

Garanti uden breaking changes

Alt i denne udgivelse er additivt:

  • Eksisterende POST /v1/dpp/validate-klienter kan ignorere det nye eu_compliance-felt uden ændringer.
  • Batteri-flows er uændrede.
  • market_countries er valgfrit og har som standard [].

Detaljerne finder du i changeloggen og vores politik for API-versionering.

Kom godt i gang

Hvis du har et stort katalog af tekstilpas eller har brug for at revidere din AGEC-/Frankrig-risiko, så tag fat i os — vi er klar til pilotkunder mellem 500 og 50.000 SKU'er.