- ú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>
65 lines
3.0 KiB
PHP
65 lines
3.0 KiB
PHP
<?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'],
|
|
],
|
|
);
|
|
|
|
FeatureFlag::updateOrCreate(
|
|
['name' => 'SupplierCustomerCode'],
|
|
[
|
|
'label' => 'Beszállítói vevőkód (profitcenterenként)',
|
|
'description' => 'A profitcenterenkénti beszállítói vevőkód kezelését szabályozza a legacy és modern felületen a fejlesztés/rollout alatt. Átmeneti kapcsoló, a funkció véglegesítése után eltávolítható.',
|
|
// enabled=true + roles=['developer'] a FeatureFlagAdmin mintáját követi: az "enabled"
|
|
// egy globális kapcsoló (false esetén roles-tól függetlenül SENKI nem látja), tehát a
|
|
// "csak developer lássa rollout alatt" állapotot enabled=true + roles szűkítéssel kell
|
|
// kifejezni, nem enabled=false-fal (az utóbbi a developer usereket is kizárja).
|
|
'enabled' => true,
|
|
'stages' => null,
|
|
'roles' => ['developer'],
|
|
],
|
|
);
|
|
|
|
FeatureFlag::updateOrCreate(
|
|
['name' => 'PricelistExecution'],
|
|
[
|
|
'label' => 'Árlista jóváhagyás és végrehajtás',
|
|
'description' => 'Az árlista feldolgozó Jóváhagyás/Elutasítás, Végrehajtás folytatása és Visszavonás akcióit, valamint a tényleges árlista-importot szabályozza a rollout alatt. Átmeneti kapcsoló, a funkció élesítése után eltávolítható - a kényszerlezárás jogosultsági korlátozása viszont a flag megszűnése után is maradjon.',
|
|
// enabled=true + roles=['developer']: a developer felhasználók automatikusan
|
|
// megkapják, rajtuk kívül senki. Lásd a fenti magyarázatot arról, miért nem
|
|
// enabled=false-szal fejezzük ki a "csak developer lássa" állapotot.
|
|
'enabled' => true,
|
|
'stages' => null,
|
|
'roles' => ['developer'],
|
|
],
|
|
);
|
|
}
|
|
}
|