- Add variant CRUD endpoints (variants, create_variant, update_variant, delete_variant) - Add dictionaries/attributes endpoint with multilingual names and values - Add attribute_* filter params for product list filtering by attribute values - Enrich product detail attributes with translated names (attribute_names, value_names) - Include variants array in product detail response for parent products - Add price_brutto validation on product create - Batch-load attribute/value translations (4 queries instead of N+1) - Add 43 new unit tests (730 total, 2066 assertions) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4.1 KiB
4.1 KiB
Instrukcja tworzenia aktualizacji shopPRO
Nowy sposób (od v0.301) — automatyczny build script
Wymagania
- Git z tagami wersji (np.
v0.299,v0.300) - PowerShell
Workflow
1. Pracuj normalnie: commit, push, commit, push...
2. Gdy wersja gotowa:
→ git tag v0.XXX
→ ./build-update.ps1 -ToTag v0.XXX -ChangelogEntry "NEW - opis"
3. Upload plików z updates/0.XX/ na serwer aktualizacji
Użycie build-update.ps1
# Podgląd zmian (bez tworzenia plików)
./build-update.ps1 -ToTag v0.301 -DryRun
# Budowanie paczki (auto-detect poprzedniego tagu)
./build-update.ps1 -ToTag v0.301 -ChangelogEntry "NEW - opis zmiany"
# Z jawnym tagiem źródłowym
./build-update.ps1 -FromTag v0.300 -ToTag v0.301 -ChangelogEntry "NEW - opis"
Co robi skrypt automatycznie
git diff --name-statusmiędzy tagami → listy dodanych/zmodyfikowanych/usuniętych plików- Filtrowanie przez
.updateignore(pliki deweloperskie, konfiguracyjne itp.) - Kopiowanie plików do temp, tworzenie ZIP
- SHA256 checksum ZIP-a
- Generowanie
ver_X.XXX_manifest.json - Generowanie legacy
_sql.txti_files.txt(okres przejściowy) - Aktualizacja
versions.phpichangelog.php - Cleanup
Pliki wynikowe
updates/0.XX/ver_X.XXX.zip— paczka z plikamiupdates/0.XX/ver_X.XXX_manifest.json— manifest z checksumem, listą zmian, SQLupdates/0.XX/ver_X.XXX_sql.txt— legacy SQL (okres przejściowy)updates/0.XX/ver_X.XXX_files.txt— legacy lista plików do usunięcia (okres przejściowy)
Migracje SQL
Pliki SQL umieszczaj w migrations/{version}.sql (np. migrations/0.301.sql).
Build script automatycznie je wczyta i umieści w manifeście + legacy _sql.txt.
Format manifestu
{
"version": "0.301",
"date": "2026-02-22",
"checksum_zip": "sha256:abc123...",
"files": {
"modified": ["autoload/Domain/Order/OrderRepository.php"],
"added": ["autoload/Domain/Order/NewHelper.php"],
"deleted": ["autoload/shop/OldClass.php"]
},
"directories_deleted": [],
"sql": ["ALTER TABLE pp_x ADD COLUMN y INT DEFAULT 0"],
"changelog": "NEW - opis zmiany"
}
.updateignore
Plik w katalogu głównym projektu, wzorce plików wykluczonych z paczek (jak .gitignore).
Stary sposób (do v0.300) — ręczne pakowanie
Struktura aktualizacji
Aktualizacje znajdują się w folderze updates/0.XX/ gdzie XX oznacza dziesiątki wersji.
Pliki aktualizacji:
ver_X.XXX.zip- paczka ZIP ze zmienionymi plikami (BEZ folderu wersji, bezpośrednio struktura katalogów)ver_X.XXX_sql.txt- opcjonalny plik z zapytaniami SQL (jeśli wymagane zmiany w bazie)ver_X.XXX_files.txt- opcjonalny plik z listą plików do USUNIĘCIA przy aktualizacji (format:F: ../sciezka/do/pliku.php)changelog.php- historia zmianversions.php- konfiguracja wersji (zmienna$current_ver)
Zasada pakowania plików
- Do paczek aktualizacji nie dodajemy plików
*.md(dokumentacja jest tylko wewnętrzna/deweloperska). - Do paczek aktualizacji nie dodajemy
updates/changelog.php(to plik serwisowy po stronie repozytorium aktualizacji, nie runtime klienta). - Do paczek aktualizacji nie dodajemy głównego
.htaccessz katalogu projektu (ten plik wdrażamy osobno, poza ZIP aktualizacji).
Procedura ręczna
- Określ numer wersji
- Utwórz folder tymczasowy:
mkdir -p temp/temp_XXX/sciezka/do/pliku - Skopiuj zmienione pliki do folderu tymczasowego
- Utwórz ZIP z zawartości folderu (nie z samego folderu!)
- Usuń folder tymczasowy
- Zaktualizuj
changelog.phpiversions.php - (Opcjonalnie) Utwórz
_sql.txti_files.txt
WAŻNE: W archiwum ZIP NIE powinno być folderu z nazwą wersji. Struktura ZIP zaczyna się bezpośrednio od katalogów projektu (admin/, autoload/, itp.).
Status bieżącej aktualizacji (ver. 0.302)
- Wersja udostępniona:
0.302(data: 2026-02-22). - Pliki publikacyjne:
updates/0.30/ver_0.302.zip
- Pliki metadanych aktualizacji:
updates/changelog.phpupdates/versions.php($current_ver = 302)
- Weryfikacja testów przed publikacją:
OK (730 tests, 2066 assertions)