Skip to content

История на промените

История на промените

Подбрани акценти от последните версии. За пълните версии на API и политиката за несъвместими промени (Breaking Changes) вижте Версиониране на API & LTS политика.

Подробни промени по отделните крайни точки: OpenAPI спецификация и интерактивна API справка.


2026-04 · Анализи в таблото за управление (Dashboard) за всеки QR код

  • Dashboard: Бутонът за анализи в списъка с QR кодове вече отваря страницата със статистика за съответния QR код на адрес /dashboard/codes/{id}.
  • Routing: Псевдонимът (alias) /dashboard/codes продължава да пренасочва към /dashboard, но вече не прихваща детайлни маршрути като /dashboard/codes/{id}.
  • API: Страницата с детайли зарежда QR кода директно чрез GET /v1/codes/:id; по този начин тя вече не зависи от ограниченията за пагинация на списъка.
  • Tests: Регресионните тестове покриват пренасочването на псевдонима и директното зареждане на кода.

2026-04 · Диалогов прозорец за изтриване на QR кодове в таблото (Dashboard)

  • Dashboard: Иконата с кошче в списъка с QR кодове вече отваря собствен React диалогов прозорец вместо системно изскачащо съобщение на браузъра.
  • Feedback: След изтриване се появява изскачащо известие (toast) за успех или грешка.
  • Tests: packages/dashboard/tests/dashboard.test.ts предотвратява регресии при confirm() в процеса на изтриване на QR кодове.

2026-04 · Тест на кратки връзки в таблото (Dashboard) за динамични QR кодове

  • Dashboard: Кратките кодове (shortcodes) в списъка с QR кодове вече могат да се кликват директно като външни връзки за пренасочване. Иконата за външна връзка до напр. wu3qaa отваря https://qr3.app/{shortCode} в нов раздел.
  • i18n: Добавени са текстове за подсказки (tooltips) на немски и английски език.
  • Tests: packages/dashboard/tests/dashboard.test.ts защитава href на връзката, поведението за нов раздел, noopener noreferrer и иконата срещу регресии.

2026-04 · Маршрут на Redirect-Worker за динамични QR кодове

  • Fix: Динамичните QR кодове на адрес https://qr3.app/{shortCode} отново се обработват от Redirect-Worker. Производственият маршрут (production route) вече използва qr3.app/*, тъй като маршрутите на Cloudflare Workers не поддържат параметри на пътя от типа :code.
  • Härtung: Несъвпадащите пътища се препращат към оригиналния хост (landing origin), за да не се блокират нормални страници като /de/pricing от Redirect-Worker.
  • Tests: packages/redirect/tests/unit/redirect.test.ts проверява маршрута с маска (wildcard route), обработката на кратки кодове и преминаването към оригиналния хост (origin pass-through).

2026-04 · Общ преглед на сканиранията на DPP в работното пространство (Q3.4.2)

  • Neu: GET /v1/workspace/stats/dpp?days=30 — агрегира всички dpp_scans на работното пространство на API ключа (active_dpps, scans_by_day, top_dpps с име на продукт/категория).
  • Dashboard: Карта на началната страница (/dashboard) с 30-дневна хистограма + списъци с най-популярните — успоредно с картите за QR кодове.
  • Public: Маркетингова кратка връзка GET /dpp/dpp_<id> (един сегмент) за демонстрации на живо, успоредно с /dpp/{gtin}/{serial}.

2026-04 · Анализи на сканиранията на DPP (Q3.4.1)

  • Neu: GET /v1/dpp/:id/stats?days=30 — агрегирани сканирания от публичния GS1-Resolver за всяко DPP. Полета: total_scans, period_scans, scans_by_day, top_countries, top_devices, top_representations.
  • Neu: Таблица dpp_scans (миграция 0011) — отделно от scans (Redirect-Worker). IP адресите се хешират с ежедневно ротираща сол (salt), суровите IP адреси никога не достигат до D1.
  • Dashboard: Мини диаграма (SVG, без външна библиотека за графики) на страница /dashboard/dpp/:dppId с 30-дневни стълбове + разбивка на топ 3. Празно състояние (empty state), веднага щом даден DPP е активен, но все още няма сканирания.

2026-04 · Симулатор за съответствие с изискванията на ЕС в реално време (Q3.3.7)

  • Neu: POST /v1/dpp/:id/validate-update — симулира частични актуализации без състояние (stateless) (статус, списък с пазари, …) без персистентност. Отговорът съдържа eu_compliance + preview.changed_fields.
  • Dashboard: Карта на симулатора в детайлите на DPP (/dashboard/dpp/:dppId) — чипове за DE/AT/FR/IT/ES/NL + персонализирани, падащо меню за статус, Preview EU impact / Save changes / Reset. Неблокиращо чрез Remix useFetcher.
  • Härtung: Изнесени помощни функции за симулатора (readUpdatePatchFromForm, marketCountriesKey) + 18 нови единични теста (unit tests); отстранена грешка: въвеждането на единичен не-ISO код вече не изтрива списъка с пазари.

2026-04 · Преглед на съответствието с изискванията на ЕС в реално време във формата за създаване (Q3.3.6)

  • Geändert: POST /v1/dpp/validate допълнително връща eu_compliance — същият валидатор като GET /v1/dpp/:id/eu-compliance, без състояние (stateless) преди записване.
  • Dashboard: Преглед под съществуващия панел за валидация + нов банер за защита при запис (Save-Guard) преди бутоните за изпращане, ако има нерешени грешки/предупреждения (i18n плурализация за DE/EN).

2026-04 · Валидатор за ЕС + Текстилен потребителски интерфейс (Q3.3.4 + Q3.3.5)

  • Neu: Валидатор за съответствие с изискванията на ЕС с 5 текстилни правила (TEXTILE_AGEC_REQUIRED, TEXTILE_MICROPLASTICS_CONSISTENCY, TEXTILE_SVHC_THRESHOLD, TEXTILE_GREENWASHING, TEXTILE_ESPR_READY).
  • Neu: GET /v1/dpp/:id/eu-compliance с compliant / espr_ready / issues[] / summary.
  • Dashboard: Секция за съответствие с изискванията на ЕС в детайлите на DPP (обобщаващи плочки, групирани карти с проблеми, бадж ESPR-Ready в заглавната част).

2026-04 · Схема за текстилен DPP (Q3.3.1–Q3.3.3)

  • Neu: Категория textile със задължителна верига по AGEC (тъкане/плетене → боядисване/печат → конфекциониране), за всяко влакно origin_country + recycled_pct, svhc_substances[], ESPR-Opt-in (PEF, експлоатационен живот, Recyclability).
  • Neu: Основно поле market_countries: string[] (ISO 3166-1 alpha-2) за всички категории DPP — управлява специфичните за Франция правила по AGEC и френската задължителна бележка за потребителите.
  • Neu: Потребителски HTML шаблон с предупредително поле за микропластмаса по AGEC, 3-степенна верига на произход (хапчета с флагове), списък със SVHC, секция за Durability и Recyclability.
  • Migration: 0010_dpp_market_countries (D1).

2026-04 · Масов импорт на DPP (Q3.2.1–Q3.2.5)

  • Neu: POST /v1/dpp/import приема CSV и XLSX (съвместим с Workers чрез SheetJS xlsx, ~283 KB gzip пакет).
  • Skaliert: лимит на базата на абонаментния план (Free 100 → Enterprise 10k) + разделяне на части (chunked) db.batch() по 100 + 5 MB лимит на тялото (body limit).
  • Neu: Отчет за грешки като CSV в полето errors_csv на отговор 201; GET /v1/dpp/import/templates/:category?format=csv|xlsx предоставя готови шаблони за батерии и текстил.
  • Dashboard: Качване чрез влачене и пускане (drag-and-drop) на адрес /dashboard/dpp/import с прокси за шаблони и директно изтегляне на CSV.

Съвместими промени (Non-Breaking) — разширения на LTS

Всички горепосочени промени са адитивни (добавъчни):

  • Съществуващите клиенти на POST /v1/dpp/validate игнорират новото поле eu_compliance без промяна.
  • Съществуващите процеси за battery остават непроменени.
  • Полето market_countries е незадължително и по подразбиране е [].

Вижте Версиониране на API за политиката относно несъвместимите промени (Breaking-Change-Policy).