الخطة · 2026-06-17 · للمراجعة قبل التنفيذ — بتعدّل مسار تحديث كل العملاء (حسّاس)
migrate بس مابيشغّلش seeders. تعريفات الإعدادات (setting definitions) بتتزرع عبر
SettingDefinitionSeeder وLabSettingDefinitionSeeder (مش migrations) — فالتعريفات الجديدة:
installer.seeders مفيهوش LabSettingDefinitionSeeder أصلًا.SettingsService::get() بيرجّع null لأي مفتاح ملوش definition، وشاشة الإعدادات مابتعرضوش.
| الخطوة | Install | Update |
|---|---|---|
| migrate | ✅ | ✅ |
| seed (تعريفات) | ⚠️ جزئي (ناقص LIS) | ❌ مفيش خالص |
LabSettingDefinitionSeeder لـ config('moonstack.installer.seeders') → التركيب الجديد ياخد كل تعريفات LIS.config('moonstack.updater.seeders') = seeders التعريفات الـ idempotent فقط (SettingDefinitionSeeder + LabSettingDefinitionSeeder).public/moonstack-update.php بعد الـ migrate وقبل caches: أشغّلهم best-effort / non-fatal داخل timeout 300 bash -c '…'.migrate بيشتغل دايمًا.RolePermissionSeeder مهمfirstOrCreate)، لكنه كمان بيعيد تعيين أدوار لليوزرز (بيدّي owner/employee). تشغيله في كل تحديث ممكن يغيّر أدوار مستخدمين العميل — فمستبعد من القايمة. (لو احتجنا صلاحيات جديدة، نفصل جزء الصلاحيات لوحده لاحقًا.)
updateOrCreate → بتضيف/بتحدّث بس، مابتمسحش.config/moonstack.php — installer.seeders (+LIS) + updater.seeders (جديد)public/moonstack-update.php — خطوة seed بعد migratedatabase/migrations/2026_..._moonstack_sync_reference_definitions.php — الجسرmoonstack:sync-reference يقرا القايمة ويشغّلها — مصدر واحد للحقيقة للـ updater + الـ migrationSettingDefinitionSeeder/LabSettingDefinitionSeeder مرتين متتاليتين على sqlite — تأكيد idempotency (مفيش تكرار).lis/lab-updates + سطر في الـ what's-new، وبعد الموافقة release. العملاء ياخدوا الإصلاح في أول تحديث (الجسر يلحّقهم فورًا).
knowledge-base/topics/moonstack-update.md