7.1 KiB
7.1 KiB
Plan Refaktoryzacji - ShopAttribute (/admin/shop_attribute)
Data przygotowania: 2026-02-14 Tryb realizacji: Human In The Loop (HITL) Status: Zrealizowano kroki 0-6 (2026-02-14)
1. Cel i zakres
Celem jest pelna migracja modulu shop_attribute z legacy (admin/controls, admin/factory, admin/view, grid/gridEdit) na:
Domain/*(repozytorium + logika zapisu),admin/Controllers/*(DI),- nowe widoki oparte o
components/table-listicomponents/form-edit, - kanoniczny routing (
list,edit,save,delete,values,values_save) z kompatybilnoscia aliasow legacy.
Zakres obejmuje takze przeglad i przepiecie zaleznosci w innych klasach (admin/front/shop), aby usunac twarde powiazanie ze starym modulem.
2. Stan obecny (baseline)
Legacy modułu
autoload/admin/controls/class.ShopAttribute.phpautoload/admin/factory/class.ShopAttribute.phpautoload/admin/view/class.ShopAttribute.phpadmin/templates/shop-attribute/*(staregrid/gridEdit+ AJAXattribute_value_tpl)
Zaleznosci poza modulem
autoload/admin/controls/class.ShopProduct.php(lista atrybutow do kombinacji)admin/templates/shop-product/product-combination.php(nazwy atrybut/wartosc)autoload/admin/factory/class.ShopProduct.php(m.in.value_details, aktualizacja cen kombinacji)autoload/front/factory/class.ShopAttribute.phpiautoload/shop/class.ProductAttribute.php(odczyt front/shop)templates/shop-product/_partial/product-attribute.php,autoload/front/factory/class.ShopOrder.php
Ryzyka znalezione w aktualnym UI wartosci
- domyslny jezyk w tytule jest hardcoded (
pl), - wybor domyslnej wartosci oparty o indeksy wierszy (podatne na bledy po usuwaniu),
- brak walidacji biznesowej (np. wymagane minimum 1 wartosc i 1 nazwa w jezyku domyslnym),
- UX edycji wartosci jest malo czytelny przy duzej liczbie pozycji.
3. Architektura docelowa
Nowe klasy
autoload/Domain/Attribute/AttributeRepository.phpautoload/admin/Controllers/ShopAttributeController.php
Nowe widoki
admin/templates/shop-attribute/attributes-list.php(nowytable-list)admin/templates/shop-attribute/attribute-edit.php(nowyform-edit)admin/templates/shop-attribute/attribute-values-edit.php(nowy ekran wartosci)admin/templates/shop-attribute/attribute-values-custom-script.php(logika JS dla wartosci)admin/templates/shop-attribute/_partials/value-row.php(opcjonalny partial pojedynczego wiersza)
Routing
- kanoniczne:
/admin/shop_attribute/list//admin/shop_attribute/edit/id={id}/admin/shop_attribute/save//admin/shop_attribute/delete/id={id}/admin/shop_attribute/values/id={id}/admin/shop_attribute/values_save/id={id}
- brak aliasow kompatybilnosci legacy (decyzja: URL-e niekanoniczne nie sa utrzymywane)
4. Plan realizacji HITL (krok po kroku)
Krok 0 - Freeze i test baseline
Zakres:
- uruchomienie testow referencyjnych (minimum smoke + wskazane pelne),
- zapisanie stanu wyjsciowego i listy plikow modulu.
Wyjscie:
- potwierdzony baseline testow przed zmianami.
Punkt akceptacji HITL:
- akceptacja startu implementacji po weryfikacji baseline.
Krok 1 - Domain Repository (bez zmian UI)
Zakres:
- utworzenie
AttributeRepositoryz metodami admin:listForAdmin(),findAttribute(),saveAttribute(),deleteAttribute(),findValues(),saveValues(),- pomocnicze:
getAttributeNameById(),getAttributeValueById(),getAttributesListForCombinations(),valueDetails().
- normalizacja danych i bezpieczne parsowanie inputow (
switch, liczby, tablice ID). - centralizacja invalidacji cache/temp po zapisach.
Wyjscie:
- gotowa warstwa domenowa pod kontroler DI.
Punkt akceptacji HITL:
- review API repozytorium i nazw metod przed podpieciem kontrolera.
Krok 2 - Kontroler DI i routing
Zakres:
- dodanie
ShopAttributeController(akcje list/edit/save/delete/values/valuesSave), - podpiecie do
admin\Site::$newControllers, - ustawienie kanonicznych URL bez aliasow legacy,
- aktualizacja linku menu do
/admin/shop_attribute/list/.
Wyjscie:
- modul dziala przez nowy kontroler, bez usuwania legacy w tym kroku.
Punkt akceptacji HITL:
- potwierdzenie zgodnosci URL i backward compatibility.
Krok 3 - Migracja widokow (lista + formularz cechy)
Zakres:
- przepisanie listy na
components/table-list, - przepisanie formularza cechy na
components/form-edit, - utrzymanie obecnej funkcjonalnosci (status, typ, kolejnosc, nazwy per jezyk).
Wyjscie:
- brak zaleznosci od
grid/gridEditw tych ekranach.
Punkt akceptacji HITL:
- akceptacja UX i danych na liscie oraz formularzu cechy.
Krok 4 - Nowy panel edycji wartosci (UX)
Zakres:
- przebudowa
values-editna bardziej intuicyjny formularz:- jeden czytelny widok tabelaryczny (wiersz = wartosc),
- stabilny identyfikator wiersza zamiast indeksu do wyboru wartosci domyslnej,
- walidacja: co najmniej 1 wartosc, nazwa w jezyku domyslnym, jedna domyslna wartosc,
- jasne komunikaty bledow i podsumowanie zmian.
- usuniecie zaleznosci od endpointu
attribute_value_tpl(lub utrzymanie tylko jako alias fallback).
Wyjscie:
- nowy edytor wartosci odporny na bledy indeksowania i wygodniejszy dla operatora.
Punkt akceptacji HITL:
- decyzja biznesowa o finalnym UX (wariant A/B ponizej) i akceptacja wygladu.
Warianty UX do decyzji
- Wariant A (rekomendowany): osobny ekran
values, ale w nowym ukladzie tabelarycznym + walidacje. - Wariant B: integracja wartosci bezposrednio w
attribute-edit(mniej klikniec, ale wieksza zlozonosc formularza).
Krok 5 - Przepiecie zaleznosci i usuniecie legacy
Zakres:
- przeszukanie i przepiecie wszystkich uzyc
admin\factory\ShopAttributew kodzie admina, - aktualizacja zaleznosci w miejscach zwiazanych z kombinacjami produktu,
- usuniecie starych klas:
autoload/admin/controls/class.ShopAttribute.phpautoload/admin/view/class.ShopAttribute.phpautoload/admin/factory/class.ShopAttribute.php(po przepieciu wszystkich odwolan)
- cleanup starych szablonow nieuzywanych.
Wyjscie:
- brak runtime zaleznosci od legacy
ShopAttribute.
Punkt akceptacji HITL:
- akceptacja listy usuwanych plikow i finalnego cleanupu.
Krok 6 - Testy + dokumentacja + release
Zakres:
- nowe testy:
tests/Unit/Domain/Attribute/AttributeRepositoryTest.phptests/Unit/admin/Controllers/ShopAttributeControllerTest.php
- uruchomienie regresji (co najmniej testy modułowe + docelowo caly suite),
- aktualizacja dokumentacji:
docs/DATABASE_STRUCTURE.md(tabele atrybutow),docs/PROJECT_STRUCTURE.md,docs/REFACTORING_PLAN.md,docs/CHANGELOG.md,docs/TESTING.md.
Wyjscie:
- modul gotowy do release, z domknietym testowaniem i dokumentacja.
Punkt akceptacji HITL:
- finalna akceptacja pakietu zmian przed procedura releasowa.
5. Kryteria akceptacji
shop_attributedziala przezShopAttributeController+AttributeRepository.- Lista i formularze nie korzystaja z
grid/gridEdit. - Panel wartosci nie opiera domyslnej wartosci na nietrwalych indeksach.
- Stare klasy
controls/view/factorymodulu zostaja usuniete po przepieciu zaleznosci. - Testy jednostkowe dla nowego repozytorium i kontrolera przechodza.
- Dokumentacja techniczna jest zaktualizowana.