MCL-DPP — Digital Product Passport platforma (MEDIC COD LABS DOO)

proveravam… Portal (login)

Koraci — šta je šta i čemu služi

  1. JSON šema baterije uradjeno schemas/battery-passport-1.1.0.json — sva polja pasoša po Aneksu XIII: obavezna polja, nivoi pristupa, pravne reference, prevod labele. Nova grupa proizvoda = nova šema, bez izmene koda.
  2. Baza podataka radi db/create_schema.sql — 43 tabele. Verzije pasoša su immutable (DB trigger zabranjuje izmenu — zakonska perzistentnost).
  3. Schema engine radi AccessFilter skida polja iznad nivoa pozivaoca. ReadinessScorer računa % usklađenosti i nedostajuća polja.
  4. Resolver + QR radi QR na proizvodu → /01/{gtin}/21/{serijski} → pasoš. Isti URL vraća HTML čoveku, JSON-LD mašini, linkset resolverima (GS1).
  5. Lifecycle API radi Draft → validacija → issue → verzionisanje (SHA-256) → EU registry → withdraw. Lokalni izolovani D16 dokaz: scripts/VERIFY-MCLDPP.ps1 (35/35); nije nova produkciona provera niti dokaz stvarne EU registracije.
  6. Operativa radi Webhooks (HMAC potpis + retry), CSV/JSON import, backup kod trećeg lica (ESPR 10.4), export paket, dokumenti, access grants, audit, idempotencija, rate limit.
  7. Tenant portal radi SPA za firme — /portal/login.html (cookie sesija, vanilla JS). Demo nalog: .

Kompletan tok uživo — od proizvoda do pasoša

Ceo lanac u 4 klika: kreira proizvod sa GTIN+serijskim, otvori draft pasoš, izračuna readiness, objavi (immutable verzija + hash + EU registry + webhook), i otvori javni pasoš koji bi kupac video skeniranjem QR-a.

1. Proizvod + identifikator
2. Draft pasoš + readiness
3. Objavljivanje (issue)
4. Javni rezultat

Živi pasoš — demo baterija u bazi

LFP-20 E-Bike Battery (SN-DEMO-0001)

Stvaran pasoš iz PostgreSQL baze, verzija 1. Javna stranica je ono što kupac vidi kad skenira QR na bateriji.

Provera nivoa pristupa uživo

PUBLIC (bez ključa) vs AUTHORITY (X-Api-Key: ) — inspekcija vidi due diligence i odgovorno lice, javnost ne.

Živa kontrola — engine (demo podaci)

Access Filter — nivoi vidljivosti

Isti pasoš, tri nivoa: PUBLIC / PARTNER / AUTHORITY. Klikni i uporedi JSON.

Readiness — usklađenost

% obaveznih polja popunjeno + šta fali za validan pasoš (sa referencom na član).

Linkset (RFC 9264)

Odgovor resolvera mašinskim klijentima — svi resursi vezani za identifikator.

Audit trag

Sve akcije u sistemu (create/issue/import) su append-only zapisane.

Klikni dugme iznad — ovde se prikazuje odgovor…

API karte (za integracije)

JSON šema baterije (Annex XIII)

Ključevi za demo

— tenant (authority nivo)
— service_admin scope
Header: X-Api-Key

Admin vodič — upravljanje nalogom

Tenant i korisnici

Nalog firme se otvara registracijom; prvi korisnik dobija ulogu tenant_admin. Uloge: tenant_admin — korisnici, API ključevi, webhooks, SSO, plan; tenant_user — proizvodi, pasoši, dokumenti, dobavljači. Korisnike admin dodaje u Podešavanja → Korisnici (welcome mejl sa lozinkom).

Planovi i limiti

Besplatno: {n} pasoša / {n} korisnik / bez API-ja. Pro: {n} pasoša / {n} korisnika / API + webhooks ({n} req/min). Industrija: bez gornjeg limita pasoša i korisnika / API {n} req/min. Limiti se proveravaju atomski u bazi — prekoračenje vraća 402 uz jasnu poruku.

Pozivi dobavljačima

Na stranici pasoša → „Pozovi dobavljača": birate polja koja dobavljač popunjava, rok i poruku. Dobavljač ne pravi nalog — dobija siguran link (token je u bazi samo kao heš), unosi tražena polja, a vi pregledate i odobravate unos. Statusi: sent → viewed → submitted → approved/rejected.

Audit pregled i heš-lanac

Podešavanja → Aktivnost: svaki zapis ima ko (aktor/ključ), kad (UTC) i šta (akcija + entitet + detalji). Zapis je append-only — baza odbija izmene audit_log-a; kriptografsko sidro (audit anchor) periodično vezuje stanje u javno proverljiv heš.

SSO po firmi (OIDC)

Podešavanja → SSO: unesite email domen, OIDC issuer i Client ID vašeg IdP-a (Entra/Okta/Keycloak); kod njega registrujete callback https://dpp.mcldhi.com/api/v1/auth/sso/callback. Korisnici se zatim prijavljuju „Prijava preko firme" sa adrese na tom domenu. Flow koristi PKCE + nonce, a nalog se linkuje samo na postojeće korisnike — novi nalog se ne pravi automatski.

Backup i oporavak

Dnevni pg_dump backup (retencija do 31 snimka, približno 31 dan pri dnevnom rasporedu) + per-tenant export: svaki pasoš je izvoziv kao ZIP sa SHA-256 manifestom — integritet se dokazuje poređenjem heša. Vraćanje: restore u privremenu bazu pa selektivni prenos, ili celi restore na čistu instalaciju.