Files
shopPRO/docs/UPDATE_INSTRUCTIONS.md
Jacek Pyziak 1fc36e4403 ver. 0.302: REST API product variants, attributes dictionary, attribute filtering
- 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>
2026-02-22 14:42:52 +01:00

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

  1. git diff --name-status między tagami → listy dodanych/zmodyfikowanych/usuniętych plików
  2. Filtrowanie przez .updateignore (pliki deweloperskie, konfiguracyjne itp.)
  3. Kopiowanie plików do temp, tworzenie ZIP
  4. SHA256 checksum ZIP-a
  5. Generowanie ver_X.XXX_manifest.json
  6. Generowanie legacy _sql.txt i _files.txt (okres przejściowy)
  7. Aktualizacja versions.php i changelog.php
  8. Cleanup

Pliki wynikowe

  • updates/0.XX/ver_X.XXX.zip — paczka z plikami
  • updates/0.XX/ver_X.XXX_manifest.json — manifest z checksumem, listą zmian, SQL
  • updates/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 zmian
  • versions.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 .htaccess z katalogu projektu (ten plik wdrażamy osobno, poza ZIP aktualizacji).

Procedura ręczna

  1. Określ numer wersji
  2. Utwórz folder tymczasowy: mkdir -p temp/temp_XXX/sciezka/do/pliku
  3. Skopiuj zmienione pliki do folderu tymczasowego
  4. Utwórz ZIP z zawartości folderu (nie z samego folderu!)
  5. Usuń folder tymczasowy
  6. Zaktualizuj changelog.php i versions.php
  7. (Opcjonalnie) Utwórz _sql.txt i _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.php
    • updates/versions.php ($current_ver = 302)
  • Weryfikacja testów przed publikacją:
    • OK (730 tests, 2066 assertions)