VILMAL · Studio Ofert Produktowych

Raport techniczno-majątkowy systemu VILMAL

Niezależny audyt inżynierski i walidacja rynkowa platformy przygotowania ofert mebli tapicerowanych — od zdjęcia z hali do zsynchronizowanego wariantu w kanale sprzedaży.

DokumentPREZENTACJA_ZARZAD.html
Data audytu24 września 2026
ZakresCałe repozytorium · HEAD 967ec7a + drzewo robocze
Metodologiascc 4.1.0 · node:test · pytest · lizard · node:sqlite
StatusMateriał poufny — B2B
29 361 LOC
Kod inżynieryjny (scc, bez komentarzy)
100% Digital
Zero fizycznych prototypów
250/250 PASS
Testy automatyczne (TS + Python)
35/35 OK
Pozycje w BaseLinker — read-back + EAN
Slajd 1 · Twarde metryki inżynieryjne

Majątek inżynierski w liczbach

Pomiar wykonany narzędziem scc 4.1.0 (Sloc Cloc and Code) na całym repozytorium w dniu audytu — wyłącznie kod własny (bez zależności, artefaktów builda, danych i plików tymczasowych). Tabela pokazuje pełny pomiar; 35 282 linie kodu zawierają także dokumentację i zapisane strony-fixtury testowe — właściwy kod inżynieryjny systemu to 29 361 LOC (backend, frontend, testy, silnik CV, skrypty QA).

JęzykPlikiLinieKodKomentarzeZłożonośćUdział w kodzie
TypeScript / TSXbackend Fastify 5 + frontend React 19 17530 51926 6871 8745 493
Pythonsilnik Computer Vision fabric_recolor v7 202 7811 954451307
HTMLfixtury stron dostawców + niniejszy raport 74 2783 573150
Markdowndokumentacja kontraktów i stanu 143 0212 29400
PozostałeSQL (schemat), CSS, JSON, JS, TXT 7858771485
RAZEM 22441 47835 2822 3885 805

Jakość potwierdzona testami — 100% PASS

Backend / domena — TypeScript 197/197

197 testów, 0 porażek, 35,0 s (node:test, 24 pliki). Pokrycie m.in.: ingest i provenance SHA-256, fakty i akceptacje, matryca wariantów, guard recoloru, treści ofertowe, snapshoty paczki, orkiestrator (idempotencja, wygasanie, stale SHA, rollback), outbox eksportu (zgoda na SHA, read-back, pojednanie po SKU, blokady auth/CSRF), fetcher źródeł (SSRF, DNS-pinning, limity), pula EAN-13, nóżki, współdzielenie źródeł, usuwanie produktu, budżet payloadu referencji.

Silnik Computer Vision — Python 53/53

53 testy, 0 porażek, 2,6 s (pytest). Pokrycie: konwersje Lab, transfer delta, maski (czyszczenie, feather, coverage), komponenty mebla, kieszenie komór, ochrona regionów, sidecar fast-path i bake, raport serwisu.

Repozytorium i proces

45 commitów w 9 dni kalendarzowych (15–23.09.2026), +31 500 / −303 linie w historii commitów, 3 tagi stabilności silnika CV. Kompilacja: tsc 0 błędów + vite build OK (bundle 340,0 kB / gzip 100,1 kB). Architektura: 30 modułów domenowych (server/src/domain), 82 zarejestrowane trasy REST za sesją i CSRF, 16 wersji schematu bazy (migracje v1–v16, SQLite WAL), trwała kolejka zadań z checkpointingiem. Złożoność: śr. CCN 2,9 na funkcję (lizard, 1 989 funkcji) — zdrowy profil utrzymaniowy.

Slajd 2 · Dowód operacyjny

System zasila realny kanał sprzedaży

VILMAL nie jest prototypem — pełna paczka produktowa przeszła ścieżką produkcyjną do katalogu BaseLinker zasilającego działający sklep, najpierw skryptowo, a następnie bezpośrednio z panelu aplikacji.

FABRYKA VILMAX
Surowe zdjęcia z hali
Potwierdzone fakty producenta
Karty tkanin (Davis, SIC)
→
PIM VILMAL
Fakty + galeria + warianty
Dokumenty i treści kanałowe
Snapshot SHA-256 · akceptacja
→
BASELINKER
Katalog centralny
Transakcyjny outbox
Read-back po każdym zapisie
→
BAZAROWY ŚWIAT
Sklep + kanał Allegro
(bazarowy-swiat.pl)
kroki operatorskie w BL
Dowód wdrożeniowy (16.09.2026): narożnik OSKAR wysłany do katalogu BaseLinker (magazyn 62360) jako produkt rodzica ID 690927524 z 34 wariantami (17 odcieni × strona L/P). Każdy wariant to osobny rekord z pełną galerią 8 zdjęć — 272 obrazy łącznie (1184×880, CDN BaseLinker). Integralność potwierdzona odczytem zwrotnym getInventoryProductsData — 34/34 wariantów, 0 niezgodności. Artefakt: data/exports/base-oskar-2026-09-16.json.
Dowód eksportu z panelu (24.09.2026): wsad xpb_02ebe488 wysłany jednym przyciskiem „Wyślij do BaseLinkera" — 35/35 pozycji zweryfikowanych read-backiem (rodzic pojednany po SKU z istniejącym rekordem 690927524, 34 rekordy wariantów). Każdy wariant wysłany z własnym kodem EAN-13 z puli GS1, 8 zdjęciami, polami tekstowymi per kanał (w tym mapowaniem Allegro), wagą 110 kg i wymiarami paczki. Łącznie w bazie: 3 zakończone wsady, 105 pozycji o statusie verified.

Podejście Vertical Slice

Pełny przepływ udowodniony end-to-end na wymagającym produkcie: wielkogabarytowy narożnik rozkładany (257×151 cm, funkcja spania 135×190 cm, 110 kg w 2 paczkach) — zamiast płytkiej pokrywy wielu prostych przypadków.

Jeden snapshot prawdy

Ten sam zatwierdzony snapshot SHA-256 zasila galerię WWW, kartę PDF, warianty i eksport — eliminuje rozjazd treści między kanałami.

Skalowalność katalogu

Ścieżka jest generyczna: kreator produktu, import z URL dostawcy i paczka ofertowa działają dla dowolnego modelu — drugi produkt (FUJI) ma już 85 faktów (84 potwierdzone), matrycę 34 wariantów ARENA i 47 assetów.

Granice dowodu (uczciwie): produkty są pozycjami katalogowymi w Base — wystawienie ofert Allegro wymaga kroków operatorskich w panelu BL (parametry kategorii, GPSR, czas wysyłki). Kolejny krok wdrożeniowy: ostateczne zmapowanie słowników cech specyficznych dla poszczególnych kont Allegro bezpośrednio w panelu BaseLinker. Wideo use/care odroczone decyzją właściciela. Zasilenie witryny zależy od powiązania kanałów po stronie Base/WooCommerce.
Slajd 3 · Rozwój od poprzedniego audytu

Co doszło w 3 dni (21 → 24.09)

Poprzedni raport opisano przy commicie 4e585f2. Od tamtej pory: 10 commitów, migracje schematu v13–v16, +50 testów jednostkowych i zamknięcie pełnej ścieżki „import produktu → eksport z panelu".

ObszarDowód w kodzie / danych
Kreator produktu z URLBobochic — pełna ścieżka Wizualny wybór wariantu (miniatury, etykiety PL) zamiast zgadywania koloru; auto-pobieranie galerii wariantu z CDN; auto-przypisanie zdjęć do ról ujęć; parser odporny na produkty wieloatrybutowe (np. „Lot") i tylko-kolorystyczne (sofy, fotele — bez atrybutu kąta); dogrywka zdjęć ze snapshotu bez ponownego pobierania strony.
Eksport z panelu — liveBaseLinker odblokowany Token w ustawieniach aplikacji (maskowany, bez restartu) lub env; jeden przycisk „Wyślij do BaseLinkera" (auto-snapshot + zgoda + wsad, aktor w audit_log); test połączenia w panelu; wykonany realny wsad 35/35 verified (24.09) z EAN per wariant.
Pula EAN-13 (GS1)nowa warstwa katalogowa Tablica ean_pool z walidacją 13 cyfr i sumą kontrolną; import masowy w Ustawieniach; atomowy przydział FIFO do wariantów; zwrot do puli przy usuwaniu produktu; EAN trafia do payloadu addInventoryProduct. Stan: 158 kodów (149 przypisanych, 9 wolnych).
Katalog tkanin — 2 hurtownieSIC + Davis Parser kolekcji Davis (parametry techniczne, badge'e Easy Clean/Pet Friendly, odcienie, karta PIM) obok SIC; wspólny kontrakt ParsedFabricCollection; zbiorcza weryfikacja odcieni z panelu. Stan bazy: 8 kolekcji, 128 odcieni (wszystkie z wyliczonym color_hex).
Katalog nóżek + multi-referencjewarstwa kondycjonowania AI Tabela furniture_legs + import z Mir-Tex24 (nazwa, wysokość, materiał, EAN, zdjęcie) + wizualna siatka w UI. Generacja ujęć warunkowana wieloma referencjami: geometria mebla + próbka tkaniny + nóżka (prompt z jawnym mapowaniem ról obrazów).
Trwałość i higiena danychwspółdzielenie, refetch, usuwanie Współdzielenie plików źródłowych między produktami (dedup SHA + tabela wiążąca — koniec „brak zdjęć" przy reimporcie); kasowanie produktu z UI (transakcja przez 16 tabel zależnych, zwrot EAN-ów); kompresja referencji AI do budżetu 8 MiB (fix HTTP 413) z trwałymi request ID per widok.
Interfejs — 4 kroki fabrycznezamiast 6 zakładek technicznych Karta produktu przeorganizowana w proces: 1. Źródło i dane → 2. Nasze kadry wzorcowe → 3. Tkaniny i warianty → 4. Pakiet ofertowy i BaseLinker; karta kotwicy odcienia; zwinięte panele inżynieryjne; zbiorcza weryfikacja odcieni.
Slajd 4 · Silnik cyfrowy i wydajność

Fotografia wariantów bez fotografowania wariantów

Autorski silnik fabric_recolor v7 (Python: BiRefNet + GroundingDINO/SAM + Depth-Anything-V2) przenosi potwierdzoną próbkę tkaniny na zatwierdzone ujęcie-matcę, zachowując geometrię, cienie i fakturę mebla.

≈1,5 s

koszt jednego ujęcia wariantu
fast-path z maską sidecar

50×

przyspieszenie vs pełna segmentacja
74,3 s → 1,5 s (GTX 1650, zmierzone)

272

ujęć wariantowych na model
17 odcieni × 2 strony × 8 ról

Porównanie z tradycyjnym studiem

KryteriumStudio foto / 3D — 272 wizualizacjeVILMAL Recolor v7
Czas realizacji paczki 4–8 tygodni (sesja, modelowanie 3D, rendery, retusz) ≈55 minut dla 272 ujęć — zmierzona regeneracja pełnej matrycy OSKAR
Koszt krańcowy wariantu Każdy odcień/strona = osobny render (150–300 zł) lub sesja $0 za regenerację — lokalny GPU, bez płatnych API obrazu
Spójność produktu Model 3D ≠ rzeczywisty mebel; ryzyko rozjazdu detali Baza = zatwierdzone zdjęcie realnego egzemplarza; warianty dziedziczą geometrię 1:1
Kontrola jakości Akceptacja „na oko" setek plików Raport coverage/delta per ujęcie + nadzór Maciuś (1 167 werdyktów) + decyzja człowieka w matrycy

Pipeline v7: matte BiRefNet → histereza alfa → maskowane ROI → negatywne prompty DINO/SAM (komory, wyrostki) → kotwica głębi Depth-Anything → ochrona regionów → rekompozycja w Lab (delta próbki względem kotwicy iluminantu). Po pierwszym przebiegu maska jest „wypiekana" do pliku sidecar — kolejne odcienie tej samej roli omijają segmentację całkowicie.

Slajd 5 · Architektura bezpieczeństwa

Deterministyczny rdzeń, AI na smyczy

System traktuje dane fabryki jako majątek: każda decyzja ma dowód, każdy artefakt ma pochodzenie, każdy zapis zewnętrzny ma zgodę i ślad.

Rygor danych — SQLite WAL + SHA-256

  • Oryginały niezmienne; każdy plik i snapshot identyfikowany hashem SHA-256.
  • Snapshoty paczki ofertowej: zgoda eksportu wiązana z dokładnym hashem — zmiana treści unieważnia zgodę.
  • 16 wersjonowanych migracji schematu; transakcje z SAVEPOINT; audit_log (6 412 wpisów) i historia faktów.
  • Reweryfikacja bajtów przed każdym krytycznym wykonaniem (stale-SHA = odmowa).

Human-in-the-Loop

  • AI proponuje — człowiek o roli approver akceptuje fakty, media, treści i eksport (1 698 decyzji w DB).
  • Trójstan faktów: unknown / unverified / confirmed — brak danych nigdy nie jest zgadywany.
  • Maciuś (moduł QA): werdykty doradcze przypięte do wersji i SHA; negatywny werdykt sygnalizuje, nie decyduje za człowieka.
  • Operacje orkiestratora wygasają po 24 h i są idempotentne.

Transakcyjny Outbox → BaseLinker

  • Trzy warstwy: export_consents (zgoda na SHA snapshotu) → export_batches (idempotentny wsad) → export_items (pozycja per wariant).
  • Read-back po każdym zapisie; timeout → status unconfirmed i pojednanie po SKU zamiast ślepego duplikatu.
  • Odwołanie zgody anuluje niewysłane pozycje; tryb „Wyślij teraz" skraca ścieżkę do jednej świadomej decyzji z aktorem w audycie.

Higiena sekretów i sieci

  • Token BaseLinker wyłącznie w zmiennych środowiskowych serwera lub w ustawieniach aplikacji (maskowany w API) — nigdy w DTO, logach, payloadach ani UI.
  • Safe-fetcher importów: allowlist hostów, blokada SSRF/DNS-rebinding, limity bajtów i przekierowań, walidacja MIME.
  • Wszystkie endpointy za sesją + CSRF + walidacja Zod strict; podział ról operator/approver/admin; blokady koszt/dispatch nie do ominięcia nawet przez admina.
Slajd 6 · Ekonomia wdrożenia

Ekonomia wdrożenia: Czas i koszty operacyjne

Ile system oszczędza fabryce operacyjnie przy każdej kolekcji — zmierzone na pełnej matrycy wariantów produktu OSKAR.

A. Koszt paczki wizualnej jednego modelu (matryca 17×2×8 = 272 ujęcia)

Ścieżka realizacjiKoszt / modelCzas / modelUwagi
Studio 3Dmodel 3D + 8 scen + 272 rendery wariantowe ≈46–99 tys. złmodel 2–5 tys. + sceny 3,6–12 tys. + 272×150–300 zł 4–8 tyg. Model 3D ≠ realny mebel; każda nowa tkanina = nowa runda renderów.
Fotografia tradycyjnasesje wszystkich wariantów praktycznie niewykonalnaprodukcja 34 fizycznych wariantów do sesji — Koszt wyprodukowania egzemplarzy tapicerowanych przekracza całą ścieżkę 3D.
VILMAL Recolor v7zmierzone na OSKAR-ze kilkaset zł$0 compute + ~1 dzień QA operatora ~55 min + QA 272 ujęcia na lokalnym GPU; nowa tkanina = import URL + potwierdzenie, nie sesja.

Oszczędność operacyjna fabryki

~0,45–0,98 mln zł rocznie przy 10 modelach względem ścieżki 3D, plus skrócenie time-to-market z tygodni do dni i eliminacja rozjazdu treści między kanałami (jeden snapshot SHA-256 dla WWW, PDF, wariantów i eksportu).

Załącznik · Weryfikacja jakości

Metodologia i pewność danych

Wszystkie liczby w tym dokumencie pochodzą z pomiarów wykonanych na repozytorium i bazie produkcyjnej w dniu audytu — nie z deklaracji projektowych.

250/250 PASS

System zweryfikowany pakietem 250 zautomatyzowanych testów regresyjnych (100% PASS)
backend TypeScript · silnik Computer Vision Python · kompilacja bez błędów · baza audytowana odczytem read-only