Przejdź do głównej zawartości

3. Zarządzanie danymi (Directus)

Projekt opiera się na dwóch osobnych instancjach Directusa:


A. Panel kolorów gotowych (Palette) – color-selector-backend

Kolekcje główne

  • Category – kategorie kolorów
  • Color – kolory (z polami: name, number, hex, status, sort, relacje)
  • Product – produkty
  • Shop – sklepy
  • Category_Color, Category_Product – relacje many-to-many

Relacje

  • Produkt ma przypisane kolory przez products / Category_Color
  • Każdy produkt (product-id) musi mieć powiązaną listę dostępnych kolorów
  • Filtrowanie: Product_id, Category_id, name, number

API Palette

Zapytania używają endpointów Directus: items/Color, items/Category, items/Product itd., z filtrami np.:

  • products.Product_id._eq
  • Category.Category_id._eq
  • number._contains, name._icontains

B. Panel mieszalnika (Tinting) – color-tinting-backend

Kolekcje główne

  • Color – kolory (m.in. name, number, hex, base, colorFamily)
  • Product – produkty
  • Sample – próbki / kolekcje
  • Shop – sklepy
  • Product_Color, Color_Sample, Sample_Product – relacje

Import plików CSV

Dane są importowane przez rozszerzenie importcsv (endpoint /upload-csv).

Format CSV (separator ;):

KolumnaOpis
NazwaNazwa koloru
ProduktNazwa produktu
KolekcjaNazwa próbki/kolekcji (Sample)
HEXKod koloru HEX
BazaBaza (np. Base A)

Przykład:

Nazwa;Produkt;Kolekcja;HEX;Baza
RAL 7016;Farba X;RAL;#383E42;Base A

Import automatycznie:

  • tworzy / aktualizuje Product, Sample, Color
  • dopasowuje colorFamily na podstawie HEX (chroma-js, delta-e)
  • wypełnia relacje Product_Color, Color_Sample, Sample_Product

Alternatywny format (JSON)

Struktura odpowiadająca koncepcji importu:

{
"color_code": "RAL 7016",
"hex": "#383E42",
"base": "Base A",
"collection": "RAL"
}

W praktyce rozszerzenie importcsv oczekuje CSV z kolumnami: Nazwa, Produkt, Kolekcja, HEX, Baza.