Commit Graph

15 Commits

Author SHA1 Message Date
E98Developer
67d2f73eee ADD EV3-465 méter ("m") mértékegység a Legkisebb eladási egységhez és a Mennyiségi egységhez
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>
2026-08-24 17:28:01 +02:00
E98Developer
e338f68ee8 ADD EV3-357 Árlista feldolgozás phase5/4 visszavonás, elakadás-észlelés, kényszerlezárás
- PricelistExecutionJob + új PricelistRevertJob: $tries=1, $timeout, failed()
  hook. A service catch ága csak PHP exceptiont fog el; worker timeout vagy
  memórialimit esetén a fájl inprogress-ben ragadna, döntési gomb nélkül.
- heartbeat backstop a kill -9 esetére, ahol a failed() sem fut: minden chunk ír
  a rekordba, így az updated_at a szívverés (isExecutionStuck). Ezzel garantált,
  hogy minden kísérlet véges időn belül terminális állapotba jut - enélkül a
  kényszerlezárás sem nyílna ki soha.
- kompenzáló visszaállítás R1-R4: árak törlése, termékek visszaállítása a
  snapshotból, létrehozott termékek kivonása (soft delete, NEM fizikai törlés,
  mert lehet rájuk hivatkozás), árlista + fájl lezárása
- konfliktuskezelés: a végrehajtás óta kézzel módosított terméket kihagyjuk és
  jelentjük, nem írjuk felül vakon
- FIX phase5/3: a snapshot csak az írás ELŐTTI updated_at-et tárolta, amihez
  képest a termék a végrehajtás után mindig eltér - a konfliktus-ellenőrzés így
  minden sort kihagyott volna. Most a saját írásunk utáni updated_at is bekerül.
- kényszerlezárás: csak legalább egy terminális hibába futott visszaállítási
  kísérlet után, flag + developer szerepkör mögött, kötelező indoklással
- döntéstámogató panel: mi történt már meg az importból, hogy a felhasználó ne
  vakon válasszon a Folytatás és a Visszavonás között

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-15 06:36:21 +02:00
E98Developer
eee27aa659 ADD EV3-357 Árlista feldolgozás phase5/2 jóváhagyás/elutasítás akció
- PricelistFile::canBeApproved() / hasExecutionStarted(): a jóváhagyás feltételei
  egy helyen, hogy a felületi gomb és a service ugyanazt ellenőrizze
- approve(): a státusz MÉG A DISPATCH ELŐTT billen át, különben a queue-latency
  alatt a gomb látszana és egy második kattintás párhuzamos importot indítana
- reject(): új 'rejected' lépésstátusz - nem 'failed', mert azt az
  updateStepStatus fail fájlstátuszra fordítaná, az elutasítás viszont closed
- a döntés (ki, mikor, milyen indokkal) a file_meta.approval-ba kerül, mert a
  BaseAuditable a nevével ellentétben nem naplóz
- Edit gomb szűkítése hasExecutionStarted()-tel három helyen, köztük az
  EditPricelistFile::afterSave()-ben, ami a teljes láncot újraindítja

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 15:00:33 +02:00
E98Developer
5bf2f83092 ADD EV3-357 Árlista feldolgozás phase5/1 PricelistExecution feature flag + migrációk
- új PricelistExecution Pennant flag (enabled + roles=[developer]) a jóváhagyás,
  végrehajtás és visszavonás rollout-kapujaként
- új execution_failed fájlstátusz: a validálásig tartó szakasz fail státuszától
  szándékosan elkülönítve, mert itt már történhettek termék- és árírások
- PricelistFileStatusEnum::color(): a badge-színek eddig két helyen, kimerítő
  match-ben voltak duplikálva, amit az új case eltört volna
- pricelist_file_lines.applied_snapshot + executed_at a chunkolt, idempotens
  végrehajtáshoz és a kompenzáló visszaállításhoz

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 14:19:28 +02:00
E98Developer
e49b7515e0 EV3-357 Árlista feltöltés és feldolgzás újra gondolása phase3 fejlec adatok cseréje 2026-07-22 12:37:24 +02:00
E98Developer
959addacc7 MOD EV3-173 Megrendelések-sztornó megrendelések 2026-05-29 07:46:54 +02:00
E98Developer
1a9fa66af5 ADD supplier portal 2026-04-26 05:37:07 +02:00
E98Developer
e31f33d9bf ADD delivery calendar part2 2026-04-20 21:32:05 +02:00
E98Developer
0581fee616 ADD work_calendar api sync and test support 2026-04-08 21:47:28 +02:00
E98Developer
a534cf074d ADD first laravel dusk test 2026-04-08 13:25:17 +02:00
E98Developer
e4c1ea326d add PricelistFileLine business logic part1 2026-03-13 08:52:25 +01:00
E98Developer
dd22d93d16 add preprocessing workflow and meta data 2026-03-08 06:46:54 +01:00
E98Developer
6c430afffe add jobs and workflow support with percentage progress 2026-03-06 17:52:09 +01:00
E98Developer
9e90feb662 fishh UI 2026-03-04 15:20:17 +01:00
E98Developer
68b7c35bef git init 2026-02-28 06:53:05 +01:00