الانتقال إلى المحتوى الرئيسي
L
Leopardoمنصة الموارد البشرية
المنتج

سجل الاصدارات

اهم تحديثات المنصة (مختارات تحريرية).

الإصدار العام الأول — الأمان وCI والجودة

v4.24.0·
  • تقوية أمنية شاملة: تشفير SSO SAML/OIDC عند التخزين، تقييد الرفع، كوكي جلسة httpOnly، إزالة XSS من الكشك، JWT للجوال خارج Hive.
  • تغطية الواجهة الخلفية 71% مُقاسة في CI (بوابة لكل وحدة، Payroll ≥ 80% مستهدف)؛ 1,917 اختباراً و424 نقطة API موثقة.
  • توحيد الترقيم وعقود الاستجابة (Growth، Cameras، DeviceToken، CabinetShare).
  • CI: تثبيت SHA لـ69 إجراءً، dependency-review حاجز، بوابة مكافحة SHA القديم، فحص أسرار A-2 منفذ فعلياً.

إصلاحات الإنتاج — cold start وE2E والرواتب

v4.23.5·
  • إحماء مضاد للـ cold start من Render لاختبارات E2E التجريبية (مهلة Playwright 15 ثانية).
  • مرونة Vercel: ignoreCommand مع احتياطي SHA السابق.
  • إصلاحات الرواتب: رقم الفاتورة يُحفظ فعلياً، تشغيل عمال/مجدول Render، فهرس FK لـ salary_advances.

إصلاح تجميع Dart في تطبيقات الجوال الثلاثة + تقوية CI

v4.23.4·
  • كانت main.dart في leopardo_employee وleopardo_manager وleopardo_hr تعلن main() بدون async بينما ينتظر الجسم SentryFlutter.init — تمت المواءمة على Future<void> main() async (كان يعطل وظيفة Flutter على main).
  • CI/CD: تقوية سلسلة التوريد (تثبيت SHA لإجراءات الطرف الثالث) وإزالة الازدواج في إعداد PHP/Flutter عبر إجراءات مركبة قابلة لإعادة الاستخدام (~360 سطراً أقل).

حل 34 تنبيهاً من Dependabot (11 حرجة، 16 متوسطة، 7 منخفضة)

v4.23.3·
  • api (composer): symfony/yaml 8.0.8 ← 8.1.1 (ReDoS في Parser::cleanup)؛ إصلاح form-data (حقن CRLF).
  • الواجهة والإدارة: npm audit fix (form-data, ws, js-yaml)، إصلاح postcss، vite 6.4.3 (SSRF لخادم التطوير، اجتياز المسارات).
  • web-offline: Next.js 16.2.10 + ESLint 9 (SSRF، XSS، تسميم الكاش)؛ تدقيق npm/composer بصفر ثغرة متبقية.

أمان CI: إصلاح حقن workflow_run، صلاحيات صريحة

v4.23.2·
  • deploy-main.yml: لم يعد head_branch يُدرج في كتلة run: shell (متغير بيئة) + التحقق من head_repository == github.repository.
  • صلاحيات GITHUB_TOKEN صريحة (contents: read) على سير العمل الناقصة؛ phpstan-modules.neon يحمّل Larastan الآن (حل 36 خطأ undefined method).

وحدة التسويق (المرحلة 1): المخطط الأساسي والنماذج

v4.23.1·
  • وحدة DDD جديدة api/app/Modules/Marketing/ مع ترحيلات tenant social_accounts وsocial_posts.
  • لا تُخزن رموز OAuth خام (مرجع مشفر لملف المجمّع)؛ نماذج Eloquent بنطاق tenant، مع اختبارات Feature.

قبول دور مدير التسويق من API (وحدة التسويق — المرحلة 0)

v4.23.0·
  • كان StoreEmployeeRequest/UpdateEmployeeRequest يتحقق من manager_role دون قيمة marketing — أُضيفت إلى القائمة المسموحة (POST/PATCH /employees).

بريد onboarding المتتابع: 3 رسائل رعاية تلقائية

v4.22.8·
  • يرسل SendTrialDripEmailJob رسائل في اليوم +1 و+3 و+7 بعد توفير النسخة التجريبية (إعادة محاولة محدودة، التحقق من حالة التجربة).
  • نموذج OnboardingProgress جديد بنطاق company_id + employee_id؛ إعادة هيكلة معالج onboarding للجوال (شريط تقدم، حالات مطلوبة/خطأ).

إصلاح ParseError للرواتب + خصم الاستراحة من ساعات العمل

v4.22.7·
  • إصلاح ParseError في 7 ملفات CountryRules (فتح CI الرئيسي).
  • تُخصم دقائق الاستراحة (break_minutes) الآن من ساعات العمل (AttendanceLog).

إصلاح PHPStan Modules Architecture (نطاق Eloquent لـ Absence)

v4.22.6·
  • كان AbsenceService::request() وLeavePolicyController::balances() يصلان إلى نطاقات Eloquent غير معروفة — تصحيح الأنواع، بوابة CI خضراء.

عزل الوظائف في قائمة الانتظار عبر المستأجرين

v4.22.5·
  • يضبط TenantMiddleware الآن search_path الخاص بـ PostgreSQL وربط current_company بشكل صحيح للوظائف.
  • واجهة جديدة App\Contracts\Queue\TenantScopedJob: أي وظيفة تتطلب سياق tenant تعلن tenantCompanyId().

CI: حل 136 فشلاً متبقياً (company_id ناقص)

v4.22.4·
  • نفس فئة خطأ 4.22.3 على AbsenceType: company_id (NOT NULL) غائب عن $fillable/casts للنموذج الأساسي — تم الإصلاح، 899 اختباراً أخضر.

CI: حل 160 فشلاً متبقياً (النماذج الأساسية)

v4.22.3·
  • النموذج الأساسي Absence (عبر shim App\Models\Absence) لم يعلن company_id (NOT NULL) في $fillable ولا التحويل المناسب — تمت المواءمة، 899 اختباراً أخضر.

CI: إصلاح shims الخاص بـ app/Models (class_alias + التوليد)

v4.22.2·
  • 75 ملف shim app/Models/*.php وُلدت في v4.22.0: class_alias كان يحل اسماً خاطئاً للفئة — أُعيد توليدها، Backend + Coverage عادا إلى الأخضر.

تنظيف الوثائق — mojibake والاتساق

v4.22.1·
  • تصحيح الترميزات المكسورة (mojibake) في مخططات UML ووثائق أخرى — لا تغيير وظيفي.

فتح CI: ترحيل بفواصل عليا مهرَّبة

v4.21.1·
  • فواصل عليا مهرَّبة بأسلوب PHP في تعليق SQL لترحيل employee_attendance_preferences — عاد CI الذي كان يعطل كل الدمج إلى الأخضر.

تنظيف معماري المرحلة 2 — النماذج والخدمات وFormRequests

v4.22.0·
  • نقل 17 نموذجاً يتيماً إلى Core/Tenant/Domain/Models وCore/Auth/Domain/Models؛ إعادة تنظيم الخدمات وFormRequests حسب الوحدة.

تنظيف معماري للـ API — إزالة النسخ القديمة

v4.21.0·
  • حذف 90 وحدة تحكم مكررة من app/Http/Controllers/Api/V1 (نُقلت إلى app/Modules/*/Interfaces/Api/V1).

EdgeSync: نقل EdgeController إلى وحدة DDD

v4.17.4·
  • نقل EdgeController وEdgeDownloadController من app/Http/Controllers/Api/V1 إلى App\Modules\EdgeSync\Interfaces\Api\V1.
  • رفع PHPStan للوحدات من المستوى 3 إلى 5 مع استثناءات مستهدفة للوحدات قيد الترحيل.

السجل الكامل في ملف CHANGELOG.md في جذر المستودع.