Bunzl árlistájához szükséges egy eddig hiányzó mértékegység. A "Legkisebb
eladási egység" / "Mennyiségi egység" mezőt két párhuzamos árlista-import
validálja külön-külön (a régi PriceListService.php ProductUnitEnum-mal, az új
PricelistFileProcessService.php saját PricelistSellerUnitEnum-mal), mindkettő
végül ugyanabba a products.sellerUnit / products.amountUnit DB enum oszlopba
ír. A puszta enum-bővítés önmagában nem lett volna elég: a DB oszlop
korlátozta volna a végrehajtást, csak ott, a legkésőbbi ponton bukva el.
- ProductUnitEnum: új 'm' case (régi pipeline validációja + a DB oszlopokat
generáló forrás).
- PricelistSellerUnitEnum: új 'm' case (új pipeline validációja).
- Migráció: products.sellerUnit/amountUnit és order_archives_items ugyanezen
oszlopainak DB enum bővítése 'm'-mel, ProductUnitEnum::getKeys()-ből
generálva, hogy a PHP enum és a DB oszlop ne csúszhasson el egymástól. A
down() az 'm' értékű sorokat NULL-ra állítja visszagörgetéskor, különben a
szűkített enum miatt az ALTER hibára futna. A "Mértékegység" (productUnit)
oszlopot szándékosan nem bővítettem, a jegy csak a másik két mezőt említi.
- schema:dump frissítve.
5 új teszt mindkét pipeline validációjára és a DB enum oszlopra.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
A migrate:fresh eddig 103 migrációt futtatott le minden teszt-futásnál. A dump
egyetlen SQL fájlként tölti be ugyanazt a 48 táblát: migrate:fresh 21,09 ->
12,07 mp, egy teszt --filter-rel 27,80 -> 20,88 mp.
A dumpot a Laravel csak akkor tölti be, ha a migrations tábla ÜRES
(MigrateCommand::prepareDatabase), tehát az e2e/d2d környezetek - ahol már
vannak lefutott migrációk - változatlanul inkrementálisan migrálnak. Ezért
--prune NÉLKÜL készült: a 103 migrációs fájl a helyén marad.
Karbantartás: minden új migráció után újra kell generálni (php artisan
schema:dump). Ha elmarad, az nem törik el semmit, csak a dump utáni
migrációkat egyenként futtatja le.
A betöltéshez a mysql kliens kell a PATH-on
(C:\www\envkit\services\mysql\11.8.2\bin).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>