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.
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ęzyk | Pliki | Linie | Kod | Komentarze | Złożoność | Udział w kodzie |
|---|---|---|---|---|---|---|
| TypeScript / TSXbackend Fastify 5 + frontend React 19 | 175 | 30 519 | 26 687 | 1 874 | 5 493 | |
| Pythonsilnik Computer Vision fabric_recolor v7 | 20 | 2 781 | 1 954 | 451 | 307 | |
| HTMLfixtury stron dostawców + niniejszy raport | 7 | 4 278 | 3 573 | 15 | 0 | |
| Markdowndokumentacja kontraktów i stanu | 14 | 3 021 | 2 294 | 0 | 0 | |
| PozostałeSQL (schemat), CSS, JSON, JS, TXT | 7 | 858 | 771 | 48 | 5 | |
| RAZEM | 224 | 41 478 | 35 282 | 2 388 | 5 805 |
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.
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.
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.
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.
getInventoryProductsData — 34/34 wariantów, 0 niezgodności. Artefakt: data/exports/base-oskar-2026-09-16.json.
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.
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.
Ten sam zatwierdzony snapshot SHA-256 zasila galerię WWW, kartę PDF, warianty i eksport — eliminuje rozjazd treści między kanałami.
Ś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.
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".
| Obszar | Dowó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. |
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.
koszt jednego ujęcia wariantu
fast-path z maską sidecar
przyspieszenie vs pełna segmentacja
74,3 s → 1,5 s (GTX 1650, zmierzone)
ujęć wariantowych na model
17 odcieni × 2 strony × 8 ról
| Kryterium | Studio foto / 3D — 272 wizualizacje | VILMAL 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.
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.
unknown / unverified / confirmed — brak danych nigdy nie jest zgadywany.export_consents (zgoda na SHA snapshotu) → export_batches (idempotentny wsad) → export_items (pozycja per wariant).unconfirmed i pojednanie po SKU zamiast ślepego duplikatu.Ile system oszczędza fabryce operacyjnie przy każdej kolekcji — zmierzone na pełnej matrycy wariantów produktu OSKAR.
| Ścieżka realizacji | Koszt / model | Czas / model | Uwagi |
|---|---|---|---|
| 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. |
~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).
Wszystkie liczby w tym dokumencie pochodzą z pomiarów wykonanych na repozytorium i bazie produkcyjnej w dniu audytu — nie z deklaracji projektowych.
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