ADD EV3-431 Profitcenter - betűkód phase3 addd feature flag seeder
This commit is contained in:
parent
259df71c7b
commit
a6b11d2178
10
AGENTS.md
10
AGENTS.md
@ -22,6 +22,16 @@ ### 3. Átállás és Modernizáció
|
|||||||
- **Auditálás**: Használd a `BaseAuditable` osztályt minden új modellnél a konzisztens követhetőség érdekében.
|
- **Auditálás**: Használd a `BaseAuditable` osztályt minden új modellnél a konzisztens követhetőség érdekében.
|
||||||
- **Refaktorálás**: Ha egy legacy kontroller/nézet jelentős átalakítást igényel, javasold annak áthelyezését egy Filament Resource-ba.
|
- **Refaktorálás**: Ha egy legacy kontroller/nézet jelentős átalakítást igényel, javasold annak áthelyezését egy Filament Resource-ba.
|
||||||
|
|
||||||
|
# Feature flag rendszer (Laravel Pennant)
|
||||||
|
|
||||||
|
Az alkalmazásban deploy nélkül, admin felületről (`/admin/feature-flags`) ki/bekapcsolható funkciókhoz a `laravel/pennant` csomagra épülő, saját `feature_flags`/`feature_flag_overrides` táblákkal kiegészített rendszer van. Új feature flag bevezetésekor vagy a rendszer módosításakor:
|
||||||
|
|
||||||
|
- **NE** írj kézzel új `Feature::define()` hívást — a `FeatureFlagRegistrar::registerAll()` (hívva: `AppServiceProvider::boot()`) automatikusan regisztrálja az admin felületen létrehozott flageket.
|
||||||
|
- **NE** használd a Pennant saját tárolóját (`Feature::for($user)->activate()`) tartós, admin felületről törölhetetlen felhasználói döntésekhez — a `Feature::purge()` egy adott flag nevére **minden** scope-ot (minden felhasználó feloldását) töröl. Az explicit egyéni felülbírálásokat ezért a saját `feature_flag_overrides` tábla (`FeatureFlagOverride` modell) tárolja, amit a resolver néz meg elsőként, mielőtt a szabály-alapú (enabled/stage/role) logikára térne.
|
||||||
|
- `FeatureFlagOverride` (vagy bármi, ami Pennant-cache-invalidáló Observerrel rendelkezik) módosítása mindig **model-instance-on keresztül** történjen (`$model->save()`/`$model->delete()`), soha ne query builder `->update()`/`->delete()`-tel — csak az előbbi váltja ki az Eloquent modell-eseményeket, amikre az Observerek épülnek.
|
||||||
|
- A `FeatureFlagAdmin` nevű flag saját magát a feature flag admin felületet védi (`FeatureFlagPolicy`/`FeatureFlagOverridePolicy` → `Feature::for($user)->active('FeatureFlagAdmin')`) — jelenleg kizárólag `developer` szerepkör éri el, minden stage-en.
|
||||||
|
- Teljes technikai leírás (architektúra, talált hibák, tesztelési minták): `storage/app/private/docs/feature-flag-rendszer.md`.
|
||||||
|
|
||||||
# Projekt-specifikus szabályok
|
# Projekt-specifikus szabályok
|
||||||
|
|
||||||
- **API válaszok**: Használd a `flugger/laravel-responder` csomagot (`responder()` helper) minden API válaszhoz. Kövesd az `OrderController.php`-ban látható mintát.
|
- **API válaszok**: Használd a `flugger/laravel-responder` csomagot (`responder()` helper) minden API válaszhoz. Kövesd az `OrderController.php`-ban látható mintát.
|
||||||
|
|||||||
35
database/seeders/FeatureFlagSeeder.php
Normal file
35
database/seeders/FeatureFlagSeeder.php
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Database\Seeders;
|
||||||
|
|
||||||
|
use App\Models\FeatureFlag;
|
||||||
|
use App\Models\Role;
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
|
||||||
|
class FeatureFlagSeeder extends Seeder
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* A "developer" role és a "FeatureFlagAdmin" flag nélkül a feature flag
|
||||||
|
* admin felület (/admin/feature-flags) senki számára nem elérhető - a
|
||||||
|
* FeatureFlagPolicy/FeatureFlagOverridePolicy ezt a flaget nézi, egy
|
||||||
|
* ismeretlen (még nem seedelt) flag pedig mindenkinek inaktívnak számít.
|
||||||
|
*/
|
||||||
|
public function run(): void
|
||||||
|
{
|
||||||
|
Role::firstOrCreate(
|
||||||
|
['name' => 'developer'],
|
||||||
|
['display_name' => 'Developer', 'description' => 'Fejlesztői jogosultság'],
|
||||||
|
);
|
||||||
|
|
||||||
|
FeatureFlag::updateOrCreate(
|
||||||
|
['name' => 'FeatureFlagAdmin'],
|
||||||
|
[
|
||||||
|
'label' => 'Feature flag admin felület',
|
||||||
|
'description' => 'A feature flag admin felület (/admin/feature-flags) elérését szabályozza. Enélkül senki nem éri el a felületet.',
|
||||||
|
'enabled' => true,
|
||||||
|
'stages' => null,
|
||||||
|
'roles' => ['developer'],
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user