diff --git a/.gitignore b/.gitignore index ec426c8..f41e2e3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,27 +1,75 @@ -*.log -.DS_Store +# ============================================================================= +# 1. LARAVEL ALAPOK & KÖRNYEZETI FÁJLOK (BIZTONSÁG) +# ============================================================================= .env .env.backup .env.production -.phpactor.json -.phpunit.result.cache +.env.* +auth.json +/storage/*.key + +# ============================================================================= +# 2. WINDOWS & IDE / FEJLESZTŐI ESZKÖZÖK (DOCKERBE NEM KELL) +# ============================================================================= +Thumbs.db +desktop.ini +.DS_Store + /.fleet /.idea /.nova -/.phpunit.cache /.vscode /.zed -/auth.json +Homestead.json +Homestead.yaml + +.phpactor.json +.phpunit.result.cache +/.phpunit.cache +/.junie + +# ============================================================================= +# 3. LOKÁLIS FÁJLRENDSZER, LOGOK ÉS CACHE (SOHASEM COMMITOLJUK) +# ============================================================================= +*.log +/storage/logs/* +!/storage/logs/.gitignore + +/storage/framework/* +!/storage/framework/.gitignore + +/storage/debugbar/* +/storage/pail +/storage/tmp/ + +/bootstrap/cache/* +!/bootstrap/cache/.gitignore + +# ============================================================================= +# 4. DEPENDENCY-K ÉS GENERÁLT ASSETEK (DOCKER / PIPELINE ÉPÍTI) +# ============================================================================= +/vendor /node_modules + /public/build /public/hot /public/storage -/storage/*.key -/storage/pail -/vendor -Homestead.json -Homestead.yaml -Thumbs.db -/storage/tmp/ -/public/images/supplierLogo/ -/public/attachments/ + +# Filament & Scribe auto-generált assetek +/public/css/filament +/public/js/filament +/public/fonts/filament +/public/vendor/scribe + +# ============================================================================= +# 5. TESZTELÉS (DUSK MARADVÁNYOK) +# ============================================================================= +/tests/Browser/screenshots/* +/tests/Browser/source/* + +# ============================================================================= +# 6. EVOLÚCIÓS MARADVÁNYOK & FELHASZNÁLÓI ADATOK (GDPR / TISZTASÁG) +# ============================================================================= +/public/images/supplierLogo/* +/public/attachments/* +/database/csv/* diff --git a/.junie/guidelines.md b/.junie/guidelines.md deleted file mode 100644 index e0cbcaa..0000000 --- a/.junie/guidelines.md +++ /dev/null @@ -1,111 +0,0 @@ -### Irányelvek és Konvenciók - -Ez a fájl tartalmazza a projekt fejlesztési irányelveit a hatékony és tiszta kód érdekében. - -#### Általános elvek -* **Tisztaság (Clean Code)**: A kódot úgy írd, hogy az emberi olvasó számára is egyértelmű legyen. Használj beszédes változó- és függvényneveket. -* **SOLID**: Kövesd az objektumorientált programozás elveit. -* **DRY (Don't Repeat Yourself)**: Kerüld a kódismétlést, használj segédfüggvényeket, Trait-eket vagy Service-eket. - -#### Technológiai keretrendszer -* **PHP**: Legalább 8.2-es verziót használunk. Kötelező a típusok (type hinting) használata mindenütt (függvény paramétereknél és visszatérési értékeknél is). -* **Laravel**: A legújabb stabil Laravel verziókkal kompatibilis kódírás (L12 supportra való felkészülés). -* **Blade**: UI fejlesztéshez Laravel Blade sablonmotort használunk. -* **Eloquence**: Az adatbázis eléréshez és kezeléshez elsődlegesen az Eloquent ORM-et használjuk. - -#### Architektúra és Struktúra -* **Controller**: A kontrollerek maradjanak vékonyak (thin controllers). Az üzleti logika kerüljön a Service-ekbe. -* **Service réteg**: Az összetett műveleteket Service osztályokban valósítsd meg (`app/Services/` alatt). Használj Dependency Injection-t a Service-ek bevezetéséhez a kontrollerekbe. -* **Route**: Használj névvel ellátott útvonalakat (named routes). -* **Requests**: Form Validation-re használd a Laravel FormRequest osztályait a kontrollerek metódusain belül. -* **DTO (Data Transfer Objects)**: Használj DTO-kat vagy Typed Array-eket nagyobb adatszerkezetek továbbításakor (pl. `Extra` library). - -##### Modellek, Auditálás és Workflow -- Minden fő modellnek a `App\Models\BaseAuditable` osztályból kell származnia. -- Ez biztosítja a `created_by`, `updated_by` és `deleted_by` mezők automatikus töltését a `ModelUserIdAppenderTrait` segítségével. -- Használjunk `SoftDeletes`-t, ahol az adatok megőrzése fontos. -- **Enums**: Amennyiben egy modell mezőjéhez meghatározott értékkészlet tartozik, kötelező PHP Enum használata és annak beállítása a `$casts` tömbben. -- **Workflow Kezelés**: Összetett, több lépésből álló folyamatok (pl. árlista feldolgozás) kezeléséhez PHP Enum-okat használunk: - - Az Enum definiálja a lépéseket, a címkéket (`label()`), a végrehajtó Job-okat (`jobClass()`) és a színeket (`color()`). - - A modell `workflow_steps` JSON mezője tárolja a folyamat állapotát, amit a modell `creating` eseményében inicializálunk az Enum `defaultSteps()` metódusával. - - A Service réteg felelős a státuszok léptetéséért a folyamat során. - -##### Hibrid Frontend Architektúra (Mix & Vite) és a "Clean Cut" elv -A projekt fokozatos modernizáció alatt áll, ezért két párhuzamos build rendszert használunk a **"Clean Cut"** (tiszta vágás) elv mentén: -- **Lényege**: A modern technológiával (Filament, Tailwind CSS, Vite) készülő modulok teljes mértékben elkülönülnek a régi, jQuery/Bootstrap alapú rendszertől. Nem ágyazzuk be őket AJAX-szal a régi keretbe, hanem saját, teljes oldalas layoutot kapnak a stílusütközések elkerülése érdekében. -- **Legacy (Laravel Mix)**: A meglévő jQuery, Bootstrap 4 és AdminLTE alapú kódokhoz. - - Forrásfájlok: `resources/js/`, `resources/sass/`, `resources/css/`. -- **Modern (Vite & Filament)**: Új funkciókhoz, Tailwind CSS-hez és Filament alapú admin felületekhez. - - Forrásfájlok: `resources/modern/js/`, `resources/modern/css/`, `resources/css/filament/`. - - Nézetek: `resources/modern/views/`, `resources/views/filament/`. - - Használat Blade-ben: `@vite(['resources/modern/css/app.css', 'resources/modern/js/app.js'])`. -- A modern nézeteket a Laravel automatikusan felismeri a `config/view.php` konfigurációja alapján. - -##### Modernizációs és Design Irányelvek (Filament & Tailwind) -- **Vizuális Konzisztencia**: Az új moduloknak (Filament) illeszkedniük kell a legacy "Pepper Grinder" színvilágához. - - Használjunk egyedi színpalettát az `AdminPanelProvider`-ben (Primary: `#b83400`, Gray: Pepper Grinder bézs/barna skála). - - A kerekítéseket és árnyékokat a `theme.css`-ben rögzített szögletesebb stílushoz kell igazítani. -- **Tailwind v4 Konfiguráció**: A Vite build folyamatban a `@tailwindcss/vite` plugint használjuk. - - Minden új Filament/Livewire forrást rögzíteni kell a `theme.css` `@source` direktívái között. -- **Navigáció Szeparáció**: - - A legacy és modern részek közötti váltáshoz sima linkeket használunk (teljes oldalújratöltés). - - A navigációs linkeknél a `data-no-ajax="true"` attribútumot kell használni, hogy a legacy JS (`app.js`) ne próbálja AJAX-szal betölteni a modern tartalmat. -- **Közös Elemek (Render Hooks)**: A megszokott elemeket (pl. `speedButtonNavBar`) Filamentben Render Hook-ok segítségével injektáljuk a fejlécbe (`TOPBAR_START`), biztosítva a funkcionális folytonosságot. -- **Filament 4 és Schemas rendszer**: A projekt egy egyedi Filament 4 alapú architektúrát és a `Filament\Schemas` rendszert használja. - - **Komponensek**: Sémák (Infolist/Form) definiálásakor elsődlegesen a `Filament\Schemas\Components` namespace alatti osztályokat (Section, Grid, Text stb.) kell használni a standard Filament komponensek helyett a kompatibilitás és a polling működése érdekében. - - **Namespace korrekciók**: Figyeljünk a v3-hoz képest megváltozott namespace-ekre, például a `ViewAction` a `Filament\Actions\ViewAction` alatt érhető el (nem a `Filament\Tables\Actions` vagy `Filament\Infolists\Actions` alatt). - - **Dinamikus frissítés (Polling)**: Az adatok automatikus frissítéséhez a `.poll('5s')` hívást a `Schemas\Components\Section` szinten kell alkalmazni a szülő konténeren, amely biztosítja a teljes nézet újrarenderelését. - -##### JavaScript Architektúra és Modulok -- A JS kód alapja egy egyedi objektumorientált rendszer. -- **Osztály-alapú felépítés**: Minden adminisztrációs felülethez (vagy összetettebb modulhoz) tartozzon egy specifikus JavaScript osztály (pl. `ProductAdmin`), amely a `resources/js/admin/` könyvtárban kap helyet. -- **DataModel használata**: Az adatok kliensoldali reprezentációjához használjunk a globális `DataModel` osztályból származtatott modelleket. -- **Globális APP objektum**: A példányosított modulokat és a globális beállításokat a `window.APP` objektumban tároljuk (pl. `APP.ProductAdmin`). Ez biztosítja a modulok közötti átjárhatóságot. - -##### Felhasználói Felület (UI) és Komponensek -- **DataTables Konvenciók**: - - Használjuk a `$.fn.dataTable.defaults`-ban definiált globális magyar nyelvű és formázási beállításokat. - - A táblázat sorvégi műveletgombjait (Szerkesztés, Törlés, Megtekintés) az `APP.datatableAddRowEditButton()`, `APP.datatableAddRowTrashButton()` stb. segédfüggvényekkel generáljuk a konzisztencia érdekében. -- **Mustache.js Sablonozás**: - - Dinamikus HTML tartalmak (pl. popupok, egyedi táblázat sorok) generálásához Mustache.js-t használunk. - - A sablonokat a Blade fájlokban a `